本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
對擴展問題進行故障診斷
本節與使用 3.0.0 版及更新 AWS ParallelCluster 版本搭配 所安裝的叢集相關 Slurm 任務排程器。如需設定多個佇列的詳細資訊,請參閱 設定多個佇列。
如果其中一個執行中的叢集遇到問題,請在開始疑難排解之前執行下列命令,將叢集置於 STOPPED
狀態。這可避免產生任何非預期的成本。
$
pcluster update-compute-fleet --cluster-name
mycluster
\ --status STOP_REQUESTED
您可以使用 pcluster list-cluster-log-streams命令列出叢集節點可用的日誌串流,並使用其中一個失敗節點或主節點private-dns-name
的 進行篩選:
$
pcluster list-cluster-log-streams --cluster-name
mycluster
--regioneu-west-1
\ --filters 'Name=private-dns-name,Values=ip-10-0-0-101'
然後,您可以使用 pcluster get-cluster-log-events命令擷取日誌串流的內容來分析日誌串流,並將 --log-stream-name
傳遞給下列章節中提到的其中一個金鑰日誌:
$
pcluster get-cluster-log-events --cluster-name
mycluster
\ --regioneu-west-1
--log-stream-nameip-10-0-0-13.i-04e91cc1f4ea796fe.cfn-init
AWS ParallelCluster 在 CloudWatch 日誌群組中建立叢集日誌串流。您可以在 CloudWatch 主控台自訂儀表板或日誌群組 中檢視這些日誌。如需詳細資訊,請參閱 與 Amazon CloudWatch Logs 整合 和 Amazon CloudWatch 儀表板。
主題
用於偵錯的金鑰日誌
下表提供主機節點金鑰日誌的概觀:
-
/var/log/cfn-init.log
- 這是 AWS CloudFormation 初始日誌。它包含設定執行個體時執行的所有命令。使用它來疑難排解初始化問題。 -
/var/log/chef-client.log
- 這是 Chef 用戶端日誌。它包含透過 Chef/ 執行的所有命令CINC。使用它來疑難排解初始化問題。 -
/var/log/parallelcluster/slurm_resume.log
- 這是ResumeProgram
日誌。它啟動動態節點的執行個體。使用它來疑難排解動態節點啟動問題。 -
/var/log/parallelcluster/slurm_suspend.log
- 這是SuspendProgram
日誌。當動態節點的執行個體終止時,即稱為 。使用它來疑難排解動態節點終止問題。檢查此日誌時,您也應該檢查clustermgtd
日誌。 -
/var/log/parallelcluster/clustermgtd
- 這是clustermgtd
日誌。它以集中常駐程式的形式執行,管理大多數叢集操作動作。使用它來疑難排解任何啟動、終止或叢集操作問題。 -
/var/log/slurmctld.log
- 這是 Slurm control daemon log. AWS ParallelCluster doesn 不會做出擴展決策。相反地,它只會嘗試啟動資源來滿足 Slurm 要求。它適用於擴展和分配問題、任務相關問題,以及任何排程器相關的啟動和終止問題。 -
/var/log/parallelcluster/compute_console_output
- 此日誌記錄來自靜態運算節點範例子集的主控台輸出,這些節點已意外終止。如果靜態運算節點終止,且運算節點日誌無法在 中使用,請使用此日誌 CloudWatch。當您使用 Amazon EC2主控台或 AWS CLI 擷取執行個體主控台輸出時,您收到compute_console_output log
的內容相同。
以下是運算節點的金鑰日誌:
-
/var/log/cloud-init-output.log
- 這是 cloud-init日誌。它包含設定執行個體時執行的所有命令。使用它來疑難排解初始化問題。 -
/var/log/parallelcluster/computemgtd
- 這是computemgtd
日誌。它在每個運算節點上執行,以監控頭節點上clustermgtd
常駐程式離線的不常見事件中的節點。使用它來疑難排解非預期的終止問題。 -
/var/log/slurmd.log
- 這是 Slurm 運算常駐程式日誌。使用它來疑難排解初始化和運算失敗問題。
當我無法執行任務slurm_resume.log
時看到InsufficientInstanceCapacity
錯誤,或當我無法建立叢集clustermgtd.log
時看到錯誤
如果叢集使用 Slurm 排程器,您遇到容量不足的問題。如果提出執行個體啟動請求時沒有足夠的執行個體可用,則會傳回InsufficientInstanceCapacity
錯誤。
對於靜態執行個體容量,您可以在 的clustermgtd
日誌中找到 錯誤/var/log/parallelcluster/clustermgtd
。
對於動態執行個體容量,您可以在 的ResumeProgram
日誌中找到 錯誤/var/log/parallelcluster/slurm_resume.log
。
訊息看起來與下列範例類似:
An error occurred (InsufficientInstanceCapacity) when calling the RunInstances/CreateFleet operation...
根據您的使用案例,請考慮使用下列其中一種方法,以避免取得這些類型的錯誤訊息:
-
如果啟用放置群組,請將其停用。如需詳細資訊,請參閱置放群組和執行個體啟動問題。
-
為執行個體預留容量,並使用 ODCR(隨需容量預留) 啟動它們。如需詳細資訊,請參閱使用隨需容量預留啟動執行個體 (ODCR)。
-
設定具有不同執行個體類型的多個運算資源。如果您的工作負載不需要特定執行個體類型,您可以使用多個運算資源來利用快速容量不足的失敗。如需詳細資訊,請參閱Slurm叢集快速容量不足容錯移轉。
-
在相同的運算資源中設定多個執行個體類型,並利用多個執行個體類型配置。如需設定多個執行個體的詳細資訊,請參閱 使用 Slurm 進行多個實例類型分配和 Scheduling / SlurmQueues / ComputeResources / Instances。
-
透過變更叢集組態 Scheduling/ SlurmQueues / Networking / 中的子網路 ID,將佇列移至不同的可用區域SubnetIds。
-
如果您的工作負載未緊密聯結,請將佇列跨不同可用區域。如需設定多個子網路的詳細資訊,請參閱 Scheduling / SlurmQueues / Networking / SubnetIds。
對節點初始化問題進行故障診斷
本節說明如何對節點初始化問題進行疑難排解。這包括節點無法啟動、開啟電源或加入叢集的問題。
主節點
適用的日誌:
-
/var/log/cfn-init.log
-
/var/log/chef-client.log
-
/var/log/parallelcluster/clustermgtd
-
/var/log/parallelcluster/slurm_resume.log
-
/var/log/slurmctld.log
檢查 /var/log/cfn-init.log
和 /var/log/chef-client.log
日誌或對應的日誌串流。這些日誌包含設定主機節點時執行的所有動作。在設定期間發生的大多數錯誤都應在/var/log/chef-client.log
日誌中包含錯誤訊息。如果在叢集的組態中指定 OnNodeStart
或 OnNodeConfigured
指令碼,請仔細檢查指令碼是否透過日誌訊息成功執行。
建立叢集時,主機節點必須等待運算節點加入叢集,才能加入叢集。因此,如果運算節點無法加入叢集,則主機節點也會失敗。您可以根據使用的運算備註類型,遵循下列其中一組程序,以對此類問題進行疑難排解:
運算節點
-
適用的日誌:
-
/var/log/cloud-init-output.log
-
/var/log/slurmd.log
-
-
如果啟動運算節點,請先檢查
/var/log/cloud-init-output.log
,其中應包含類似於主機節點上日誌的設定/var/log/chef-client.log
日誌。在設定期間發生的大多數錯誤都應在/var/log/cloud-init-output.log
日誌中顯示錯誤訊息。如果在叢集組態中指定預先安裝或安裝後指令碼,請檢查它們是否已成功執行。 -
如果您使用自訂AMI,並修改 Slurm 組態,則可能會有 Slurm相關錯誤,導致運算節點無法加入叢集。如需排程器相關錯誤,請檢查
/var/log/slurmd.log
日誌。
動態運算節點:
-
搜尋運算節點名稱的
ResumeProgram
日誌 (/var/log/parallelcluster/slurm_resume.log
),以查看是否ResumeProgram
曾經使用節點呼叫 。(如果ResumeProgram
從未呼叫 ,您可以檢查slurmctld
日誌 (/var/log/slurmctld.log
) 以確定是否 Slurm 曾經嘗試ResumeProgram
使用節點呼叫 )。 -
請注意,不正確的 許可
ResumeProgram
可能會導致 靜音ResumeProgram
失敗。如果您使用自訂AMI並修改ResumeProgram
設定,請檢查ResumeProgram
是否屬於slurm
使用者,並具有744
(rwxr--r--
) 許可。 -
如果
ResumeProgram
已呼叫 ,請檢查是否已為節點啟動執行個體。如果未啟動任何執行個體,您可以看到描述啟動失敗的錯誤訊息。 -
如果執行個體已啟動,則設定程序期間可能會發生問題。您應該會從
ResumeProgram
日誌中看到對應的私有 IP 地址和執行個體 ID。此外,您可以查看特定執行個體的對應設定日誌。如需使用運算節點疑難排解設定錯誤的詳細資訊,請參閱下一節。
靜態運算節點:
-
檢查
clustermgtd
(/var/log/parallelcluster/clustermgtd
) 日誌,查看是否啟動節點的執行個體。如果未啟動,則應有明確錯誤訊息詳細說明啟動失敗。 -
如果啟動執行個體,則設定過程中會出現一些問題。您應該會從
ResumeProgram
日誌中看到對應的私有 IP 地址和執行個體 ID。此外,您可以查看特定執行個體的對應設定日誌。
Spot 執行個體支援的運算節點:
-
如果這是您第一次使用 Spot 執行個體,且任務仍處於 PD (待定狀態),請再次檢查
/var/log/parallelcluster/slurm_resume.log
檔案。您可能會發現如下錯誤:2022-05-20 13:06:24,796 - [slurm_plugin.common:add_instances_for_nodes] - ERROR - Encountered exception when launching instances for nodes (x1) ['spot-dy-t2micro-2']: An error occurred (AuthFailure.ServiceLinkedRoleCreationNotPermitted) when calling the RunInstances operation: The provided credentials do not have permission to create the service-linked role for Amazon EC2 Spot Instances.
使用 Spot 執行個體時,
AWSServiceRoleForEC2Spot
服務連結角色必須存在於您的帳戶中。若要使用 在帳戶中建立此角色 AWS CLI,請執行下列命令:$
aws iam create-service-linked-role --aws-service-name spot.amazonaws.com
如需詳細資訊,請參閱 Amazon AWS ParallelCluster 使用者指南 使用 競價型執行個體 中的 Spot 執行個體請求使用者指南和服務連結角色。 EC2
對非預期節點替換和終止進行故障診斷
本節繼續探索如何疑難排解節點相關問題,特別是當節點意外更換或終止時。
-
適用的日誌:
-
/var/log/parallelcluster/clustermgtd
(主節點) -
/var/log/slurmctld.log
(主節點) -
/var/log/parallelcluster/computemgtd
(運算節點)
-
節點意外更換或終止
-
檢查
clustermgtd
日誌 (/var/log/parallelcluster/clustermgtd
) 中的 是否clustermgtd
取代或終止節點。請注意,clustermgtd
會處理所有一般節點維護動作。 -
如果
clustermgtd
已取代或終止節點,則應該會出現一則訊息,詳細說明為什麼在節點上採取此動作。如果原因與排程器相關 (例如,因為節點位於 中DOWN
),請在slurmctld
日誌中查看詳細資訊。如果原因與 Amazon EC2相關,應該會有資訊性訊息詳細說明需要替換的 Amazon EC2相關問題。 -
如果
clustermgtd
未終止節點,請先檢查這是否為 Amazon 的預期終止EC2,更具體地說是位置終止。如果clustermgtd
被判定為運作狀態不佳,computemgtd
則在運算節點上執行的 也可以終止節點。檢查computemgtd
日誌 (/var/log/parallelcluster/computemgtd
) 以查看節點是否computemgtd
終止。
節點失敗
-
簽入
slurmctld
日誌 (/var/log/slurmctld.log
) 以查看任務或節點失敗的原因。請注意,如果節點失敗,任務會自動重新排入佇列。 -
如果
slurm_resume
報告啟動節點,並在幾分鐘後clustermgtd
報告EC2該節點的 Amazon 中沒有對應的執行個體,則節點可能會在設定期間失敗。若要從運算 (/var/log/cloud-init-output.log
) 擷取日誌,請執行下列步驟:-
提交任務以允許 Slurm 啟動新的節點。
-
等待運算節點啟動。
-
修改執行個體啟動的關閉行為,以便停止失敗的運算節點,而不是終止。
$
aws ec2 modify-instance-attribute \ --instance-id
i-1234567890abcdef0
\ --instance-initiated-shutdown-behavior "{\"Value\": \"stop\"}" -
啟用終止保護。
$
aws ec2 modify-instance-attribute \ --instance-id
i-1234567890abcdef0
\ --disable-api-termination -
標記節點以方便識別。
$
aws ec2 create-tags \ --resources
i-1234567890abcdef0
\ --tags Key=Name,Value=QUARANTINED-Compute -
變更
parallelcluster:cluster-name
標籤,從叢集中分離節點。$
aws ec2 create-tags \ --resources
i-1234567890abcdef0
\ --tags Key=parallelcluster:clustername,Value=QUARANTINED-ClusterName -
使用此命令從節點擷取主控台輸出。
$
aws ec2 get-console-output --instance-id
i-1234567890abcdef0
--output text
-
取代、終止或關閉有問題的執行個體和節點
-
適用的日誌:
-
/var/log/parallelcluster/clustermgtd
(主節點) -
/var/log/parallelcluster/slurm_suspend.log
(主節點)
-
-
在大多數情況下, 會
clustermgtd
處理所有預期的執行個體終止動作。請檢查clustermgtd
日誌,了解為何無法取代或終止節點。 -
對於失敗的動態節點SlurmSettings 屬性,請檢查
SuspendProgram
日誌,查看SuspendProgram
是否slurmctld
以特定節點作為引數呼叫 。請注意, 實際上SuspendProgram
不會執行任何動作。相反地,它只會在呼叫時記錄。所有執行個體終止和NodeAddr
重設都由 完成clustermgtd
。SlurmSuspendTimeout
會自動將節點置於 之後POWER_SAVING
的狀態。 -
如果運算節點因開機失敗而持續失敗,請確認是否在Slurm叢集保護模式啟用的情況下啟動。如果未啟用受保護模式,請修改受保護模式設定以啟用受保護模式。對引導指令碼進行疑難排解和修正。
佇列 (分割區) Inactive
狀態
如果您執行 sinfo
且輸出顯示AVAIL
狀態為 的佇列inact
,則叢集可能Slurm叢集保護模式已啟用,且佇列已設定為預先定義時段INACTIVE
的狀態。
對其他已知節點和任務問題進行故障診斷
另一種已知問題類型是 AWS ParallelCluster 可能無法配置任務或做出擴展決策。對於此類問題, AWS ParallelCluster 僅根據 啟動、終止或維護資源 Slurm 指示。針對這些問題,請檢查slurmctld
日誌進行故障診斷。