View a markdown version of this page

为受限环境配置安全组 - Amazon ParallelCluster
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为受限环境配置安全组

默认情况下, Amazon ParallelCluster 创建和配置允许集群节点之间的所有流量的安全组。在高度受限的环境中,您可能需要将网络访问限制为仅限集群操作所需的端口。本节介绍如何为您的 Amazon ParallelCluster 部署配置具有受限访问权限的自定义安全组。

安全组概述

Amazon ParallelCluster 使用安全组控制头节点、计算节点和登录节点(如果已配置)之间的网络流量。默认情况下,在 Amazon ParallelCluster 创建集群时,它会创建允许集群内节点之间的所有流量的安全组。在安全要求严格的环境中,您可以提供自定义安全组,将流量限制在必要的端口上。

可以在集群配置的以下部分中配置安全组:

对于每个部分,您可以指定:

  • SecurityGroups-替换 Amazon ParallelCluster 将创建的默认安全组

  • AdditionalSecurityGroups-除了由创建的默认安全组外,还添加了安全组 Amazon ParallelCluster

集群操作所需的端口

配置自定义安全组时,必须确保在相应节点之间打开以下端口:

头节点所需的端口
端口: 协议 Direction 用途
22 TCP 入站 通过 SSH 访问头节点(来自允许的 IP 范围)
6817-6819 TCP 入站 Slurm 控制器端口(来自计算和登录节点)
6817-6819 TCP 出站 Slurm 控制器端口(用于计算和登录节点)
8443 TCP 入站 Amazon DCV(如果启用,则来自允许的 IP 范围)
111、2049 TCP/UDP 入站 NFS(如果使用 NFS 作为共享存储,则来自计算和登录节点)
443 TCP 出站 通过 HTTPS 访问 Amazon 服务(如果不使用 VPC 终端节点)
计算节点所需的端口
端口: 协议 Direction 用途
22 TCP 入站 SSH 访问(从头节点和登录节点)
6818 TCP 入站 Slurm 守护程序端口(来自头节点)
6817-6819 TCP 出站 Slurm 控制器端口(到头节点)
111、2049 TCP/UDP 出站 NFS(如果使用 NFS 作为共享存储,则用于头节点)
443 TCP 出站 通过 HTTPS 访问 Amazon 服务(如果不使用 VPC 终端节点)

如果您使用的是 EFA(弹性结构适配器),则还必须允许启用 EFA 的计算节点之间的所有流量:

  • 使用 EFA 的计算节点之间的所有 TCP 和 UDP 流量

  • 使用 EFA 的计算节点之间的 EFA 设备上的所有流量

注意

如果您使用的是共享存储系统,例如 FSx for Lustre、Amazon EFS 或其他存储解决方案,则还需要确保为这些服务打开相应的端口。

创建自定义安全组

要为您的 Amazon ParallelCluster 部署创建自定义安全组,请执行以下步骤:

  1. 使用 Amazon 管理控制台、 Amazon CLI 或,为头节点、计算节点和登录节点(如果适用)创建安全组 Amazon CloudFormation。

  2. 按照上一节所述,将安全组规则配置为仅允许必要的流量。

  3. 在集群配置文件中引用这些安全组。

以下是如何使用 Amazon CLI 创建安全组的示例:

# Create security group for head node aws ec2 create-security-group \ --group-name pcluster-head-node-sg \ --description "Security group for ParallelCluster head node" \ --vpc-id vpc-12345678 # Create security group for compute nodes aws ec2 create-security-group \ --group-name pcluster-compute-node-sg \ --description "Security group for ParallelCluster compute nodes" \ --vpc-id vpc-12345678 # Add rules to allow necessary traffic between head and compute nodes # (Add specific rules based on the required ports listed above)

在集群配置中配置安全组

创建自定义安全组后,可以在集群配置文件中引用它们:

# Example cluster configuration with custom security groups HeadNode: ... Networking: SubnetId: subnet-12345678 SecurityGroups: - sg-headnode12345 # Custom security group for head node # Or use AdditionalSecurityGroups if you want to keep the default security groups # AdditionalSecurityGroups: # - sg-additional12345 ... Scheduling: Scheduler: slurm SlurmQueues: - Name: queue1 ... Networking: SubnetIds: - subnet-12345678 SecurityGroups: - sg-computenode12345 # Custom security group for compute nodes # Or use AdditionalSecurityGroups if you want to keep the default security groups # AdditionalSecurityGroups: # - sg-additional12345 ... # If using login nodes LoginNodes: Pools: - Name: login-pool ... Networking: SubnetIds: - subnet-12345678 SecurityGroups: - sg-loginnode12345 # Custom security group for login nodes # Or use AdditionalSecurityGroups if you want to keep the default security groups # AdditionalSecurityGroups: # - sg-additional12345 ...

使用时SecurityGroups, Amazon ParallelCluster 将仅使用您指定的安全组,取代默认安全组。使用时AdditionalSecurityGroups, Amazon ParallelCluster 将同时使用它创建的默认安全组和您指定的其他安全组。

警告

如果您为计算实例启用 Ela stic Fabric Adapter (EFA),请确保 EFA-enabled 您的实例是允许所有入站和出站流量进入自身的安全组的成员。这是 EFA 正常运行所必需的。

在受限环境中使用 VPC 终端节点

在高度受限的环境中,您可能需要 Amazon ParallelCluster 在没有互联网访问权限的子网中进行部署。在这种情况下,您需要配置 VPC 终端节点以允许集群与 Amazon 服务通信。有关详细说明,请参阅Amazon ParallelCluster 在无法访问互联网的单个子网中

使用 VPC 终端节点时,请确保您的安全组允许进出 VPC 终端节点的流量。为此,您可以将与 VPC 终端节点关联的安全组添加到头节点和计算节点的AdditionalSecurityGroups配置中。

HeadNode: ... Networking: SubnetId: subnet-1234567890abcdef0 AdditionalSecurityGroups: - sg-abcdef01234567890 # Security group that enables communication with VPC endpoints ... Scheduling: Scheduler: slurm SlurmQueues: - ... Networking: SubnetIds: - subnet-1234567890abcdef0 AdditionalSecurityGroups: - sg-1abcdef01234567890 # Security group that enables communication with VPC endpoints

安全组配置最佳实践

Amazon ParallelCluster 在受限环境中为其配置安全组时,请考虑以下最佳实践:

  • 最低权限原则:仅打开集群操作所需的端口。

  • 使用安全组引用:如果可能,请使用安全组引用(允许来自其他安全组的流量)而不是 CIDR 块来限制集群组件之间的流量。

  • 限制 SSH 访问:使用 HeadNode/Ssh/AllowedIps配置将对头节点的 SSH 访问限制为仅需要它的 IP 范围。

  • 限制 DCV 访问:如果使用 Amazon DCV,请使用 HeadNode/Dcv/AllowedIps配置将访问限制为仅需要访问的 IP 范围。

  • 彻底测试:配置自定义安全组后,彻底测试所有集群功能,确保所有必需的通信路径均正常运行。

  • 记录您的配置:保留安全组配置的文档,包括哪些端口已打开以及为什么需要这些端口。

对安全组问题进行故障排除

如果您在配置自定义安全组后遇到问题,请考虑以下故障排除步骤:

  • 检查集群日志:在 “日志” 中查看集群 CloudWatch 日志中是否存在任何连接错误。

  • 验证安全组规则:确保在相应节点之间打开所有必需的端口。

  • 测试连接:使用telnet或之类的工具nc来测试特定端口上节点之间的连通性。

  • 临时扩展规则:如果您在确定需要哪些端口时遇到问题,请暂时允许集群节点之间的所有流量,然后在确定所需端口时逐渐对其进行限制。

  • 检查 VPC 终端节点配置:如果您使用的是 VPC 终端节点,请确保它们配置正确,并且安全组允许进出它们的流量。

如果您继续遇到问题,则可以通过从集群配置文件中删除SecurityGroups配置来恢复使用创建的默认安全组。 Amazon ParallelCluster