本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
网络配置
AWS ParallelCluster使用Amazon Virtual Private Cloud (VPC) 进行联网服务 VPC 提供了一个灵活且可配置的网络平台,您可以在其中部署集群。
VPC 必须有DNS Resolution = yes
、DNS Hostnames = yes
和 DHCP 选项以及该区域的正确域名。默认 DHCP 选项集已经指定了所需AmazonProvided的 DNS。如果指定多个域名服务器,请参阅 Amazon VPC 用户指南中的 DHCP 选项集。
AWS ParallelCluster支持以下高级配置:
-
头节点和计算节点均为一个子网。
-
两个子网,头节点位于一个公有子网中,计算节点位于私有子网中。子网可以是新子网,也可以是现有子网。
所有这些配置都可以在有或没有公有 IP 寻址的情况下运行。 AWS ParallelCluster也可以部署为使用 HTTP 代理AWS处理所有请求。这些配置的组合会产生许多部署方案。例如,您可以配置一个公有子网,所有子网均可通过 Internet 进行访问。或者,您可以使用AWS Direct Connect HTTP 代理为所有流量配置完全私有网络。
从AWS ParallelCluster 3.0.0 开始,可以为每个队列配置不同的SecurityGroups
PlacementGroup
设置。AdditionalSecurityGroups
有关更多信息,请参见 HeadNode/Networking和 SlurmQueues/Networking和 AwsBatchQueues/Networking。
有关某些网络场景的插图,请参阅以下架构图。
主题
AWS ParallelCluster 位于单个公有子网中
此架构的配置需要以下设置:
# Note that all values are only provided as examples HeadNode: ... Networking: SubnetId: subnet-12345678 # subnet with internet gateway #ElasticIp: true | false | eip-12345678 Scheduling: Scheduler: slurm SlurmQueues: - ... Networking: SubnetIds: - subnet-12345678 # subnet with internet gateway #AssignPublicIp: true
在此配置中,必须为集群的所有实例分配公有 IP 才能访问互联网。为此,请执行以下操作:
-
为//中使用的子网开启 “启用自动分配公有 IPv4 地址” 设置,SubnetId或者在 HeadNode/Networking/中分配弹性 IP,确保为头节点分配公有 IP 地址ElasticIp。HeadNodeNetworking
-
确保为计算节点分配公有 IP 地址,方法是为 Scheduling//中使用的子网启用 “启用自动分配公有 IPv4 地址” 设置,SubnetIds或者在 SlurmQueuesNetworking/SchedulingSlurmQueues/中设置AssignPublicIp:true Networking。
-
如果您为p4d头节点定义了实例类型或其他具有多个网络接口或网络接口卡的实例类型,则必须将 HeadNode/Networking/设置为ElasticIp
true
才能提供公共访问权限。 AWS公有 IP 只能分配给使用单个网络接口启动的实例。在这种情况下,我们建议您使用 NAT 网关提供对集群计算节点的公共访问权限。有关 IP 地址的更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的分配公有 IPv4 地址。 -
您无法为计算节点定义p4d或hp6id实例类型或其他具有多个网络接口或网络接口卡的实例类型,因为AWS公有 IP 只能分配给使用单个网络接口启动的实例。有关 IP 地址的更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的分配公有 IPv4 地址。
有关更多信息,请参阅 Amazon VPC 用户指南中的启用互联网。
使用两个子网的 AWS ParallelCluster
为计算实例使用现有私有子网的配置需要以下设置:
# Note that all values are only provided as examples HeadNode: ... Networking: SubnetId: subnet-12345678 # subnet with internet gateway #ElasticIp: true | false | eip-12345678 Scheduling: Scheduler: slurm SlurmQueues: - ... Networking: SubnetIds: - subnet-23456789 # subnet with NAT gateway #AssignPublicIp: false
在此配置中,只需要为群集的头节点分配公有 IP。您可以通过为 HeadNode//中使用的子网启用 “启用自动分配公有 IPv4 地址” 设置SubnetId或在/Networking/中HeadNode分配弹性 IP 来实现此目的ElasticIp。Networking
如果您为头节点定义了 p4d 实例类型或其他具有多个网络接口或网络接口卡的实例类型,则必须将 HeadNode/Networking/设置为ElasticIptrue
才能提供公共访问权限。 AWS公有 IP 只能分配给使用单个网络接口启动的实例。有关 IP 地址的更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的分配公有 IPv4 地址。
此配置要求在用于队列的子网中使用 NAT 网关或内部代理,以提供对计算实例的互联网访问权限。
使用 AWS Direct Connect 连接的单个私有子网中的 AWS ParallelCluster
此架构的配置需要以下设置:
# Note that all values are only provided as examples HeadNode: ... Networking: SubnetId: subnet-34567890 # subnet with proxy Proxy: HttpProxyAddress: http://proxy-address:port Ssh: KeyName: ec2-key-name Scheduling: Scheduler: slurm SlurmQueues: - ... Networking: SubnetIds: - subnet-34567890 # subnet with proxy AssignPublicIp: false Proxy: HttpProxyAddress: http://proxy-address:port
当 SchedulingSlurmQueues/Networking/设置AssignPublicIp为时false
,必须正确设置子网才能使用代理传输所有流量。头节点和计算节点都需要 Web 访问权限。
AWS ParallelCluster使用AWS Batch调度程序
当您用awsbatch
作调度器类型时,AWS ParallelCluster会创建AWS Batch托管计算环境。AWS Batch环境管理亚马逊Elastic Container Service (Amazon ECS) 容器实例。这些实例在 AwsBatchQueues/Networking/SubnetIds参数中配置的子网中启动。AWS Batch要访问互联网,Amazon ECS 容器实例需要外部网络访问权限以便与 Amazon ECS 服务终端节点通信。这会转换为以下情形:
-
为队列指定的子网 ID 使用 NAT 网关访问互联网。我们建议采用此方法。
-
在队列子网中启动的实例具有公有 IP 地址,可以通过 Internet 网关访问互联网。
此外,如果你对多节点parallel 任务感兴趣(来自AWS Batch文档):
AWS Batch多节点parallel 任务使用 Amazon ECSawsvpc
网络模式。这将为多节点parallel 任务容器提供与 Amazon EC2 实例相同的联网属性。每个多节点并行作业容器都可获得自己的弹性网络接口、主要私有 IP 地址以及内部 DNS 主机名。网络接口是在与其主机计算资源相同的 Amazon VPC 子网中创建的。适用于计算资源的任何安全组,也适用于该主机计算资源。
使用 Amazon ECS 任务网络时,awsvpc
网络模式不为使用 Amazon EC2 启动类型的任务提供带有公有 IP 地址的弹性网络接口。要访问互联网,必须在配置Amazon EC2 使用 NAT 网关的专用子网中启动任务。
您必须配置 NAT 网关才能使集群运行多节点parallel 作业。
所有先前的配置和注意事项也都有效。AWS Batch以下是 Internet 配置的AWS Batch示例。
# Note that all values are only provided as examples HeadNode: ... Networking: SubnetId: subnet-12345678 # subnet with internet gateway, NAT gateway or proxy #ElasticIp: true | false | eip-12345678 #Proxy: #HttpProxyAddress: http://proxy-address:port Ssh: KeyName: ec2-key-name Scheduling: Scheduler: awsbatch AwsBatchQueues: - ... Networking: SubnetIds: - subnet-23456789 # subnet with internet gateway, NAT gateway or proxy #AssignPublicIp: true | false
在 Scheduling/AwsBatchQueues/Networking部分中,SubnetIds是列表类型,但目前仅支持一个子网。
有关更多信息,请参阅以下主题:
AWS ParallelCluster在无法访问互联网的单个子网中

无法访问互联网的子网不允许互联网的入站或出站连接。此AWS ParallelCluster配置可以帮助关注安全的客户进一步增强其AWS ParallelCluster资源的安全性。 AWS ParallelCluster节点由AWS ParallelCluster AMI 构建,其中包含在无法访问互联网的情况下运行集群所需的所有软件。这样,AWS ParallelCluster就可以使用无法访问互联网的节点创建和管理集群。
在本节中,您将了解如何配置集群。您还将了解在无法访问互联网的情况下运行集群的限制。
配置 VPC 端点
为了确保群集的正常运行,群集节点必须能够与许多AWS服务进行交互。
创建和配置以下 VPC 终端节点,以便集群节点无需访问互联网即可与AWS服务进行交互:
** 此端点只有在启用时才DirectoryService是必需的,否则它是可选的。
VPC 中的所有实例都必须有适当的安全组才能与终端节点通信。您可以通过在SlurmQueues配置下方HeadNode和AdditionalSecurityGroupsAdditionalSecurityGroups下方添加安全组来实现此目的。例如,如果在创建 VPC 终端节点时未明确指定安全组,则默认安全组将与终端节点关联。通过将默认安全组添加到AdditionalSecurityGroups
,您可以启用集群与终端节点之间的通信。
注意
当您使用 IAM 策略限制对 VPC 终端节点的访问时,必须将以下内容添加到 Amazon S3 VPC 终端节点:
PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Principal: "*" Action: - "s3:PutObject" Resource: - !Sub "arn:${AWS::Partition}:s3:::cloudformation-waitcondition-${AWS::Region}/*"
禁用 Route 53 并使用 EC2 主机名
创建 Slurm 集群时,AWS ParallelCluster创建专用 Route 53 托管区域,用于解析自定义计算节点主机名,例如{queue_name}-{st|dy}-{compute_resource}-{N}
。由于 Route 53 不支持 VPC 终端节点,因此必须禁用此功能。此外,AWS ParallelCluster必须配置为使用默认 EC2 主机名,例如ip-1-2-3-4
。将以下设置应用于您的集群配置:
... Scheduling: ... SlurmSettings: Dns: DisableManagedDns: true UseEc2Hostnames: true
警告
对于使用 SlurmSettings/Dns/创建DisableManagedDns并UseEc2Hostnames设置为的集群true
,DNSNodeName
无法解析 Slurm。NodeHostName
改用 Slurm。
注意
从AWS ParallelCluster版本 3.3.0 开始,此注释就无关紧要了。
对于AWS ParallelCluster 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
如果设置UseEc2Hostnames
为true
,则使用AWS ParallelClusterprolog
和epilog
脚本设置 Slurm 配置文件:
-
prolog
在分配每个任务时运行向计算节点/etc/hosts
上添加节点信息。 -
epilog
运行以清理由编写的内容prolog
。
要添加自定义prolog
或epilog
脚本,请将它们分别添加到/opt/slurm/etc/pcluster/prolog.d/
或/opt/slurm/etc/pcluster/epilog.d/
文件夹。
集群配置
了解如何将集群配置为在没有互联网连接的子网中运行。
此架构的配置需要以下设置:
# Note that all values are only provided as examples ... HeadNode: ... Networking: SubnetId: subnet-1234567890abcdef0 # the VPC of the subnet needs to have VPC endpoints AdditionalSecurityGroups: - sg-abcdef01234567890 # optional, the security group that enables the communication between the cluster and the VPC endpoints Scheduling: Scheduler: slurm # Cluster in a subnet without internet access is supported only when the scheduler is Slurm. SlurmSettings: Dns: DisableManagedDns: true UseEc2Hostnames: true SlurmQueues: - ... Networking: SubnetIds: - subnet-1234567890abcdef0 # the VPC of the subnet needs to have VPC endpoints attached AdditionalSecurityGroups: - sg-1abcdef01234567890 # optional, the security group that enables the communication between the cluster and the VPC endpoints
-
SubnetId(s):无法访问互联网的子网。
要启用AWS ParallelCluster和AWS服务之间的通信,子网的 VPC 必须连接 VPC 终端节点。在创建集群之前,请验证子网中是否禁用了自动分配公有 IPv4 地址,以确保
pcluster
命令可以访问集群。 -
AdditionalSecurityGroups:支持集群与 VPC 终端节点之间通信的安全组。
可选:
-
如果在创建 VPC 终端节点时未明确指定安全组,则将 VPC 的默认安全组关联。因此,请将默认安全组提供给
AdditionalSecurityGroups
。 -
如果在创建集群和/或 VPC 终端节点时使用自定义安全组,
AdditionalSecurityGroups
则没有必要,只要自定义安全组支持集群与 VPC 终端节点之间的通信。
-
-
Scheduler:集群调度程序。
slurm
是唯一的有效值。只有 Slurm 调度程序支持子网中无法访问互联网的集群。 -
SlurmSettings: Slurm 设置。
请参阅前面的部分禁用 Route53 并使用 EC2 主机名。
限制
-
通过 SSH 或 NICE DCV 连接到头节点:连接到群集时,请确保连接的客户端可以通过其私有 IP 地址到达群集的头节点。如果客户端与头节点不在同一 VPC 中,请在 VPC 的公有子网中使用代理实例。此要求适用于 SSH 和 DCV 连接。如果子网无法访问互联网,则无法访问头节点的公有 IP。
pcluster ssh
和dcv-connect
命令使用公有 IP(如果存在)或私有 IP。在创建集群之前,请验证子网中是否禁用了自动分配公有 IPv4 地址,以确保pcluster
命令可以访问集群。以下示例显示如何连接到在集群头节点上运行的 DCV 会话。您通过代理 EC2 实例进行连接。该实例用作 PC 的 NICE DCV 服务器和私有子网中头节点的客户端。
通过公有子网中的代理实例通过 DCV 进行Connect:
-
在公有子网中创建 EC2 实例,该子网中与集群子网的VPC 子网中创建 EC2 实例。
-
确保 NICE DCV 客户端和服务器安装在您的 EC2 实例上。
-
将AWS ParallelCluster用户策略附加到代理 EC2 实例。有关更多信息,请参阅AWS ParallelCluster pcluster用户策略示例:
-
在代理 EC2 实例AWS ParallelCluster上安装。
-
通过 DCV Connect 代理 EC2 实例。
-
使用代理实例上的
pcluster dcv-connect
命令在不访问 Internet 的情况下连接到子网内的集群。
-
-
与其他AWS服务交互:上面只列出了严格要求AWS ParallelCluster的服务。如果您的集群必须与其他服务交互,请创建相应的 VPC 终端节点。