本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
更新 AWS PCS 叢集的排程器版本
使用這些步驟來更新叢集上的排程器版本。根據您是否可以容忍任務中斷,有兩個選項。如需選擇選項的詳細資訊,請參閱在 AWS PCS 中更新叢集的排程器版本。
注意
建議您先在非生產叢集上測試新的 AMI 和更新程序,再將變更套用至生產環境。
選項 1:滾動更新
當機群持續執行時,控制器會更新。現有節點會繼續使用先前的 Slurm 版本,直到耗盡並取代為止。更新後啟動的新節點會使用目標版本。執行中的任務不會中斷。
使用時機:
-
叢集控制器位於 Slurm 24.05 版或更新版本。
步驟 0 — 檢查啟動狀態
您的叢集正在執行控制器版本 "A" (例如 24.11),而您想要遷移至版本 "B" (例如 25.11)。確認機群中的所有運算節點都從叢集節點使用此命令執行相同的主要版本:
scontrol show nodes | grep "Version=" # Example output: # NodeAddr=compute-1 NodeHostName=compute-1 Version=24.11.7 # NodeAddr=compute-2 NodeHostName=compute-2 Version=24.11.7
確認運算節點上的 AWS PCS 代理程式版本。使用 Systems Manager 連線至節點,並檢查引導日誌:
grep "PCS Agent version" /var/log/amazon/pcs/bootstrap.log | tail -1 # Example output: # /opt/aws/pcs/bin/pcs_bootstrap_init.sh: INFO: Bootstrap starting with PCS Agent version: 1.3.2-1
滾動更新在所有運算節點 AMI 上都需要 AWS PCS 代理程式 1.4.0 版或更新版本。 AMIs 如需詳細資訊,請參閱AWS PCS 代理程式版本。
步驟 1 — 準備目標 AMIs
建置或識別包含 Slurm B 版和最新 AWS PCS 代理程式AMIs。
-
您可以使用最新的 PCS 就緒 DLAMIs。這類 AMIs隨附最新三個支援的 Slurm 版本。如需詳細資訊,請參閱搭配 PCS 使用 AWS PCS 就緒 DLAMI。
-
您可以依照 Slurm 套件和 AWS PCS 代理程式的安裝步驟,建置自訂 AMI。如需詳細資訊,請參閱AWS PCS 的自訂 Amazon Machine Image AMIs)。
-
我們不建議將 AWS PCS 範例 AMI 用於生產用途。這些 AMIs僅用於測試。
注意
相同的 AMI 可以包含多個 Slurm 版本。 AWS PCS 會自動選取符合控制器的版本。安裝其他版本不會造成問題。
步驟 2 — 更新叢集控制器
呼叫 ,UpdateCluster並將 scheduler.version 設定為版本 B。
在此操作期間,控制器會短暫無法使用:
-
在運算節點上執行的任務會繼續執行。
-
在更新完成之前,新的任務提交和排程器命令都無法使用。
-
自動擴展會暫停,直到叢集返回 為止
ACTIVE。
注意
當機群仍包含 A 版上的節點時,請勿新增 B 版特定的 Slurm 設定。組態會分佈到所有節點;舊的 slurmd可能無法辨識新參數。
如果叢集未在 30 分鐘內返回 ACTIVE或 UPDATE_FAILED ,請聯絡 AWS Support 尋求協助。
步驟 3 — 更新運算節點群組
針對每個運算節點群組,設定具有目標 Slurm 版本的新 AMI:
aws pcs update-compute-node-group \ --cluster-identifiercluster-id\ --compute-node-group-identifiercng-id\ --ami-idnew-ami-id
AWS PCS 會將執行先前版本的節點設定為 DRAIN 狀態。耗盡的節點完成目前的任務後, AWS PCS 會終止節點,並將其取代為執行 Slurm B 版的新節點。
步驟 4 — 驗證 Slurm 版本 B 上的一致機群
監控機群轉換。從叢集節點中,檢查所有節點的版本摘要:
scontrol show nodes | grep "Version=" | awk -F'=' '{print $NF}' | sort | uniq -c
檢查處於 DRAIN 狀態的節點及其版本:
scontrol show nodes | awk '/NodeName=/{name=$1; ver=""} /Version=/{ver=$NF} /State=.*DRAIN/{print name, ver}'
檢查所有作用中節點的版本:
scontrol show nodes | awk '/NodeName=/{name=$1; ver=""} /Version=/{ver=$NF} /State=/{if (ver) print name, ver}'
當版本摘要僅顯示目標版本且沒有節點保持 DRAIN或 DRAINING 狀態時,更新即完成。在 AWS PCS 啟動版本之前,POWERED_DOWN處於 狀態的節點不會報告版本。
選項 2:全機群維護停止
您可以在更新控制器之前終止整個機群,然後使用目標 Slurm 版本從新的 AMI 向上擴展。此程序較簡單,但會終止所有節點和執行中的任務。
使用時機:
-
叢集控制器位於 23.11 版 (選項 1 不適用於 23.11 叢集)。
注意
一次終止整個機群會增加擴展時容量不足錯誤的可能性。考慮在離峰時間使用預留容量或排程。
步驟 0 — 檢查啟動狀態
您的叢集正在執行控制器版本 "A" (例如 24.11),而您想要遷移至版本 "B" (例如 25.11)。確認機群中的所有運算節點都從叢集節點使用此命令執行相同的主要版本:
scontrol show nodes | grep "Version=" # Example output: # NodeAddr=compute-1 NodeHostName=compute-1 Version=24.11.7 # NodeAddr=compute-2 NodeHostName=compute-2 Version=24.11.7
確認運算節點上的 AWS PCS 代理程式版本。使用 Systems Manager 連線至節點,並檢查引導日誌:
grep "PCS Agent version" /var/log/amazon/pcs/bootstrap.log | tail -1 # Example output: # /opt/aws/pcs/bin/pcs_bootstrap_init.sh: INFO: Bootstrap starting with PCS Agent version: 1.3.2-1
在目標 AMIs 上使用最新的 AWS PCS 代理程式。如需詳細資訊,請參閱AWS PCS 代理程式版本。
步驟 1 — 準備目標 AMIs
建置或識別包含 Slurm B 版和最新 AWS PCS 代理程式AMIs。
-
您可以使用最新的 PCS 就緒 DLAMIs。這類 AMIs隨附最新三個支援的 Slurm 版本。如需詳細資訊,請參閱搭配 PCS 使用 AWS PCS 就緒 DLAMI。
-
您可以依照 Slurm 套件和 AWS PCS 代理程式的安裝步驟,建置自訂 AMI。如需詳細資訊,請參閱AWS PCS 的自訂 Amazon Machine Image AMIs)。
-
我們不建議 AWS PCS 範例 AMI 用於生產用途。這些 AMIs僅用於測試。
步驟 2 — 向下擴展整個機群
記錄maxNodeCount每個運算節點群組的目前 minNodeCount和 - 您將在步驟 4 中還原這些節點。
for cng in $(aws pcs list-compute-node-groups --cluster-identifiercluster-id--query "computeNodeGroups[].id" --output text); do aws pcs get-compute-node-group \ --cluster-identifiercluster-id\ --compute-node-group-identifier "$cng" \ --query "computeNodeGroup.{Id:id,AmiId:amiId,Min:scalingConfiguration.minInstanceCount,Max:scalingConfiguration.maxInstanceCount}" \ --output table done
警告
下列操作會終止所有執行中的節點及其任務。
在每個運算節點群組0上將 minNodeCount和 maxNodeCount 設定為 :
aws pcs update-compute-node-group \ --cluster-identifiercluster-id\ --compute-node-group-identifiercng-id\ --scaling-configuration '{"minNodeCount": 0, "maxNodeCount": 0}'
在繼續之前,請確認沒有標記為aws:pcs:cluster-id符合叢集的執行個體正在執行:
aws ec2 describe-instances \ --filters "Name=tag:aws:pcs:cluster-id,Values=cluster-id" \ --query "Reservations[].Instances[].[InstanceId,ImageId,State.Name]" \ --output table
步驟 3 — 更新叢集控制器
步驟 4 — 更新運算節點群組和還原容量
對於每個運算節點群組,設定新的 AMI,並還原原始容量下限和上限:
aws pcs update-compute-node-group \ --cluster-identifiercluster-id\ --compute-node-group-identifiercng-id\ --ami-idnew-ami-id\ --scaling-configuration '{"minNodeCount":previous-min, "maxNodeCount":previous-max}'
叢集會向上擴展。所有新節點都會使用最新的 AWS PCS 代理程式執行 Slurm 版本 B。
範例:跨多個版本更新
如果目標版本超出目前版本的相容性時段,您必須將控制器移至一或多個中繼版本,一次更新一個躍點。每個躍點都必須以目前控制器版本的相容性時段內支援的版本為目標。
由於 會在更新控制器之前將機群選項 2:全機群維護停止擴展為零,因此控制器在版本之間移動時不會執行運算節點。因此,您的 AMIs可以直接使用最終目標版本,每個躍點只會重複控制器更新 (步驟 3)。
下列範例使用選項 2 程序,將叢集從 23.11 更新至 25.11。 23.11 超出 25.11 的相容性時段,因此控制器會在兩個躍點中更新 (23.11 至 25.05,然後 25.05 至 25.11)。遵循選項 2 步驟,步驟 3 在每個躍點分割為一個更新:
-
步驟 1 — 準備目標 AMIs。使用最終版本 (25.11) 和最新的 AWS PCS 代理程式建置或識別 AMIs。請參閱 步驟 1 — 準備目標 AMIs。
-
步驟 2 — 縮減整個機群。記錄目前容量 (請參閱 步驟 2 — 向下擴展整個機群),然後將每個運算節點群組設為零。
aws pcs update-compute-node-group \ --cluster-identifiermy-cluster\ --compute-node-group-identifiermy-cng\ --scaling-configuration '{"minNodeCount": 0, "maxNodeCount": 0}' -
步驟 3a:將控制器從 23.11 更新至 25.05。等待叢集返回
ACTIVE。aws pcs update-cluster --cluster-identifiermy-cluster\ --scheduler version=25.05 -
步驟 3b — 將控制器從 25.05 更新至 25.11。等待叢集返回
ACTIVE。aws pcs update-cluster --cluster-identifiermy-cluster\ --scheduler version=25.11 -
步驟 4 — 更新運算節點群組並還原容量。在每個運算節點群組上設定 25.11 AMI,並還原原始容量限制 (請參閱 步驟 4 — 更新運算節點群組和還原容量)。
aws pcs update-compute-node-group \ --cluster-identifiermy-cluster\ --compute-node-group-identifiermy-cng\ --ami-idami-0123456789abcdef0\ --scaling-configuration '{"minNodeCount":previous-min, "maxNodeCount":previous-max}'
注意
每個控制器跳轉必須位於前一個控制器跳轉的相容性時段內的版本。若要尋找有效的中繼版本,請參閱 版本相容性。機群透過步驟 3a 和 3b 保持為零,因此不需要中繼 AMI 更新。