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

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

AMI修补和EC2实例更换

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

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

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

$ pcluster version

然后在 Amazon ParallelCluster的 GitHub 存储库中查看 amis.txt

Amazon ParallelCluster 头节点是一个静态实例,你可以手动更新它。如果实例类型没有实例存储,则从 2.11 Amazon ParallelCluster 版本开始完全支持重启和重启头节点。有关更多信息,请参阅《Amazon Linux 实例EC2用户指南》中的带有实例存储卷的实例类型。您无法AMI为现有集群更新。

从 3.0.0 Amazon ParallelCluster 版开始,完全支持通过AMI更新集群计算实例来重启和重启头节点。要使用这些功能,请考虑升级到最新版本。

头节点实例更新或替换

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

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

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

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

以下各节介绍了使用具有实例存储卷的实例时的限制。

实例存储限制

在实例存储中使用 2.11 Amazon ParallelCluster 版本和实例类型的限制如下:

  • 如果临时驱动器未加密(encrypted_ephemeral参数设置为false或未设置),则 Amazon ParallelCluster 实例在实例停止后无法启动。这是因为不存在的旧临时设备上的信息会被写入 fstab,而操作系统会尝试挂载不存在的存储。

  • 对临时驱动器进行加密(encrypted_ephemeral参数设置为true)后,可以在停止后启动 Amazon ParallelCluster 实例,但新的临时驱动器未设置、已装载或不可用。

  • 加密临时驱动器后,可以重新启动 Amazon ParallelCluster 实例,但无法访问旧的临时驱动器(在实例重启后仍然存在),因为加密密钥是在重启后丢失的内存中创建的。

唯一支持的情况是临时驱动器未加密时的实例重启。这是因为驱动器在重启后会保留下来,并可通过写入 fstab 的条目而装回。

实例存储限制解决方法

首先,保存您的数据。要检查是否有需要保留的数据,请查看 ephemeral_dir 文件夹(默认情况下为 /scratch)中的内容。您可以将数据传输到根卷或连接到集群的共享存储系统,例如 Amazon FSx、Amazon 或 Ama EFS zon EBS。请注意,将数据传输到远程存储可能会产生额外费用。

限制的根本原因在于 Amazon ParallelCluster 用于格式化和装载实例存储卷的逻辑。该逻辑会使用以下格式向 /etc/fstab 中添加一个条目:

$ /dev/vg.01/lv_ephemeral ${ephemeral_dir} ext4 noatime,nodiratime 0 0

${ephemeral_dir} 是 pcluster 配置文件中 ephemeral_dir 参数的值(默认为 /scratch)。

添加此行是为了在节点重启时自动重新挂载实例存储卷。这是可取的,因为临时驱动器中的数据在重启后仍会保留。但是,在经过启动或停止循环后,临时驱动器上的数据不会保留。这意味着驱动器会被格式化并在没有数据的情况下进行挂载。

唯一支持的情况是临时驱动器未加密时的实例重启。这是因为驱动器在重启后会保留下来,并且因为其写入 fstab 而得以装回。

要在所有其他情况下保留数据,您必须在停止实例之前删除逻辑卷条目。例如,在停止实例之前从 /etc/fstab 中删除 /dev/vg.01/lv_ephemeral。完成此操作后,您可以启动实例而不挂载临时卷。但是,重新挂载的实例存储在停止或启动实例后将不可用。

在保存数据并删除 fstab 条目后,请继续下一节。

停止和启动集群的头节点

注意

从 Amazon ParallelCluster 版本 2.11 开始,只有当实例类型没有实例存储时,才支持头节点停止和启动。

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

    使用时 Slurm 调度器:

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

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

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

    $ pcluster stop cluster-name Compute fleet status is: RUNNING. Submitting status change request. Request submitted successfully. It might take a while for the transition to complete. Please run 'pcluster status' if you need to check compute fleet status
  3. 等到计算实例集状态变为 STOPPED

    $ pcluster status cluster-name ... ComputeFleetStatus: STOP_REQUESTED $ pcluster status cluster-name ... ComputeFleetStatus: STOPPED
  4. 要通过操作系统重启或实例重启进行手动更新,您可以使用 Amazon Web Services Management Console 或 Amazon CLI。下面是使用 Amazon CLI的示例。

    $ 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 start cluster-name Compute fleet status is: STOPPED. Submitting status change request. Request submitted successfully. It might take a while for the transition to complete. Please run 'pcluster status' if you need to check compute fleet status