建立叢集 AWS CloudFormation - AWS ParallelCluster

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立叢集 AWS CloudFormation

瞭解如何使用 AWS ParallelCluster CloudFormation 自訂資源建立叢集。如需詳細資訊,請參閱 AWS CloudFormation 自訂資源

使用時 AWS ParallelCluster,您只需為建立或更新 AWS ParallelCluster 映像和叢集時所建立的 AWS 資源付費。如需詳細資訊,請參閱 AWS 所使用的 服務 AWS ParallelCluster

事前準備:

使用 CloudFormation 快速建立堆疊建立叢集

在本教學課程中,您會使用快速建立堆疊來部署建立叢集和下列 AWS 資源的 CloudFormation 範本:

  • 使用 CloudFormation 快速建立 CloudFormation 堆疊所建立的根堆疊。

  • 包含預設原則、預設 VPC 設定和自訂資源提供者的巢狀 CloudFormation 堆疊。

  • 範例 AWS ParallelCluster 叢集堆疊和叢集,您可以登入並執行作業。

建立叢集 AWS CloudFormation

  1. 登入 AWS Management Console。

  2. 開啟 CloudFormation 快速建立連結,在 CloudFormation 主控台中建立下列資源:

    • 具有公用和私有子網路的 VPC 的巢狀 CloudFormation 堆疊,用於分別執行叢集頭節點和計算節點。

    • 具有用於管理叢集的 AWS ParallelCluster 自訂資源的巢狀 CloudFormation 堆疊。

    • 具有管理叢集之預設原則的巢狀 CloudFormation 堆疊。

    • 巢狀 CloudFormation 堆疊的根堆疊。

    • 具有Slurm排程器和已定義計算節點數目的 AWS ParallelCluster 叢集。

    控制台 CloudFormation 快速創建用戶界面。
  3. 在「快速建立堆疊參數」區段中,輸入下列參數的值:

    1. 在中 KeyName,輸入您的 Amazon EC2 key pair 的名稱。

    2. 對於 AvailabilityZone,選擇叢集節點的 AZ,例如,us-east-1a

  4. 核取方塊以確認頁面底部的每個存取功能。

  5. 選擇建立堆疊

  6. 等待 CloudFormation 堆棧到達狀CREATE_COMPLETE態。

使用 AWS CloudFormation 命令列介面 (CLI) 建立叢集

在本教學課程中,您會使用 AWS 命令列介面 (CLI) CloudFormation 來部署建立叢集的 CloudFormation 範本。

建立下列 AWS 資源:
  • 使用 CloudFormation 快速建立 CloudFormation 堆疊所建立的根堆疊。

  • 包含預設原則、預設 VPC 設定和自訂資源提供者的巢狀 CloudFormation 堆疊。

  • 範例 AWS ParallelCluster 叢集堆疊和叢集,您可以登入並執行作業。

以您自己的值取代以紅色反白顯示的輸入,例如金鑰配對

建立叢集 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.7.0 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: alinux2 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. 執行下列命令,Connect 至叢集頭節點:

    $ 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