网络配置 - Amazon ParallelCluster
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

网络配置

Amazon ParallelCluster使用Amazon Virtual Private Cloud (VPC) VPC 提供了可在其中部署集群的灵活且可配置的网络平台。

VPC 必须具有DNS Resolution = yesDNS Hostnames = yes和 DHCP 选项以及带适用于区域的正确域名。默认的 DHCP 选项集已经指定了必需的AmazonProvidedDNS. 如果指定多台域名服务器,请参阅DHCP 选项集中的Amazon VPC User Guide.

Amazon ParallelCluster支持以下高级配置:

  • 头节点和计算节点都有一个子网。

  • 两个子网,头节点位于一个公有子网中,而计算节点位于私有子网中。子网可以是新子网,也可以是现有子网。

所有这些配置都可以在使用或不使用公有 IP 寻址的情况下进行操作。Amazon ParallelCluster也可以部署为对所有人使用 HTTP 代理Amazon请求. 这些配置的组合会产生许多部署方案。例如,您可以配置一个可通过 Internet 进行所有访问的公有子网。或者,您可以使用配置完全私有网络Amazon Direct Connect和所有流量的 HTTP 代理。

从... 开始Amazon ParallelCluster3.0.0 可以配置不同的SecurityGroupsAdditionalSecurityGroupsPlacementGroup每个队列的设置。有关更多信息,请参阅 。HeadNode/NetworkingSlurmQueues/NetworkingAwsBatchQueues/Networking.

有关某些网络场景的说明,请参阅以下架构图。

Amazon 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 才能访问 Internet。为此,请执行以下操作:

有关更多信息,请参阅 。启用 Internet 访问Amazon VPC User Guide.

使用两个子网的 Amazon 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。您可以通过为中使用的子网启用 “启用自动分配公有 IPv4 地址” 设置来实现此目的HeadNode/Networking/SubnetId或者通过在中分配弹性 IPHeadNode/Networking/ElasticIp.

如果您定义的 p4d 实例类型或其他具有多个网络接口的实例类型或连接到头节点的网络接口卡,则必须将HeadNode/Networking/ElasticIptrue以提供公有访问。Amazon公有 IP 只能分配给使用单个网络接口启动的实例。有关 IP 地址的更多信息,请参阅在实例启动期间分配公有 IPv4 地址中的Amazon EC2 Linux 实例的用户指南.

此配置需要一个NAT 网关或用于队列的子网中的内部代理,以授予对计算实例的 Internet 访问权限。

使用 Amazon Direct Connect 连接的单个私有子网中的 Amazon 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

何时Scheduling/SlurmQueues/Networking/AssignPublicIp设置为false,必须正确地设置子网以便对所有流量使用代理。头节点和计算节点都需要 Web 访问。

Amazon ParallelCluster和Amazon Batch计划程序

当您使用以下应用程序时awsbatch作为调度器类型,Amazon ParallelCluster创建一个Amazon Batch托管计算环境。这些区域有:Amazon Batch环境管理亚马逊Elastic Container Service (Amazon ECS) 容器实例。这些实例在中配置的子网中启动AwsBatchQueues/Networking/SubnetIds参数。适用于Amazon Batch要正常工作,Amazon ECS 容器实例需要外部网络访问以便与 Amazon ECS 服务终端节点进行通信。这会转换为以下情形:

  • 为队列指定的子网 ID 使用NAT 网关以访问 Internet. 我们建议采用此方法。

  • 在队列子网中启动的实例具有公有 IP 地址,并可通过 Internet 网关到达 Internet。

此外,如果您对多节点parallel 作业感兴趣(从Amazon Batchdoc):

Amazon Batch多节点parallel 作业使用 Amazon ECSawsvpc网络模式。这将为多节点parallel 作业容器提供与 Amazon EC2 实例相同的网络属性。每个多节点并行作业容器都可获得自己的弹性网络接口、主要私有 IP 地址以及内部 DNS 主机名。网络接口在与其主机计算资源相同的 Amazon VPC 子网中创建。适用于计算资源的任何安全组,也适用于该主机计算资源。

使用 Amazon ECS 任务联网时,awsvpc对于使用 Amazon EC2 启动类型的任务,网络模式不提供具有公有 IP 地址的弹性网络接口。要访问互联网,必须在配置为使用 NAT 网关的私有子网中启动使用 Amazon EC2 启动类型的任务。

您必须配置一个NAT 网关以便使集群能够运行多节点parallel 作业。

之前的所有配置和注意事项均适用于Amazon Batch,也是。以下是一个示例Amazon 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是一种列表类型,但目前只支持一个子网。

有关更多信息,请参阅以下主题:

Amazon ParallelCluster在无法访问 Internet 的单一子网中


        Amazon ParallelCluster使用一个子网而不使用互联网

没有互联网访问权限的子网不允许入站或出站连接到互联网。该Amazon ParallelCluster配置可以帮助关注安全的客户进一步增强其Amazon ParallelCluster资源的费用。Amazon ParallelCluster节点是从Amazon ParallelCluster包含在没有互联网访问权限的情况下运行集群所需的所有软件的 AMI。这样,Amazon ParallelCluster可以创建和管理具有节点无法访问 Internet 的集群。

在本节中,您将了解如何配置集群。您还将了解在不接入 Internet 的情况下运行集群的限制。

配置 VPC 终端点

为确保群集正常运行,群集节点必须能够与许多Amazon服务.

创建和配置以下内容VPC 终端节点以便群集节点可以与Amazon没有互联网接入的服务:

Commercial and Amazon GovCloud (US) partitions
服务 服务名称 类型

亚马逊 CloudWatch

com.amazonaws.区域编号.logs

接口

Amazon CloudFormation

com.amazonaws.区域编号.cloud

接口

Amazon EC2

com.amazonaws.区域编号.ec2

接口

Amazon S3

com.amazonaws.区域编号.s3

网关

Amazon DynamoDB

com.amazonaws.区域编号.dynamodb

网关

Amazon Secrets Manager**

com.amazonaws.区域编号secretsmanager

接口

China partition
服务 服务名称 类型

亚马逊 CloudWatch

com.amazonaws.区域编号.logs

接口

Amazon CloudFormation

cn.com.amazonaw区域编号.cloud

接口

Amazon EC2

cn.com.amazonaw区域编号.ec2

接口

Amazon S3

com.amazonaws.区域编号.s3

网关

Amazon DynamoDB

com.amazonaws.区域编号.dynamodb

网关

Amazon Secrets Manager**

com.amazonaws.区域编号secretsmanager

接口

** 仅在以下情况下才需要此端点DirectoryService已启用,否则它是可选的。

VPC 中的所有实例都必须具有适当的安全组才能与终端节点通信。您可以通过将安全组添加到AdditionalSecurityGroupsHeadNodeAdditionalSecurityGroupsSlurmQueues配置。例如,如果创建 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 集群时,Amazon ParallelCluster创建私有 Route 53 托管区域,用于解析自定义计算节点主机名,例如{queue_name}-{st|dy}-{compute_resource}-{N}. 由于 Route 53 不支持 VPC 终端节点,因此必须禁用此功能。此外,Amazon ParallelCluster必须配置为使用默认 EC2 主机名,例如ip-1-2-3-4. 将以下设置应用于群集配置:

... Scheduling: ... SlurmSettings: Dns: DisableManagedDns: true UseEc2Hostnames: true
警告

对于使用创建的集群SlurmSettings/Dns/DisableManagedDnsUseEc2Hostnames设置为true,SlurmNodeName未被 DNS 解析。使用SlurmNodeHostName相反.

注意

何时UseEc2Hostnames设置为true,Slurm 配置文件设置为Amazon ParallelCluster prologepilog脚本:

  • prolog运行以将节点信息添加到/etc/hosts分配每个作业时在计算节点上。

  • epilog运行以清理写入的内容prolog.

添加自定义prolog要么epilog脚本,将它们添加到/opt/slurm/etc/pcluster/prolog.d/要么/opt/slurm/etc/pcluster/epilog.d/文件夹。

集群群群配置

了解如何将集群配置为在未连接到 Internet 的子网中运行。

此架构的配置需要以下设置:

# 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):无法访问互联网的子网。

    启用两者之间的通信Amazon ParallelCluster和Amazon服务,子网的 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 连接。如果子网没有 Internet 访问权限,则无法访问头节点的公有 IP。这些区域有:pcluster sshdcv-connect命令使用公有 IP(如果存在)或私有 IP。在创建集群之前,请验证自动分配公有 IPv4 地址已禁用在子网中,以确保pcluster命令有权访问群集。

    以下示例显示如何连接到在集群头节点中运行的 DCV 会话。您通过EC2 实例进行连接。该实例用作您的 PC 的 NICE DCV 服务器以及私有子网中头节点的客户端。

    通过公有子网中的代理实例通过 DCV 进行Connect:

    1. 在公有子网中创建 EC2 实例,该子网与集群的子网位于同一 VPC 中。

    2. 确保您的 EC2 实例上安装了 NICE DCV 客户端和服务器。

    3. 附加一个Amazon ParallelClusterEC2 代理实例的用户策略。有关更多信息,请参阅 Amazon ParallelCluster用户策略示例

    4. 安装Amazon ParallelCluster在EC2 实例上。

    5. 通过 DCV Connect 代理 EC2 实例。

    6. 使用pcluster dcv-connect命令以连接到子网内的群集,而无需访问 Internet。

  • 与其他人交互Amazon服务: 只有严格要求的服务Amazon ParallelCluster在上面列出。如果您的集群必须与其他服务交互,请创建相应的 VPC 终端节点。