排解擴展問題 - AWS ParallelCluster

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

排解擴展問題

本節與使用 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 --region eu-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 \ --region eu-west-1 --log-stream-name ip-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...

根據您的使用案例,請考慮使用下列其中一種方法,以避免收到這些類型的錯誤訊息:

解決節點初始化問題

本節說明如何疑難排解節點初始化問題。這包括節點無法啟動、開啟電源或加入叢集的問題。

頭節點

適用日誌:

  • /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設置修改,請檢查該用slurmResumeProgram是否擁有並具有744rwxr--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_SAVINGSuspendTimeout狀態。

  • 如果計算節點由於啟動程序失敗而持續失敗,請驗證它們是否在啟用的情況下Slurm叢集保護模式啟動。如果未啟用受保護模式,請修改受保護模式設定以啟用受保護模式。疑難排解並修復引導腳本。

佇列(分割區)Inactive狀態

如果您執行sinfo且輸出顯示AVAIL狀態為的佇列inact,表示您的叢集可能已Slurm叢集保護模式啟用,且佇列已設定為狀INACTIVE態一段預先定義的時間。

疑難排解其他已知節點和工作問題

另一種類型的已知問題是 AWS ParallelCluster 可能無法分配工作或做出擴展決策。針對這種類型的問題, AWS ParallelCluster 只會根據Slurm指示啟動、終止或維護資源。對於這些問題,請檢查slurmctld日誌以對其進行疑難排解。