本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为受限环境配置安全组
默认情况下, AWS ParallelCluster 创建和配置允许集群节点之间的所有流量的安全组。在高度受限的环境中,您可能需要将网络访问限制为仅限集群操作所需的端口。本节介绍如何为您的 AWS ParallelCluster 部署配置具有受限访问权限的自定义安全组。
安全组概述
AWS ParallelCluster 使用安全组控制头节点、计算节点和登录节点(如果已配置)之间的网络流量。默认情况下,在 AWS ParallelCluster 创建集群时,它会创建允许集群内节点之间的所有流量的安全组。在安全要求严格的环境中,您可以提供自定义安全组,将流量限制为仅限必要的端口。
可以在集群配置的以下部分中配置安全组:
-
HeadNode/Networking-控制对头节点的访问和访问
-
Scheduling/SlurmQueues/Networking-控制对计算节点的访问和访问权限
-
LoginNodes-控制登录节点的访问和访问权限(如果已配置)
对于这些章节中的每一个部分,您可以指定:
-
SecurityGroups
-替换 AWS ParallelCluster 将创建的默认安全组 -
AdditionalSecurityGroups
-除了由创建的默认安全组外,还添加了安全组 AWS ParallelCluster
集群操作所需的端口
配置自定义安全组时,必须确保在相应节点之间打开以下端口:
端口 | 协议 | Direction | 用途 |
---|---|---|---|
22 | TCP | 入站 | 通过 SSH 访问头节点(来自允许的 IP 范围) |
6817-6819 | TCP | 入站 | Slurm 控制器端口(来自计算和登录节点) |
6817-6819 | TCP | 出站 | Slurm 控制器端口(用于计算和登录节点) |
8443 | TCP | 入站 | NICE DCV(如果启用,则来自允许的 IP 范围) |
111、2049 | TCP/UDP | 入站 | NFS(如果使用 NFS 作为共享存储,则来自计算和登录节点) |
443 | TCP | 出站 | 通过 HTTPS 访问 AWS 服务(如果不使用 VPC 终端节点) |
端口 | 协议 | Direction | 用途 |
---|---|---|---|
22 | TCP | 入站 | SSH 访问(从头节点和登录节点) |
6818 | TCP | 入站 | Slurm 守护程序端口(来自头节点) |
6817-6819 | TCP | 出站 | Slurm 控制器端口(到头节点) |
111、2049 | TCP/UDP | 出站 | NFS(如果使用 NFS 作为共享存储,则用于头节点) |
443 | TCP | 出站 | 通过 HTTPS 访问 AWS 服务(如果不使用 VPC 终端节点) |
如果您使用的是 EFA(弹性结构适配器),则还必须允许启用 EFA 的计算节点之间的所有流量:
-
使用 EFA 的计算节点之间的所有 TCP 和 UDP 流量
-
使用 EFA 的计算节点之间的 EFA 设备上的所有流量
注意
如果您使用共享存储系统( FSx 例如 Lustre、Amazon EFS 或其他存储解决方案),则还需要确保为这些服务开放相应的端口。
创建自定义安全组
要为您的 AWS ParallelCluster 部署创建自定义安全组,请执行以下步骤:
-
使用 AWS 管理控制台、 AWS CLI 或,为头节点、计算节点和登录节点(如果适用)创建安全组 AWS CloudFormation。
-
按照上一节所述,将安全组规则配置为仅允许必要的流量。
-
在集群配置文件中引用这些安全组。
以下是如何使用 AWS 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
, AWS ParallelCluster 将仅使用您指定的安全组,取代默认安全组。使用时AdditionalSecurityGroups
, AWS ParallelCluster 将同时使用它创建的默认安全组和您指定的其他安全组。
警告
如果您为计算实例启用 Ela stic Fabric Adapter (EFA),请确保您的启用 EFA 的实例是允许所有入站和出站流量进入自身的安全组的成员。这是 EFA 正常运行所必需的。
在受限环境中使用 VPC 终端节点
在高度受限的环境中,您可能需要 AWS ParallelCluster 在没有互联网访问权限的子网中进行部署。在这种情况下,您需要配置 VPC 终端节点以允许集群与 AWS 服务通信。有关详细说明,请参阅AWS 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
安全组配置最佳实践
AWS ParallelCluster 在受限环境中为其配置安全组时,请考虑以下最佳实践:
-
最低权限原则:仅打开集群操作所需的端口。
-
使用安全组引用:如果可能,请使用安全组引用(允许来自其他安全组的流量)而不是 CIDR 块来限制集群组件之间的流量。
-
限制 SSH 访问:使用 HeadNode/Ssh/AllowedIps配置将对头节点的 SSH 访问限制为仅需要它的 IP 范围。
-
限制 DCV 访问:如果使用 NICE DCV,请使用 HeadNodeDcv//AllowedIps配置将访问限制为仅需要访问的 IP 范围。
-
彻底测试:配置自定义安全组后,彻底测试所有集群功能,确保所有必需的通信路径均正常运行。
-
记录您的配置:保留安全组配置的文档,包括哪些端口已打开以及为什么需要这些端口。
对安全组问题进行故障排除
如果您在配置自定义安全组后遇到问题,请考虑以下故障排除步骤:
-
检查集群日志:在 “日志” 中查看集群 CloudWatch 日志中是否存在任何连接错误。
-
验证安全组规则:确保在相应节点之间打开所有必需的端口。
-
测试连接:使用
telnet
或之类的工具nc
来测试特定端口上节点之间的连通性。 -
临时扩展规则:如果您在确定需要哪些端口时遇到问题,请暂时允许集群节点之间的所有流量,然后在确定所需端口时逐渐对其进行限制。
-
检查 VPC 终端节点配置:如果您使用的是 VPC 终端节点,请确保它们配置正确,并且安全组允许进出它们的流量。
如果您继续遇到问题,则可以通过从集群配置文件中删除SecurityGroups
配置来恢复使用创建的默认安全组。 AWS ParallelCluster