建置自訂 AWS ParallelCluster AMI - AWS ParallelCluster

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

建置自訂 AWS ParallelCluster AMI

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

此 PCUI 建立在無伺服器架構上,您可以在 AWS 免費方案類別中用於大多數情況。如需詳細資訊,請參閱PCUI成本

重要

如果您建置自訂 AMI,則必須在每個新 AWS ParallelCluster 版本中重複用來建立自訂 AMI 的步驟。

在進一步閱讀之前,我們建議您先檢閱 自訂引導動作區段。判斷您欲進行的修改是否可以搭配未來的 AWS ParallelCluster 版本進行指令碼編寫和支援。

雖然一般情況下建置自訂 AMI 並不理想,但有些特定案例 AWS ParallelCluster 需要建置自訂 AMI for。本教學課程說明如何為這些案例建置自訂 AMI。

必要條件

如何自訂 AWS ParallelCluster AMI

有兩種方法可以建置 custom AWS ParallelCluster AMI。這兩種方法之一是使用 AMI 建立新的 AWS ParallelCluster CLI。另一種方法需要您手動修改,以建置可在 下使用的新 AMI AWS 帳戶。

建置 custom AWS ParallelCluster AMI

如果您有自訂的 AMI 和軟體,您可以在其 AWS ParallelCluster 上套用 所需的變更。 AWS ParallelCluster 依賴 EC2 Image Builder 服務來建置自訂的 AMIs。如需詳細資訊,請參閱映像建置器使用者指南

重點:

  • 程序大約需要 1 小時。如果建置時間要安裝其他 Build /Components,則此時間可能會有所不同。

  • AMI 會加上主要元件的版本標籤。其中包括核心、排程器和 EFA 驅動程式。元件版本的子集也會在 AMI 描述中報告。

  • 從 AWS ParallelCluster 3.0.0 開始,一組新的 CLI 命令可用來管理映像的生命週期。其中包括 build-imagelist-imagesdescribe-imagedelete-image

  • 此方法可重複。您可以重新執行它以保持 AMIs 更新 (例如作業系統更新),然後在更新現有叢集時使用它們。

注意

如果您在 AWS 中國分割區中使用此方法,您可能會遇到網路錯誤。例如,當您從 GitHub 或作業系統儲存庫下載套件時,您可能會從 pcluster build-image命令看到這些錯誤。如果發生這種情況,我們建議您使用下列其中一種替代方法:

  1. 遵循繞過此命令修改 an AWS ParallelCluster AMI的方法。

  2. 在另一個分割區和區域中建置映像,例如 us-east-1,然後存放還原以將其移至中國區域。如需詳細資訊,請參閱《Amazon AMI 使用者指南》中的使用 S3 存放和還原 Word。 EC2

步驟:

  1. 設定您的 AWS 帳戶 登入資料,讓 AWS ParallelCluster 用戶端可以代表您呼叫 AWS API 操作。如需必要許可的清單,請參閱AWS Identity and Access Management 權限 AWS ParallelCluster

  2. 建立基本建置映像組態檔案。若要執行此作業,請指定InstanceType要用來建置映像的 和 ParentImage。這些是用來建立 AMI 的起點。如需選用建置參數的詳細資訊,請參閱映像組態

    Build: InstanceType: <BUILD_INSTANCE_TYPE> ParentImage: <BASE_AMI_ID>
  3. 使用 CLI 命令從您提供做為基礎的 AMI 開始pcluster build-image建置 an AWS ParallelCluster AMI。

    $ pcluster build-image --image-id IMAGE_ID --image-configuration IMAGE_CONFIG.yaml --region REGION { "image": { "imageId": "IMAGE_ID", "imageBuildStatus": "BUILD_IN_PROGRESS", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:us-east-1:123456789012:stack/IMAGE_ID/abcd1234-ef56-gh78-ij90-1234abcd5678", "region": "us-east-1", "version": "3.7.0" } }
    警告

    pcluster build-image 使用預設的 VPC。如果您使用 AWS Control Tower 或 AWS 登陸區域刪除預設 VPC,則必須在映像組態檔案中指定子網路 ID。如需詳細資訊,請參閱SubnetId

    如需其他參數的清單,請參閱pcluster build-image命令參考頁面。上述命令的結果如下所示:

    • A CloudFormation 堆疊是根據映像組態建立。堆疊包含建置所需的所有 EC2 Image Builder 資源。

    • 建立的資源包含自訂映像建置器 AWS ParallelCluster 元件可以新增至的官方映像建置器元件。若要了解如何建立自訂元件,請參閱 HPC for Public Sector Customer Workshop 中的自訂AMIs範例

    • EC2 Image Builder 會啟動建置執行個體、套用 AWS ParallelCluster 技術指南、安裝 AWS ParallelCluster 軟體堆疊,以及執行必要的組態任務。 AWS ParallelCluster 技術指南用於建置和引導 AWS ParallelCluster。

    • 執行個體會停止,並從中建立新的 AMI。

    • 另一個執行個體是從新建立的 AMI 啟動。在測試階段,EC2 Image Builder 會執行映像建置器元件中定義的測試。

    • 如果建置成功,則會刪除堆疊。如果建置失敗,堆疊會保留並可供檢查。

  4. 您可以執行下列命令來監控建置程序的狀態。建置完成後,您可以執行它來擷取回應中提供的 AMI ID。

    $ pcluster describe-image --image-id IMAGE_ID --region REGION # BEFORE COMPLETE { "imageConfiguration": { "url": "https://parallelcluster-1234abcd5678efgh-v1-do-not-delete.s3.amazonaws.com/parallelcluster/3.7.0/images/IMAGE_ID-abcd1234efgh5678/configs/image-config.yaml?...", }, "imageId": "IMAGE_ID", "imagebuilderImageStatus": "BUILDING", "imageBuildStatus": "BUILD_IN_PROGRESS", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:us-east-1:123456789012:stack/IMAGE_ID/abcd1234-ef56-gh78-ij90-1234abcd5678", "region": "us-east-1", "version": "3.7.0", "cloudformationStackTags": [ { "value": "3.7.0", "key": "parallelcluster:version" }, { "value": "IMAGE_ID", "key": "parallelcluster:image_name" }, ... ], "imageBuildLogsArn": "arn:aws:logs:us-east-1:123456789012:log-group:/aws/imagebuilder/ParallelClusterImage-IMAGE_ID", "cloudformationStackCreationTime": "2022-04-05T21:36:26.176Z" } # AFTER COMPLETE { "imageConfiguration": { "url": "https://parallelcluster-1234abcd5678efgh-v1-do-not-delete.s3.us-east-1.amazonaws.com/parallelcluster/3.7.0/images/IMAGE_ID-abcd1234efgh5678/configs/image-config.yaml?Signature=..." }, "imageId": "IMAGE_ID", "imageBuildStatus": "BUILD_COMPLETE", "region": "us-east-1", "ec2AmiInfo": { "amiName": "IMAGE_ID 2022-04-05T21-39-24.020Z", "amiId": "ami-1234stuv5678wxyz", "description": "AWS ParallelCluster AMI for alinux2, kernel-4.14.238-182.422.amzn2.x86_64, lustre-2.10.8-5.amzn2.x86_64, efa-1.13.0-1.amzn2.x86_64, dcv-2021.1.10598-1.el7.x86_64, slurm-20-11-8-1", "state": "AVAILABLE", "tags": [ { "value": "2021.3.11591-1.el7.x86_64", "key": "parallelcluster:dcv_version" }, ... ], "architecture": "x86_64" }, "version": "3.7.0" }
  5. 若要建立叢集,請在叢集組態的 CustomAmi 欄位中輸入 AMI ID。

對 AMI 建立程序進行故障診斷和監控

影像建立會在 中完成約一小時。您可以執行 pcluster describe-image命令或日誌擷取命令來監控程序。

$ pcluster describe-image --image-id IMAGE_ID --region REGION

build-image命令會使用建置映像所需的所有 Amazon EC2 資源建立 a CloudFormation 堆疊,並啟動 EC2 Image Builder 程序。

執行 build-image命令後,可以使用 擷取 CloudFormation 堆疊事件pcluster get-image-stack-events。您可以使用 --query 參數篩選結果,以查看最新的事件。如需詳細資訊,請參閱AWS Command Line Interface 《 使用者指南》中的篩選 AWS CLI 輸出

$ pcluster get-image-stack-events --image-id IMAGE_ID --region REGION --query "events[0]" { "eventId": "ParallelClusterImage-CREATE_IN_PROGRESS-2022-04-05T21:39:24.725Z", "physicalResourceId": "arn:aws:imagebuilder:us-east-1:123456789012:image/parallelclusterimage-IMAGE_ID/3.7.0/1", "resourceStatus": "CREATE_IN_PROGRESS", "resourceStatusReason": "Resource creation Initiated", "resourceProperties": "{\"InfrastructureConfigurationArn\":\"arn:aws:imagebuilder:us-east-1:123456789012:infrastructure-configuration/parallelclusterimage-abcd1234-ef56-gh78-ij90-1234abcd5678\",\"ImageRecipeArn\":\"arn:aws:imagebuilder:us-east-1:123456789012:image-recipe/parallelclusterimage-IMAGE_ID/3.7.0\",\"DistributionConfigurationArn\":\"arn:aws:imagebuilder:us-east-1:123456789012:distribution-configuration/parallelclusterimage-abcd1234-ef56-gh78-ij90-1234abcd5678\",\"Tags\":{\"parallelcluster:image_name\":\"IMAGE_ID\",\"parallelcluster:image_id\":\"IMAGE_ID\"}}", "stackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/IMAGE_ID/abcd1234-ef56-gh78-ij90-1234abcd5678", "stackName": "IMAGE_ID", "logicalResourceId": "ParallelClusterImage", "resourceType": "AWS::ImageBuilder::Image", "timestamp": "2022-04-05T21:39:24.725Z" }

約 15 分鐘後,堆疊事件會出現在與映像建置器建立相關的日誌事件項目中。您現在可以使用 和 pcluster get-image-log-events命令列出映像日誌串流pcluster list-image-log-streams並監控映像建置器步驟。

$ pcluster list-image-log-streams --image-id IMAGE_ID --region REGION \ --query 'logStreams[*].logStreamName' "3.7.0/1" ] $ pcluster get-image-log-events --image-id IMAGE_ID --region REGION \ --log-stream-name 3.7.0/1 --limit 3 { "nextToken": "f/36295977202298886557255241372854078762600452615936671762", "prevToken": "b/36295977196879805474012299949460899222346900769983430672", "events": [ { "message": "ExecuteBash: FINISHED EXECUTION", "timestamp": "2022-04-05T22:13:26.633Z" }, { "message": "Document arn:aws:imagebuilder:us-east-1:123456789012:component/parallelclusterimage-test-abcd1234-ef56-gh78-ij90-1234abcd5678/3.7.0/1", "timestamp": "2022-04-05T22:13:26.741Z" }, { "message": "TOE has completed execution successfully", "timestamp": "2022-04-05T22:13:26.819Z" } ] }

繼續檢查 describe-image命令,直到您看到 BUILD_COMPLETE 狀態為止。

$ pcluster describe-image --image-id IMAGE_ID --region REGION { "imageConfiguration": { "url": "https://parallelcluster-1234abcd5678efgh-v1-do-not-delete.s3.us-east-1.amazonaws.com/parallelcluster/3.7.0/images/IMAGE_ID-abcd1234efgh5678/configs/image-config.yaml?Signature=..." }, "imageId": "IMAGE_ID", "imageBuildStatus": "BUILD_COMPLETE", "region": "us-east-1", "ec2AmiInfo": { "amiName": "IMAGE_ID 2022-04-05T21-39-24.020Z", "amiId": "ami-1234stuv5678wxyz", "description": "AWS ParallelCluster AMI for alinux2, kernel-4.14.238-182.422.amzn2.x86_64, lustre-2.10.8-5.amzn2.x86_64, efa-1.13.0-1.amzn2.x86_64, dcv-2021.1.10598-1.el7.x86_64, slurm-20-11-8-1", "state": "AVAILABLE", "tags": [ { "value": "2021.3.11591-1.el7.x86_64", "key": "parallelcluster:dcv_version" }, ... ], "architecture": "x86_64" }, "version": "3.7.0" }

如果您需要對自訂 AMI 建立問題進行故障診斷,請建立映像日誌的封存,如下列步驟所述。

--output 參數而定,可以將日誌封存在 Amazon S3 儲存貯體或本機檔案中。

$ pcluster export-image-logs --image-id IMAGE_ID --region REGION \ --bucket BUCKET_NAME --bucket-prefix BUCKET_FOLDER { "url": "https://BUCKET_NAME.s3.us-east-1.amazonaws.com/BUCKET-FOLDER/IMAGE_ID-logs-202209071136.tar.gz?AWSAccessKeyId=..." } $ pcluster export-image-logs --image-id IMAGE_ID \ --region REGION --bucket BUCKET_NAME --bucket-prefix BUCKET_FOLDER --output-file /tmp/archive.tar.gz { "path": "/tmp/archive.tar.gz" }

封存包含與映像建置器程序和 AWS CloudFormation 堆疊事件相關的 CloudWatch Logs 串流。命令可能需要幾分鐘的時間才能執行。

管理自訂AMIs

從 AWS ParallelCluster 3.0.0 開始,在 CLI 中新增了一組新的命令來建置、監控和管理映像生命週期。如需命令的詳細資訊,請參閱叢集命令

修改 an AWS ParallelCluster AMI

此方法包含透過在 official AWS ParallelCluster AMI 上新增自訂來修改 officialWord。base AWS ParallelCluster AMIs 會更新為新的版本。這些 AMIs 具有安裝和設定時, AWS ParallelCluster 運作所需的所有元件。您可以從其中一個作為基礎開始。

重點:

  • 此方法比 build-image命令更快。不過,這是手動程序,無法自動重複。

  • 透過此方法,您無法存取 CLI 提供的日誌擷取和映像生命週期管理命令。

步驟:

New Amazon EC2 console
  1. 尋找對應至您使用之特定 AWS 區域 的 AMI。若要尋找,請使用 pcluster list-official-images命令搭配 --region 參數,以選取特定 AWS 區域 和 --os--architecture 參數,以您想要使用的作業系統和架構來篩選所需 AMI。從輸出擷取 Amazon EC2 Image ID。

  2. 登入 AWS Management Console 並在 EC2 開啟 Amazon https://console.aws.amazon.com/ec2/ 主控台。

  3. 在導覽窗格中,選擇影像,然後選擇 AMIs。搜尋擷取的 EC2 Image ID,選取 AMI,然後從 AMI 中選擇啟動執行個體

  4. 向下捲動並選擇執行個體類型

  5. 選擇您的金鑰對啟動執行個體

  6. 使用作業系統使用者和 登入您的執行個體 SSH 金鑰。

  7. 手動自訂執行個體以符合您的需求。

  8. 執行下列命令來準備您的執行個體以建立 AMI。

    sudo /usr/local/sbin/ami_cleanup.sh
  9. 從主控台選擇執行個體狀態停止執行個體

    導覽至執行個體、選擇新執行個體、選取執行個體狀態停止執行個體

  10. 使用 Amazon AMI 主控台或 AWS CLI create-image 從執行個體建立新的 EC2。

    從 Amazon EC2 主控台
    1. 在導覽窗格中,選擇 Instances (執行個體)

    2. 選擇您建立和修改的執行個體。

    3. 動作中,選擇映像,然後選擇建立映像

    4. 選擇 Create Image (建立映像)

  11. 在叢集組態的 CustomAmi 欄位中輸入新的 AMI ID,然後建立叢集。

Old Amazon EC2 console
  1. 尋找對應至您使用之特定 AWS 區域 的 AWS ParallelCluster AMI。若要尋找,您可以使用 pcluster list-official-images命令搭配 --region 參數,以選取特定 AWS 區域 和 --os--architecture 參數,以您想要使用的作業系統和架構來篩選所需 AMI。您可以從輸出擷取 Amazon EC2 Image ID。

  2. 登入 AWS Management Console 並在 EC2 開啟 Amazon https://console.aws.amazon.com/ec2/ 主控台。

  3. 在導覽窗格中,選擇影像,然後選擇 AMIs。設定公開映像的篩選條件,並搜尋擷取的 EC2 映像 ID,選取 AMI,然後選擇啟動

  4. 選擇您的執行個體類型,然後選取下一步:設定執行個體詳細資訊檢閱並啟動以啟動執行個體。

  5. 選擇啟動、選取您的金鑰對啟動執行個體

  6. 使用作業系統使用者和 SSH 金鑰登入您的執行個體。如需詳細資訊,請導覽至執行個體,選取新的執行個體並連線

  7. 手動自訂執行個體以符合您的需求。

  8. 執行下列命令來準備您的執行個體以建立 AMI:

    sudo /usr/local/sbin/ami_cleanup.sh
  9. 在 Amazon EC2 主控台中,選擇導覽窗格中的執行個體,選擇您的新執行個體,然後選擇動作執行個體狀態停止

  10. 使用 Amazon AMI 主控台或 AWS CLI create-image 從執行個體建立新的 EC2。

    從 Amazon EC2 主控台
    1. 在導覽窗格中,選擇 Instances (執行個體)

    2. 選擇您建立和修改的執行個體。

    3. 動作中,選擇映像,然後選擇建立映像

    4. 選擇 Create Image (建立映像)

  11. 在叢集組態的 CustomAmi 欄位中輸入新的 AMI ID,然後建立叢集。