本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
排解擴展問題
本節與使用 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 Amazon Amazon CloudWatch 的整合 及 Amazon CloudWatch 儀表。
主題
調試的關鍵日誌
下表提供標頭節點的主要記錄檔概觀:
-
/var/log/cfn-init.log
-這是 AWS CloudFormation 初始化記錄檔。它包含了設置實例時運行的所有命令。使用它來疑難排解初始化問題。 -
/var/log/chef-client.log
-這是廚師客戶記錄 它包含了通過廚師/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控制守護程序日誌。 AWS ParallelCluster 不會做出縮放決策。相反,它只會嘗試啟動資源以滿足Slurm需求。它對於擴展和配置問題、工作相關問題以及任何排程器相關的啟動和終止問題都很有用。 -
/var/log/parallelcluster/compute_console_output
-此記錄會記錄來自意外終止之靜態運算節點範例子集的主控台輸出。如果靜態運算節點終止,且中沒有計算節點記錄檔,請使用此記錄檔 CloudWatch。使用 Amazon EC2 主控台或擷取執行個體主控台輸出時,您收 AWS CLI 到的compute_console_output log
內容相同。
以下是運算節點的主要記錄檔:
-
/var/log/cloud-init-output.log
-這是雲端初始化記錄檔。它包含了設置實例時運行的所有命令。使用它來疑難排解初始化問題。 -
/var/log/parallelcluster/computemgtd
-這是computemgtd
記錄 它會在每個計算節點上執行,以監視主節點上clustermgtd
守護程式離線的不常見事件中的節點。使用它來疑難排解未預期的終止問題。 -
/var/log/slurmd.log
-這是Slurm計算常駐程式記錄。使用它來疑難排解初始化和運算失敗問題。
slurm_resume.log
當我無法運行作業或無法創建集群clustermgtd.log
時看到InsufficientInstanceCapacity
錯誤
如果叢集使用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 進行多個實例類型分配和 SchedulingSlurmQueues/ComputeResources//Instances。
-
在叢集配置 Scheduling///SlurmQueues中變更子網路 ID,將佇列移至不同的可用區域SubnetIds。Networking
-
如果您的工作負載未緊密結合,請跨越不同的可用區域跨越佇列。如需有關設定多個子網路的詳細資訊,請參閱 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
log (/var/log/parallelcluster/slurm_resume.log
) 中搜尋您的計算節點名稱,以查看ResumeProgram
是否曾經使用該節點呼叫。(如果從未調用過,則可以檢查slurmctld
log(/var/log/slurmctld.log
)以確定ResumeProgram
是否Slurm曾經嘗試ResumeProgram
使用節點調用)。 -
請注意,的權限不正確
ResumeProgram
可能會導ResumeProgram
致無訊息失敗。如果您正在使用自定義 AMI 並進行ResumeProgram
設置修改,請檢查該用slurm
戶ResumeProgram
是否擁有並具有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 EC2 AWS ParallelCluster 使用者指南使用 競價型執行個體中的使用者指南和競價型執行個體請求的服務連結角色。
疑難排解非預期的節點取代和終止
本節將繼續探討如何疑難排解節點相關問題,特別是當節點遭到非預期取代或終止時。
-
適用日誌:
-
/var/log/parallelcluster/clustermgtd
(頭節點) -
/var/log/slurmctld.log
(頭節點) -
/var/log/parallelcluster/computemgtd
(計算節點)
-
節點意外取代或終止
-
檢查
clustermgtd
log (/var/log/parallelcluster/clustermgtd
) 以查看是否clustermgtd
取代或終止節點。請注意,clustermgtd
處理所有正常的節點維護動作。 -
如果取
clustermgtd
代或終止節點,應該會出現一則訊息,詳細說明為何在節點上執行此動作。如果原因與排程器相關 (例如,因為節點位於中DOWN
),請簽入slurmctld
記錄以取得詳細資訊。如果原因與 Amazon EC2 相關,則應該有詳細說明需要更換的 Amazon EC2 相關問題的資訊訊息。 -
如果
clustermgtd
沒有終止節點,首先檢查這是否是 Amazon EC2 的預期終止,更具體地說是一個現貨終止。computemgtd
在計算節點上執行,如果clustermgtd
判定為健康狀態不佳,也可以終止節點。檢查computemgtd
log (/var/log/parallelcluster/computemgtd
) 以查看節點是否computemgtd
終止。
節點失敗
-
簽入
slurmctld
log (/var/log/slurmctld.log
) 以查看工作或節點失敗的原因。請注意,如果節點失敗,工作會自動重新排入佇列。 -
如果
slurm_resume
報告該節點已啟動,並在幾分鐘後clustermgtd
報告該節點的 Amazon EC2 中沒有對應的執行個體,則節點可能會在設定期間失敗。要從計算(/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
。 Slurm之後自動將節點置於POWER_SAVING
SuspendTimeout
狀態。 -
如果計算節點由於啟動程序失敗而持續失敗,請驗證它們是否在啟用的情況下Slurm叢集保護模式啟動。如果未啟用受保護模式,請修改受保護模式設定以啟用受保護模式。疑難排解並修復引導腳本。
佇列(分割區)Inactive
狀態
如果您執行sinfo
且輸出顯示AVAIL
狀態為的佇列inact
,表示您的叢集可能已Slurm叢集保護模式啟用,且佇列已設定為狀INACTIVE
態一段預先定義的時間。
疑難排解其他已知節點和工作問題
另一種類型的已知問題是 AWS ParallelCluster 可能無法分配工作或做出擴展決策。針對這種類型的問題, AWS ParallelCluster 只會根據Slurm指示啟動、終止或維護資源。對於這些問題,請檢查slurmctld
日誌以對其進行疑難排解。