Surm 集群保护模式 - Amazon ParallelCluster
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Surm 集群保护模式

当群集在启用保护模式的情况下运行时,Amazon ParallelCluster在启动计算节点引导故障时监控和跟踪这些故障,以检测故障是否持续发生。

如果检测到以下情况,集群将进入受保护模式:

  1. 连续的引导失败会持续发生,计算节点无法成功启动。

  2. 队列的故障计数达到预定义的阈值。

集群进入受保护模式后,Amazon ParallelCluster禁用失败达到或超过阈值的队列。

在中添加了 Surm 群集保护模式Amazon ParallelCluster版本 3.0.0。

您可以使用受保护模式来降低在计算节点引导故障循环上花费的时间和资源成本。

受保护节点参数

bootstrap_failure_count

bootstrap_failure_count指定激活群集保护节点的连续故障次数。

默认bootstrap_failure_count是 10 且受保护模式已启用。

如果bootstrap_failure_count小于或等于零,则禁用受保护模式。

您可以更改bootstrap_failure_count通过将参数添加到clustermgtd位于的配置文件/etc/parallelcluster/slurm_plugin/parallelcluster_clustermgtd.conf中的HeadNode.

可以在不停止计算队列的情况下随时更新参数。如果在失败计数达到之前在队列中启动成功bootstrap_failure_count,故障计数将重置为零。

在受保护模式下检查群集状态

当群集处于受保护模式时,您可以检查计算队列状态和节点状态。

计算车队状态

计算机队列的状态是PROTECTED在受保护模式下运行的群集中。

$ pcluster describe-compute-fleet --cluster-name <cluster-name> --region <region-id> { "status": "PROTECTED", "lastStatusUpdatedTime": "2022-04-22T00:31:24.000Z" }

节点状态

要了解哪些队列(分区)有启动失败但激活了受保护模式,请登录集群并运行sinfo命令。引导失败等于或更高的分区bootstrap_failure_countINACTIVE state. 没有引导失败的分区超过或更高bootstrap_failure_countUP状态和按需要运行。

PROTECTED状态不会影响正在运行的作业。如果作业在分区上运行引导失败等于或更高bootstrap_failure_count,分区设置为INACTIVE正在运行的作业完成后。

请考虑以下示例中显示的节点状态。

$ sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST queue1* inact infinite 10 down% queue1-dy-c5xlarge-[1-10] queue1* inact infinite 3490 idle~ queue1-dy-c5xlarge-[11-3500] queue2 up infinite 10 idle~ queue2-dy-c5xlarge-[1-10]

分区queue1INACTIVE因为检测到连续 10 次连续的引导失败。

节点后面的实例queue1-dy-c5xlarge-[1-10]已启动但由于状态不佳而未能加入群集。

群集处于受保护模式。

分区queue2不受中引导失败的影响queue1. 它在UP状态并且仍然可以运行作业。

如何停用受保护模式

解决引导错误后,您可以运行以下命令以使群集退出受保护模式。

$ pcluster update-compute-fleet --cluster-name <cluster-name> \ --region <region-id> \ --status START_REQUESTED

激活受保护模式的引导失败

激活受保护模式的引导错误可以细分为以下三种类型。要确定类型和问题,您可以检索群集日志.

  1. 引导错误导致实例自行终止.

    实例在引导过程的早期失败,例如由于SlurmQueues\CustomActions\OnNodeStart|OnNodeConfigured脚本。

    对于动态节点,查找类似于以下内容的错误:

    Node bootstrap error: Node ... is in power up state without valid backing instance

    对于静态节点,请查看clustermgtd日志 (/var/log/parallelcluster/clustermgtd) 对于类似于以下错误:

    Node bootstrap error: Node ... is in power up state without valid backing instance
  2. 节点resume_timeout要么node_replacement_timeout到期.

    实例无法在resume_timeout(对于动态节点)或node_replacement_timeout(对于静态节点)。它不会在超时之前自行终止。例如,群集的网络设置不正确,并且节点设置为DOWN在超时过期后 Surm 处于状态。

    对于动态节点,查找类似于以下内容的错误:

    Node bootstrap error: Resume timeout expires for node

    对于静态节点,请查看clustermgtd日志 (/var/log/parallelcluster/clustermgtd) 对于类似于以下错误:

    Node bootstrap error: Replacement timeout expires for node ... in replacement.
  3. 节点未通过健康检查.

    节点后面的实例未通过 EC2 运行状况检查或计划的事件运行状况检查,并且节点被视为引导失败节点。在这种情况下,由于以外的原因,实例被终止Amazon ParallelCluster控制。

    查看clustermgtd日志 (/var/log/parallelcluster/clustermgtd) 对于类似于以下错误:

    Node bootstrap error: Node %s failed during bootstrap when performing health check.

如何调试受保护模式

在你了解到你的集群处于受保护状态之后,你可以检查clustermgtd从中登录HeadNodecloud-init-output从有问题的计算节点记录。有关如何检索日志的更多信息,请参阅检索和保存日志.

clustermgtd日志 (/var/log/parallelcluster/clustermgtd) 在头节点上

日志消息显示哪些分区有引导失败以及相应的引导失败计数:

[slurm_plugin.clustermgtd:_handle_protected_mode_process] - INFO - Partitions bootstrap failure count: {'queue1': 2}, cluster will be set into protected mode if protected failure count reach threshold.

clustermgtd日志,搜索Found the following bootstrap failure nodes找到哪个节点未能引导:

[slurm_plugin.clustermgtd:_handle_protected_mode_process] - WARNING - Found the following bootstrap failure nodes: (x2) ['queue1-st-c5large-1(192.168.110.155)', 'broken-st-c5large-2(192.168.65.215)']

clustermgtd日志,搜索Node bootstrap error找出失败原因:

[slurm_plugin.clustermgtd:_is_node_bootstrap_failure] - WARNING - Node bootstrap error: Node broken-st-c5large-2(192.168.65.215) is currently in replacement and no backing instance

cloud-init-output日志 (/var/log/cloud-init-output.log) 在计算节点上

在中获取引导故障节点私有 IP 地址后clustermgtdlog,您可以通过登录计算节点或按照中的指导来找到相应的计算节点日志检索和保存日志以检索日志。在大多数情况下,/var/log/cloud-init-output来自有问题节点的日志显示导致计算节点引导失败的步骤。