本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建置自訂 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。本教學課程說明如何為這些案例建置自訂 AMI。
先決條件
-
AWS ParallelCluster 已安裝 。
-
AWS CLI 已安裝並設定 。
-
您有 Amazon EC2 金鑰對。
如何自訂 AWS ParallelCluster AMI
有兩種方式可建置自訂 AWS ParallelCluster AMI。這兩種方法之一是使用 CLI AWS ParallelCluster 建立新的 AMI。另一種方法需要您手動修改,以建置 下可用的新 AMI AWS 帳戶。
建置自訂 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-image、list-images、describe-image 和 delete-image。
-
此方法可重複。您可以重新執行它以讓 AMIs保持更新 (例如作業系統更新),然後在更新現有叢集時使用它們。
注意
如果您在 AWS 中國分割區中使用此方法,您可能會遇到網路錯誤。例如,當您從 GitHub 或作業系統儲存庫下載套件時,您可能會從 pcluster build-image
命令看到這些錯誤。如果發生這種情況,我們建議您使用下列其中一種替代方法:
-
遵循繞過此命令修改 AWS ParallelCluster AMI的方法。
-
在另一個分割區和區域中建置映像,例如
us-east-1
,然後存放還原以將其移至中國區域。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的使用 S3 存放和還原 AMI。
步驟:
-
設定您的 AWS 帳戶 登入資料,讓 AWS ParallelCluster 用戶端可以代表您呼叫 AWS API 操作。如需必要許可的清單,請參閱AWS Identity and Access Management 中的 許可 AWS ParallelCluster。
-
建立基本建置映像組態檔案。若要執行此作業,請指定InstanceType要用來建置映像的 和 ParentImage。這些是用來建立 AMI 的起點。如需選用建置參數的詳細資訊,請參閱映像組態。
Build: InstanceType:
<BUILD_INSTANCE_TYPE>
ParentImage:<BASE_AMI_ID>
-
使用 CLI 命令,從您提供做為基礎的 AWS ParallelCluster AMI 開始pcluster build-image建置 AMI。
$
pcluster build-image --image-id
IMAGE_ID
--image-configurationIMAGE_CONFIG.yaml
--regionREGION
{ "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命令參考頁面。上述命令的結果如下所示:
-
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 會執行 Image Builder 元件中定義的測試。
-
如果建置成功,則會刪除堆疊。如果建置失敗,堆疊會保留並可供檢查。
-
-
您可以執行下列命令來監控建置程序的狀態。建置完成後,您可以執行它來擷取回應中提供的 AMI ID。
$
pcluster describe-image --image-id
IMAGE_ID
--regionREGION
# 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" }
-
若要建立叢集,請在叢集組態的 CustomAmi 欄位中輸入 AMI ID。
故障診斷和監控 AMI 建立程序
影像建立會在 中完成約一小時。您可以執行 pcluster describe-image命令或日誌擷取命令來監控程序。
$
pcluster describe-image --image-id
IMAGE_ID
--regionREGION
此build-image命令會使用建置映像所需的所有 Amazon EC2 資源建立 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 分鐘後,堆疊事件會出現在與 Image Builder 建立相關的日誌事件項目中。您現在可以使用 和 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 Streams。命令可能需要幾分鐘的時間才能執行。
管理自訂 AMIs
從 AWS ParallelCluster 3.0.0 開始,在 CLI 中新增一組新的命令,以建置、監控和管理映像生命週期。如需 命令的詳細資訊,請參閱 pcluster 命令。
修改 AWS ParallelCluster AMI
此方法包含透過在官方 AWS ParallelCluster AMI 上新增自訂來修改官方 AMI。 AWS ParallelCluster AMIs 會更新為新的版本。這些 AMIs 擁有安裝和設定時, AWS ParallelCluster 運作所需的所有元件。您可以從這些作為基礎的 開始。
重點:
-
此方法比 build-image命令更快。不過,這是手動程序,無法自動重複。
-
透過此方法,您無法存取可透過 CLI 取得的日誌擷取和映像生命週期管理命令。
步驟:
-
尋找對應至您使用之特定 AWS 區域 的 AMI。若要尋找,請使用 pcluster list-official-images命令搭配
--region
參數,以選取特定 AWS 區域 和--os
和--architecture
參數,以您想要使用的作業系統和架構來篩選所需的 AMI。從輸出擷取 Amazon EC2 映像 ID。 -
登入 AWS Management Console 並開啟 Amazon EC2 主控台,網址為 https://https://console.aws.amazon.com/ec2/
。 -
在導覽窗格中,選擇影像,然後選擇 AMIs。搜尋擷取的 EC2 映像 ID,選取 AMI,然後從 AMI 選擇啟動執行個體。
-
向下捲動並選擇您的執行個體類型。
-
選擇您的金鑰對和啟動執行個體。
-
使用作業系統使用者和SSH金鑰登入您的執行個體。
-
手動自訂執行個體以符合您的需求。
-
執行下列命令來準備您的執行個體以建立 AMI。
sudo /usr/local/sbin/ami_cleanup.sh
-
從主控台中,選擇執行個體狀態和停止執行個體。
導覽至執行個體、選擇新執行個體、選取執行個體狀態和停止執行個體。
-
使用 Amazon EC2 主控台或 AWS CLI create-image 從執行個體建立新的 AMI。
從 Amazon EC2 主控台
-
在導覽窗格中,選擇 Instances (執行個體)。
-
選擇您建立和修改的執行個體。
-
在動作中,選擇映像,然後選擇建立映像。
-
選擇 Create Image (建立映像)。
-
-
在叢集組態的 CustomAmi 欄位中輸入新的 AMI ID,然後建立叢集。