AMI 修补和 EC2 实例替换 - Amazon ParallelCluster
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

AMI 修补和 EC2 实例替换

为确保所有动态启动的集群计算节点的行为方式一致,Amazon ParallelCluster 会禁用集群实例自动操作系统更新。此外,还会为 Amazon ParallelCluster 的每个版本及其关联的 CLI 构建一组特定的 Amazon ParallelCluster AMI。这组特定的 AMI 保持不变,仅受特定的 Amazon ParallelCluster 版本支持。已发布版本的 Amazon ParallelCluster AMI 不会更新。

但是,由于突发的安全问题,客户可能希望向这些 AMI 添加补丁,然后使用已修补的 AMI 更新其集群。这与 Amazon ParallelCluster 责任共担模式一致。

要查看您当前使用的 Amazon ParallelCluster CLI 版本支持的特定 Amazon ParallelCluster AMI 集合,请运行:

$ pcluster version $ pcluster list-official-images

Amazon ParallelCluster 头节点是一个静态实例,可以手动更新。从 Amazon ParallelCluster 版本 3.0.0 开始,完全支持重启头节点。

如果您的实例具有临时实例存储,则必须记得在手动更新之前保存实例存储数据。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的 HeadNode/LocalStorage/EphemeralVolume 集群配置和具有实例存储卷的实例类型

计算节点是临时实例。默认情况下,只能从头节点访问它们。从 Amazon ParallelCluster 版本 3.0.0 开始,在使用 pcluster update-compute-fleet 停止计算实例集后,您可以通过修改 Scheduling/SlurmQueues/Image/CustomAmi 参数并运行 pcluster update-cluster 命令,更新与计算实例关联的 AMI:

$ pcluster update-compute-fleet-status --status STOP_REQUESTED

可以使用以下方法之一为计算节点自动创建更新的自定义 AMI:

头节点实例更新或替换

在某些情况下,可能需要重启或重新引导头节点。例如,当您手动更新操作系统,或者 Amazon 实例计划停用强制重启头节点实例时,必须执行此操作。

如果实例没有临时驱动器,则可以随时停止并重新启动该实例。在计划停用的情况下,启动已停止的实例会将其迁移为使用新硬件。

同样,您可以手动停止和启动没有实例存储的实例。对于没有临时卷的实例的这种情况以及其他情况,请参阅停止和启动集群的头节点

如果实例具有临时驱动器且已停止,则实例存储中的数据将会丢失。您可以根据实例存储卷中的表确定用于头节点的实例类型是否具有实例存储。

保存临时驱动器中的数据

从 Amazon ParallelCluster 版本 3.0.0 开始,每种实例类型都完全支持重启头节点。但如果实例有临时驱动器,其数据将会丢失。在重启头节点之前,请按照以下步骤保留数据。

要检查是否有需要保留的数据,请查看 EphemeralVolume/MountDir 文件夹(默认情况下为 /scratch)中的内容。

您可以将数据传输到根卷或连接到集群的共享存储系统,例如 Amazon FSx、Amazon EFS 或 Amazon EBS。请注意,将数据传输到远程存储可能会产生额外费用。

保存数据后,继续停止和启动集群的头节点

停止和启动集群的头节点

  1. 确认集群中没有任何正在运行的作业。

    使用 Slurm 调度器时:

    • 如果未指定 sbatch --no-requeue 选项,则对正在运行的作业进行重新排队。

    • 如果指定了 --no-requeue 选项,则正在运行的作业将会失败。

  2. 请求集群计算实例集停止:

    $ pcluster update-compute-fleet --cluster-name cluster-name --status STOP_REQUESTED { "status": "STOP_REQUESTED", ... }
  3. 等到计算实例集状态变为 STOPPED

    $ pcluster update-compute-fleet --cluster-name cluster-name --status STOP_REQUESTED { "status": "STOPPED", ... }
  4. 对于需要重启操作系统或重启实例的手动更新,您可以使用 Amazon Web Services Management Console 或 Amazon CLI。下面是使用 Amazon CLI 的示例。

    # Retrieve head node instance id $ pcluster describe-cluster --cluster-name cluster-name --status STOP_REQUESTED { "headNode": { "instanceId": "i-1234567890abcdef0", ... }, ... } # stop and start the instance $ aws ec2 stop-instances --instance-ids 1234567890abcdef0 { "StoppingInstances": [ { "CurrentState": { "Name": "stopping" ... }, "InstanceId": "i-1234567890abcdef0", "PreviousState": { "Name": "running" ... } } ] } $ aws ec2 start-instances --instance-ids 1234567890abcdef0 { "StartingInstances": [ { "CurrentState": { "Name": "pending" ... }, "InstanceId": "i-1234567890abcdef0", "PreviousState": { "Name": "stopped" ... } } ] }
  5. 启动集群计算实例集:

    $ pcluster update-compute-fleet --cluster-name cluster-name --status START_REQUESTED { "status": "START_REQUESTED", ... }