本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为受限环境配置安全组
默认情况下, Amazon ParallelCluster 创建和配置允许集群节点之间的所有流量的安全组。在高度受限的环境中,您可能需要将网络访问限制为仅限集群操作所需的端口。本节介绍如何为您的 Amazon ParallelCluster 部署配置具有受限访问权限的自定义安全组。
安全组概述
Amazon ParallelCluster 使用安全组控制头节点、计算节点和登录节点(如果已配置)之间的网络流量。默认情况下,在 Amazon ParallelCluster 创建集群时,它会创建允许集群内节点之间的所有流量的安全组。在安全要求严格的环境中,您可以提供自定义安全组,将流量限制在必要的端口上。
可以在集群配置的以下部分中配置安全组:
-
HeadNode/Networking-控制对头节点的访问和访问
-
Scheduling/SlurmQueues/Networking-控制对计算节点的访问和访问权限
-
LoginNodes-控制登录节点的访问和访问权限(如果已配置)
对于每个部分,您可以指定:
-
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 部署创建自定义安全组,请执行以下步骤:
-
使用 Amazon 管理控制台、 Amazon CLI 或,为头节点、计算节点和登录节点(如果适用)创建安全组 Amazon CloudFormation。
-
按照上一节所述,将安全组规则配置为仅允许必要的流量。
-
在集群配置文件中引用这些安全组。
以下是如何使用 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