AMI 补丁和 EC2 实例替换 - AWS ParallelCluster

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

AMI 补丁和 EC2 实例替换

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

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

要查看您当前使用的AWS ParallelCluster CLI 版本支持的一组特定AWS ParallelCluster AMI,请运行:

$ pcluster version

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

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

从 3.0.0AWS ParallelCluster 版开始,完全支持使用集群计算实例的 AMI 更新重新启动和重启头节点。考虑升级到最新版本 3.5.1 以使用这些功能。

头节点实例更新或替换

在某些情况下,可能需要重新启动或重新启动头节点。例如,当您手动更新操作系统或计划停用强制重启头节点AWS实例时,这是必需的。

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

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

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

以下部分描述了将实例与实例存储卷一起使用时的限制。

实例存储限制

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

  • 当临时驱动器未加密(encrypted_ephemeral参数设置为false或未设置)时,AWS ParallelCluster实例在实例停止后无法启动。这是因为有关不存在的旧临时文件的信息被写入其中fstab,操作系统会尝试装载不存在的存储。

  • 当临时驱动器被加密(encrypted_ephemeral参数设置为true)时,可以在停止后启动AWS ParallelCluster实例,但新的临时驱动器无法设置、装载或不可用。

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

唯一支持的情况是重启实例,即临时驱动器未加密。这是因为驱动器在重新启动后仍能存活下来,并且由于输入了条目而被装回去fstab

实例存储限制变通方法

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

限制的根本原因在于AWS 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条目后,请继续到下一个部分。

停止和启动集群的头节点

注意

从AWS 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. 对于操作系统重启或实例重启时的手动更新,您可以使用AWS Management Console或AWS CLI。以下是使用示例AWS 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