使用 AWS ParallelCluster 命令行界面配置和创建集群 - AWS ParallelCluster

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

使用 AWS ParallelCluster 命令行界面配置和创建集群

安装 AWS ParallelCluster 后,请完成以下配置步骤:

验证您的 AWS 账户是否具有包含运行 pcluster CLI 所需的权限的角色。有关更多信息,请参阅AWS ParallelCluster 示例 pcluster 用户策略

设置您的 AWS 凭证。有关更多信息,请参阅 AWS CLI 用户指南 中的配置 AWS CLI

$ aws configure AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [us-east-1]: us-east-1 Default output format [None]:

启动集群的 AWS 区域必须至少有一个 Amazon EC2 密钥对。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的 Amazon EC2 密钥对

使用 AWS ParallelCluster 命令行界面 (CLI) 时,您只需为创建或更新 AWS ParallelCluster 映像和集群时创建的 AWS 资源付费。有关更多信息,请参阅AWS ParallelCluster 使用的 AWS 服务

配置和创建第一个集群

通过使用 pcluster configure CLI 命令启动向导来创建您的第一个集群,该向导会提示您输入配置和创建集群所需的所有信息。与使用 Slurm 相比,使用 AWS Batch 作为调度器时序列的详细信息有所不同。

Slurm
$ pcluster configure --config config-file.yaml

从有效的 AWS 区域 标识符列表中,选择要在其中运行集群的 AWS 区域。

注意

显示的 AWS 区域 列表基于您的账户分区,仅包括为您的账户启用的 AWS 区域。有关为您的账户启用 AWS 区域的更多信息,请参阅 AWS 一般参考 中的管理 AWS 区域。所示的示例来自 AWS 全球分区。如果您的账户位于 AWS GovCloud (US)分区,则只会列出该分区中的 AWS 区域(gov-us-east-1gov-us-west-1)。同样,如果您的账户位于 AWS 中国分区,则仅显示 cn-north-1cn-northwest-1。有关 AWS ParallelCluster 支持的 AWS 区域的完整列表,请参阅AWS ParallelCluster 的支持区域

Allowed values for AWS 区域 ID: 1. af-south-1 2. ap-east-1 3. ap-northeast-1 4. ap-northeast-2 5. ap-south-1 6. ap-southeast-1 7. ap-southeast-2 8. ca-central-1 9. eu-central-1 10. eu-north-1 11. eu-south-1 12. eu-west-1 13. eu-west-2 14. eu-west-3 15. me-south-1 16. sa-east-1 17. us-east-1 18. us-east-2 19. us-west-1 20. us-west-2 AWS 区域 ID [ap-northeast-1]:

从向所选 AWS 区域中的 Amazon EC2 注册的密钥对中选择密钥对。选择密钥对:

Allowed values for EC2 Key Pair Name: 1. your-key-1 2. your-key-2 EC2 Key Pair Name [your-key-1]:

选择要用于集群的计划程序。

Allowed values for Scheduler: 1. slurm 2. awsbatch Scheduler [slurm]:

选择操作系统。

Allowed values for Operating System: 1. alinux2 2. centos7 3. ubuntu2204 4. ubuntu2004 5. rhel8 Operating System [alinux2]:

选择头节点实例类型:

Head node instance type [t2.micro]:

选择队列配置。注意:不能为同一个队列中的多个计算资源指定实例类型。

Number of queues [1]: Name of queue 1 [queue1]: Number of compute resources for queue1 [1]: 2 Compute instance type for compute resource 1 in queue1 [t2.micro]: Maximum instance count [10]:

启用 EFA 以在不产生额外费用的情况下在 AWS 上运行需要大规模高水平实例间通信的应用程序:

Compute instance type for compute resource 2 in queue1 [t2.micro]: c5n.18xlarge Enable EFA on c5n.18xlarge (y/n) [y]: y Maximum instance count [10]: Placement Group name []:

完成前面的步骤后,决定是使用现有 VPC 还是让 AWS ParallelCluster 创建 VPC。如果没有正确配置的 VPC,AWS ParallelCluster 可以创建一个新的 VPC。它会将头节点和计算节点置于同一公有子网中,或者仅将头节点置于公有子网中,而将所有计算节点置于私有子网中。如果让 AWS ParallelCluster 创建 VPC,则必须决定是否所有节点都应位于公有子网中。有关更多信息,请参阅网络配置

如果您将集群配置为使用具有多个网络接口或网卡的实例类型,请参阅网络配置以了解其他网络要求。

可能会达到 AWS 区域中允许的 VPC 数量配额。默认配额是每个 AWS 区域五个 VPC。有关此配额以及如何请求提高配额的更多信息,请参阅 Amazon VPC 用户指南 中的 VPC 和子网

重要

默认情况下,由 AWS ParallelCluster 创建的 VPC 不启用 VPC 流日志。VPC 流日志使您可以捕获有关在您的 VPC 中传入和传出网络接口的 IP 流量的信息。有关更多信息,请参阅《Amazon VPC 用户指南》中的 VPC 流日志

如果让 AWS ParallelCluster 创建 VPC,请确保决定是否所有节点都应位于公有子网中。

注意

如果您选择 1. Head node in a public subnet and compute fleet in a private subnet,AWS ParallelCluster 将会创建一个 NAT 网关,即使您指定了免费套餐资源,也会产生额外费用。

Automate VPC creation? (y/n) [n]: y Allowed values for Availability Zone: 1. us-east-1a 2. us-east-1b 3. us-east-1c 4. us-east-1d 5. us-east-1e 6. us-east-1f Availability Zone [us-east-1a]: Allowed values for Network Configuration: 1. Head node in a public subnet and compute fleet in a private subnet 2. Head node and compute fleet in the same public subnet Network Configuration [Head node in a public subnet and compute fleet in a private subnet]: 1 Beginning VPC creation. Please do not leave the terminal until the creation is finalized

如果您不创建新的 VPC,则必须选择现有 VPC。

如果您选择让 AWS ParallelCluster 创建 VPC,请记下 VPC ID,以便日后使用 AWS CLI 将其删除。

Automate VPC creation? (y/n) [n]: n Allowed values for VPC ID: # id name number_of_subnets --- --------------------- --------------------------------- ------------------- 1 vpc-0b4ad9c4678d3c7ad ParallelClusterVPC-20200118031893 2 2 vpc-0e87c753286f37eef ParallelClusterVPC-20191118233938 5 VPC ID [vpc-0b4ad9c4678d3c7ad]: 1

选择 VPC 后,决定是使用现有子网还是创建新子网。

Automate Subnet creation? (y/n) [y]: y
Creating CloudFormation stack... Do not leave the terminal until the process has finished
AWS Batch
$ pcluster configure --config config-file.yaml

从有效的 AWS 区域 标识符列表中,选择要在其中运行集群的 AWS 区域。

注意

所示的 AWS 区域列表基于您账户的分区。它仅包含已为您账户启用的 AWS 区域。有关为您的账户启用 AWS 区域的更多信息,请参阅 AWS 一般参考 中的管理 AWS 区域。所示的示例来自 AWS 全球分区。如果您的账户位于 AWS GovCloud (US)分区,则只会列出该分区中的 AWS 区域(gov-us-east-1gov-us-west-1)。同样,如果您的账户位于 AWS 中国分区,则仅显示 cn-north-1cn-northwest-1。有关 AWS ParallelCluster 支持的 AWS 区域的完整列表,请参阅AWS ParallelCluster 的支持区域

Allowed values for AWS 区域 ID: 1. af-south-1 2. ap-east-1 3. ap-northeast-1 4. ap-northeast-2 5. ap-south-1 6. ap-southeast-1 7. ap-southeast-2 8. ca-central-1 9. eu-central-1 10. eu-north-1 11. eu-south-1 12. eu-west-1 13. eu-west-2 14. eu-west-3 15. me-south-1 16. sa-east-1 17. us-east-1 18. us-east-2 19. us-west-1 20. us-west-2 AWS 区域 ID [us-east-1]:

从向所选 AWS 区域中的 Amazon EC2 注册的密钥对中选择密钥对。选择密钥对:

Allowed values for EC2 Key Pair Name: 1. your-key-1 2. your-key-2 EC2 Key Pair Name [your-key-1]:

选择要用于集群的计划程序。

Allowed values for Scheduler: 1. slurm 2. awsbatch Scheduler [slurm]: 2

当选择 awsbatch 作为计划程序时,alinux2 将用作操作系统。输入头节点实例类型:

Head node instance type [t2.micro]:

选择队列配置。AWS Batch 调度器仅包含单个队列。输入计算节点集群的最大大小。这是以 vCPU 来衡量的。

Number of queues [1]: Name of queue 1 [queue1]: Maximum vCPU [10]:

决定是使用现有 VPC 还是让 AWS ParallelCluster 创建 VPC。如果没有正确配置的 VPC,AWS ParallelCluster 可以创建新的 VPC。它将使用同一公有子网中的头节点和计算节点,或者仅使用公有子网中的头节点,所有节点都在私有子网中。可能会达到区域中允许的 VPC 数量配额。默认的 VPC 数量为五个。有关此配额以及如何请求提高配额的更多信息,请参阅 Amazon VPC 用户指南 中的 VPC 和子网

重要

默认情况下,由 AWS ParallelCluster 创建的 VPC 不启用 VPC 流日志。VPC 流日志使您可以捕获有关在您的 VPC 中传入和传出网络接口的 IP 流量的信息。有关更多信息,请参阅《Amazon VPC 用户指南》中的 VPC 流日志

如果让 AWS ParallelCluster 创建 VPC,请确保决定是否所有节点都应位于公有子网中。

注意

如果您选择 1. Head node in a public subnet and compute fleet in a private subnet,AWS ParallelCluster 将会创建一个 NAT 网关,即使您指定了免费套餐资源,也会产生额外费用。

Automate VPC creation? (y/n) [n]: y Allowed values for Availability Zone: 1. us-east-1a 2. us-east-1b 3. us-east-1c 4. us-east-1d 5. us-east-1e 6. us-east-1f Availability Zone [us-east-1a]: Allowed values for Network Configuration: 1. Head node in a public subnet and compute fleet in a private subnet 2. Head node and compute fleet in the same public subnet Network Configuration [Head node in a public subnet and compute fleet in a private subnet]: *1* Beginning VPC creation. Please do not leave the terminal until the creation is finalized

如果您不创建新的 VPC,则必须选择现有 VPC。

如果您选择让 AWS ParallelCluster 创建 VPC,请记下 VPC ID,以便日后可以使用 AWS CLI 或 AWS Management Console将其删除。

Automate VPC creation? (y/n) [n]: n Allowed values for VPC ID: # id name number_of_subnets --- --------------------- --------------------------------- ------------------- 1 vpc-0b4ad9c4678d3c7ad ParallelClusterVPC-20200118031893 2 2 vpc-0e87c753286f37eef ParallelClusterVPC-20191118233938 5 VPC ID [vpc-0b4ad9c4678d3c7ad]: 1

选择 VPC 后,确保决定是使用现有子网还是创建新子网。

Automate Subnet creation? (y/n) [y]: y
Creating CloudFormation stack... Do not leave the terminal until the process has finished

完成上述步骤后,一个简单集群将启动到 VPC 中。VPC 使用支持公有 IP 地址的现有子网。该子网的路由表为 0.0.0.0/0 => igw-xxxxxx。请注意以下条件:

  • VPC 必须具有 DNS Resolution = yesDNS Hostnames = yes

  • VPC 还必须具有带适用于 AWS 区域的正确 domain-name 的 DHCP 选项。默认 DHCP 选项集已经指定了所需的 AmazonProvidedDNS。如果指定多个域名服务器,请参阅 Amazon VPC 用户指南 中的 DHCP 选项集。使用私有子网时,请使用 NAT 网关或内部代理为计算节点启用 Web 访问。有关更多信息,请参阅网络配置

但所有设置都包含有效值时,您可以通过运行创建命令来启动集群:

$ pcluster create-cluster --cluster-name test-cluster --cluster-configuration cluster-config.yaml { "cluster": { "clusterName": "test-cluster", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:eu-west-1:xxx:stack/test-cluster/abcdef0-f678-890a-5abc-021345abcdef", "region": "eu-west-1", "version": "3.7.0", "clusterStatus": "CREATE_IN_PROGRESS" }, "validationMessages": [] }

跟踪集群进度:

$ pcluster describe-cluster --cluster-name test-cluster

或者

$ pcluster list-clusters --query 'clusters[?clusterName==`test-cluster`]'

在集群达到"clusterStatus": "CREATE_COMPLETE"状态后,您可以使用常规 SSH 客户端设置连接到该集群。有关连接到 Amazon EC2 实例的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的 EC2 用户指南。或者,您可以通过以下方式连接到该集群

$ pcluster ssh --cluster-name test-cluster -i ~/path/to/keyfile.pem

要删除该集群,请运行以下命令。

$ pcluster delete-cluster --region us-east-1 --cluster-name test-cluster

删除集群后,您可以通过删除网络堆栈来删除 VPC 中的 CloudFormation 网络资源。堆栈名称以“parallelclusternetworking-”开头,并且包含“YYYYMMDDHHMMSS”格式的创建时间。您可以使用 list-stacks 命令列出堆栈。

$ aws --region us-east-1 cloudformation list-stacks \ --stack-status-filter "CREATE_COMPLETE" \ --query "StackSummaries[].StackName" | \ grep -e "parallelclusternetworking-" "parallelclusternetworking-pubpriv-20191029205804"

可以使用 delete-stack 命令删除堆栈。

$ aws --region us-east-1 cloudformation delete-stack \ --stack-name parallelclusternetworking-pubpriv-20191029205804

为您pcluster configure创建的 VPC 不是在 CloudFormation 网络堆栈中创建的。您可以在控制台中或者通过使用 AWS CLI,手动删除该 VPC。

$ aws --region us-east-1 ec2 delete-vpc --vpc-id vpc-0b4ad9c4678d3c7ad