AWS ParallelCluster在无法访问互联网的单个子网中 - AWS ParallelCluster

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

AWS ParallelCluster在无法访问互联网的单个子网中

没有互联网访问权限的子网不允许使用入站或出站互联网连接。此AWS ParallelCluster配置可以帮助关注安全的客户进一步增强其AWS ParallelCluster资源的安全性。AWS ParallelCluster节点AWS ParallelCluster AMIs 的构建基础包括运行无法访问互联网的集群所需的所有软件。通过这种方式,AWS ParallelCluster可以创建和管理带有无法访问互联网的节点的集群。

在本节中,您将了解如何配置集群。您还将了解运行无互联网访问权限的集群时的限制。

AWS ParallelCluster使用一个子网但没有互联网

配置 VPC 端点

为确保群集正常运行,群集节点必须能够与多个AWS服务进行交互。

创建并配置以下 VPC 终端节点,以便集群节点无需访问互联网即可与AWS服务进行交互:

Commercial and AWS GovCloud (US) partitions
服务 服务名称 Type

Amazon CloudWatch

com.amazonaws。 region-id.logs

接口

CloudFormation

com.amazonaws。 region-id.cloudfor

接口

Amazon EC2

com.amazonaws。 region-id.ec2

接口

Amazon S3

com.amazonaws。 region-id.s3

网关

Amazon DynamoDB

com.amazonaws。 region-id.dynamodb

网关

AWS Secrets Manager**

com.amazonaws。 region-id.secretsManag

接口

AWS弹性负载平衡***

com.amazonaws。 region-id.elasticload bal

接口

AWS自动缩放***

com.amazonaws。 region-id. 自动缩放

接口

China partition
服务 服务名称 Type

Amazon CloudWatch

com.amazonaws。 region-id.logs

接口

CloudFormation

cn.com.amazonaws。 region-id.cloudfor

接口

Amazon EC2

cn.com.amazonaws。 region-id.ec2

接口

Amazon S3

com.amazonaws。 region-id.s3

网关

Amazon DynamoDB

com.amazonaws。 region-id.dynamodb

网关

AWS Secrets Manager**

com.amazonaws。 region-id.secretsManag

接口

AWS弹性负载平衡***

com.amazonaws。 region-id.elasticload bal

接口

AWS自动缩放***

cn.com.amazonaws。 region-id. 自动缩放

接口

** 只有在启用了 DirectoryService 时才需要此端点,否则它是可选的。

*** 只有在启用时LoginNodes才需要这些端点,否则它们是可选的。

VPC 中的所有实例都必须具有适当的安全组才能与端点通信。您可以通过将安全组添加到 HeadNode 配置下面的 AdditionalSecurityGroupsSlurmQueues 配置下面的 AdditionalSecurityGroups 来实现这一目的。例如,如果创建了 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 并使用 Amazon EC2 主机名

创建Slurm集群时,AWS ParallelCluster会创建用于解析自定义计算节点主机名的私有 Route 53 托管区域,例如{queue_name}-{st|dy}-{compute_resource}-{N}。由于 Route 53 不支持 VPC 端点,因此必须禁用此功能。此外,AWS ParallelCluster必须配置为使用默认 Amazon EC2 主机名,例如ip-1-2-3-4。将以下设置应用于您的集群配置:

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

对于在 SlurmSettings/Dns/DisableManagedDnsUseEc2Hostnames 设置为 true 的情况下创建的集群,DNS 无法解析 Slurm NodeName。可改用 Slurm NodeHostName

注意

从 3.3.0 AWS ParallelCluster版本开始,本说明不相关。

对于 3.3.0 之前的AWS ParallelCluster支持版本:

如果设置UseEc2Hostnamestrue,则使用AWS ParallelClusterprologepilog脚本设置Slurm配置文件:

  • 分配了每个作业后,prolog 用于向计算节点上的 /etc/hosts 中添加节点信息。

  • epilog 用于清理 prolog 写入的内容。

要添加自定义 epilogprolog 脚本,请分别将其添加到 /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 LoginNodes: # optional, if enabled, requires creation and configuration of VPC endpoints for AWS Elastic Load Balancing (ELB) and Auto Scaling services Pools: - ... 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 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

    • 如果在创建集群 and/or 时使用自定义安全组,AdditionalSecurityGroups则无需使用 VPC 终端节点,只要自定义安全组支持集群和 VPC 终端节点之间的通信。

  • Scheduler:集群调度器。

    slurm 是唯一的有效值。只有 Slurm 调度器支持没有互联网访问权限的子网中的集群。

  • SlurmSettings:Slurm 设置。

    请参阅上一节禁用 Route53 并使用 Ama EC2 zon 主机名

限制

  • 通过 SSH 或 Amazon DCV 连接到头节点:连接到集群时,请确保连接客户端可以通过私有 IP 地址访问集群的头节点。如果客户端与头节点不在同一 VPC 中,请在该 VPC 的公有子网中使用代理实例。此要求适用于 SSH 和 DCV 连接。如果子网没有互联网访问权限,则无法访问头节点的公有 IP。pcluster sshdcv-connect 命令使用公有 IP(如果存在)或私有 IP。在创建集群之前,请确认子网中已禁用自动分配公有 IPv4 地址,以确保pcluster命令可以访问集群。

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

    利用公有子网中的代理实例通过 DCV 进行连接:

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

    2. 确保在您的亚马逊 EC2 实例上安装了 Amazon DCV 客户端和服务器。

    3. 将AWS ParallelCluster用户策略附加到代理 Amazon EC2 实例。有关更多信息,请参阅 AWS ParallelCluster pcluster用户策略示例

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

    5. 通过 DCV 连接到 Amazon 代理 EC2 实例。

    6. 在代理实例上使用 pcluster dcv-connect 命令即可连接到没有互联网访问权限的子网中的集群。

  • 与其他AWS服务互动:上面仅列出了严格要求AWS ParallelCluster的服务。如果您的集群必须与其他服务交互,请创建相应的 VPC 端点。