View a markdown version of this page

使用创建集群 CloudFormation - AWS ParallelCluster

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

使用创建集群 CloudFormation

了解如何使用 AWS ParallelCluster CloudFormation 自定义资源创建集群。有关更多信息,请参阅 AWS CloudFormation 自定义资源。

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

先决条件:

使用 CloudFormation 快速创建堆栈创建集群

在本教程中,您将使用快速创建堆栈来部署用于创建集群和以下 AWS 资源的 CloudFormation 模板:

  • 使用 CloudFormation 快速创建 CloudFormation 堆栈创建的根堆栈。

  • 嵌套 CloudFormation 堆栈,包括默认策略、默认 VPC 设置和自定义资源提供商。

  • 示例 AWS ParallelCluster 集群堆栈和您可以登录并运行作业的集群。

使用创建集群 AWS CloudFormation

  1. 登录到 AWS 管理控制台。

  2. 打开 CloudFormation 快速创建链接,在 CloudFormation 控制台中创建以下资源:

    • 带有公有子网和私有子网的 VPC 的嵌套 CloudFormation 堆栈,分别用于运行集群头节点和计算节点。

    • 带有用于管理集群的 AWS ParallelCluster 自定义资源的嵌套 CloudFormation 堆栈。

    • 具有用于管理集群的默认策略的嵌套 CloudFormation 堆栈。

    • 嵌套 CloudFormation 堆栈的根堆栈。

    • 带有Slurm调度器和规定数量的计算节点的 AWS ParallelCluster 集群。

    控制台 CloudFormation 快速创建用户界面。
  3. 在快速创建堆栈参数部分,输入以下参数的值:

    1. 对于 KeyName,输入您的 Amazon EC2 密钥对的名称。

    2. 对于 AvailabilityZone,为您的集群节点选择一个可用区,例如us-east-1a。

  4. 在页面底部选中各个框以确认各项访问功能。

  5. 选择创建堆栈。

  6. 等待 CloudFormation 堆栈达到CREATE_COMPLETE状态。

使用创建集群 CloudFormation 命令行界面(CLI)

在本教程中,您将使用 AWS 命令行界面 (CLI) CloudFormation 来部署创建集群的 CloudFormation 模板。

创建以下 AWS 资源:
  • 使用 CloudFormation 快速创建 CloudFormation 堆栈创建的根堆栈。

  • 嵌套 CloudFormation 堆栈,包括默认策略、默认 VPC 设置和自定义资源提供商。

  • 示例 AWS ParallelCluster 集群堆栈和您可以登录并运行作业的集群。

例如 inputs highlighted in redkeypair,用您自己的值替换。

使用创建集群 AWS CloudFormation

  1. 使用以下内容创建cluster_template.yaml名为的 CloudFormation 模板:

    AWSTemplateFormatVersion: '2010-09-09' Description: > AWS ParallelCluster CloudFormation Template Parameters: KeyName: Description: KeyPair to login to the head node Type: AWS::EC2::KeyPair::KeyName AvailabilityZone: Description: Availability zone where instances will be launched Type: AWS::EC2::AvailabilityZone::Name Default: us-east-2a Mappings: ParallelCluster: Constants: Version: 3.16.1 Resources: PclusterClusterProvider: Type: AWS::CloudFormation::Stack Properties: TemplateURL: !Sub - https://${AWS::Region}-aws-parallelcluster.s3.${AWS::Region}.${AWS::URLSuffix}/parallelcluster/${Version}/templates/custom_resource/cluster.yaml - { Version: !FindInMap [ParallelCluster, Constants, Version] } PclusterVpc: Type: AWS::CloudFormation::Stack Properties: Parameters: PublicCIDR: 10.0.0.0/24 PrivateCIDR: 10.0.16.0/20 AvailabilityZone: !Ref AvailabilityZone TemplateURL: !Sub - https://${AWS::Region}-aws-parallelcluster.s3.${AWS::Region}.${AWS::URLSuffix}/parallelcluster/${Version}/templates/networking/public-private-${Version}.cfn.json - { Version: !FindInMap [ParallelCluster, Constants, Version ] } PclusterCluster: Type: Custom::PclusterCluster Properties: ServiceToken: !GetAtt [ PclusterClusterProvider , Outputs.ServiceToken ] ClusterName: !Sub 'c-${AWS::StackName}' ClusterConfiguration: Image: Os: alinux2023 HeadNode: InstanceType: t2.medium Networking: SubnetId: !GetAtt [ PclusterVpc , Outputs.PublicSubnetId ] Ssh: KeyName: !Ref KeyName Scheduling: Scheduler: slurm SlurmQueues: - Name: queue0 ComputeResources: - Name: queue0-cr0 InstanceType: t2.micro Networking: SubnetIds: - !GetAtt [ PclusterVpc , Outputs.PrivateSubnetId ] Outputs: HeadNodeIp: Description: The Public IP address of the HeadNode Value: !GetAtt [ PclusterCluster, headNode.publicIpAddress ]
  2. 运行以下 AWS CLI 命令部署 CloudFormation 堆栈以创建和管理集群。

    $ aws cloudformation deploy --template-file ./cluster_template.yaml \ --stack-name mycluster \ --parameter-overrides KeyName=keypair \ AvailabilityZone=us-east-2b \ --capabilities CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND

查看 CloudFormation 集群输出

查看集 CloudFormation 群输出以获取有用的集群详细信息。添加的 ValidationMessages 属性允许访问集群创建和更新操作中的验证消息。

  1. 导航到CloudFormation 控制台并选择包含您的 AWS ParallelCluster 自定义资源的堆栈。

  2. 选择堆栈详细信息,然后选择输出选项卡。

    控制台 CloudFormation 输出表显示 HeadNodeIp 和的值 ValidationMessages。

    验证消息可能会被截断。有关如何检索日志的更多信息,请参阅AWS ParallelCluster 故障排除。

访问您的集群

访问集群。

ssh 进入集群头节点
  1. CloudFormation 堆栈部署完成后,使用以下命令获取头节点的 IP 地址:

    $ HEAD_NODE_IP=$(aws cloudformation describe-stacks --stack-name=mycluster --query "Stacks|[0].Outputs[?OutputKey=='HeadNodeIp']|[0].OutputValue" --output=text)

    您还可以从 CloudFormation 控制台中集群堆栈输出选项卡中的HeadNodeIp参数中检索头节点 IP 地址。

    您可以在此处找到头节点 IP 地址,因为它是在集群 CloudFormation 模板的Outputs部分中添加的,专门针对此示例集群。

  2. 通过运行以下命令,连接集群头节点:

    $ ssh -i keyname.pem ec2-user@$HEAD_NODE_IP

清理

请删除集群。

  1. 运行以下 AWS CLI 命令删除 CloudFormation 堆栈和集群。

    $ aws cloudformation delete-stack --stack-name=mycluster
  2. 通过运行以下命令,检查堆栈删除状态。

    $ aws cloudformation describe-stacks --stack-name=mycluster