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

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

AMI 修补和 EC2 实例替换

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

但是,由于紧急的安全问题,客户可能希望向这些 AMI 添加补丁程序,然后使用修补的 AMI 更新他们的集群。这与Amazon ParallelCluster责任共担模式.

查看特定的一组Amazon ParallelCluster支持的 AMIAmazon ParallelCluster你当前正在使用的 CLI 版本,运行:

$ pcluster version $ pcluster list-official-images

这些区域有:Amazon ParallelClusterhead 节点是静态实例,您可以手动更新它以使用已修补的 AMI 或其他实例Amazon ParallelCluster当前版本的 AMI。完全支持重新启动和重新启动头节点Amazon ParallelCluster版本 3.0.0。

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

计算节点是临时实例。默认情况下,你只能从头节点访问它们。从启动Amazon ParallelCluster版本 3.0.0,您可以通过修改与计算实例关联的 AMIScheduling/SlurmQueues/Image/CustomAmi参数并运行pcluster update-cluster命令,在停止计算队列之后pcluster update-compute-fleet

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

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

头节点实例更新或替换

在某些情况下,可能需要重新启动或重新启动头节点。例如,当你手动更新操作系统时,或者当有Amazon计划停用实例这强加了头节点实例重启。

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

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

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

从临时驱动器中保存数据

从启动Amazon ParallelCluster3.0.0 版中,每种实例类型都完全支持头节点重启和重启。但是,如果实例具有临时驱动器,则其数据将丢失。在头节点重新启动或重新启动之前,请按照后续步骤保留数据。

要检查您是否有需要保留的数据,请在EphemeralVolume/MountDirfolder (/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", ... }