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

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

Amazon ParallelCluster Auto Scaling

注意

本节仅适用于Amazon ParallelCluster版本 2.11.4 之前(包括版本 2.11.4)。从版本 2.11.5 开始Amazon ParallelCluster不支持使用SGE要么Torque计划程序。您可以在 2.11.4 之前的版本中继续使用它们,但它们没有资格获得未来的更新或疑难解答支持Amazon服务和AmazonSupport 团队。

优化前Amazon ParallelClusterAuto Scaling 在 2.9.0 版本中使用Slurm Workload Manager(Slurm)。了解Slurm和多个队列缩放,请参阅多队列模式教程.

本主题中介绍的 Auto Scaling 策略适用于使用其中一种方式部署的 HPC 集群。Son of Grid Engine(SGE) 或者Torque Resource Manager(Torque)。当与其中一个调度程序一起部署时,Amazon ParallelCluster通过管理计算节点的 Auto Scaling 组,然后根据需要更改计划程序配置来实现扩展功能。对于基于的 HPC 集群Amazon Batch、Amazon ParallelCluster依赖于提供的弹性扩展功能。Amazon托管作业调度程序。有关更多信息,请参阅 。什么是 Amazon EC2 Auto Scaling中的Amazon EC2 Auto Scaling 用户指南.

使用 Amazon ParallelCluster 部署的集群在多个方面是弹性的。设置initial_queue_size指定 ComputeFleet Auto Scaling 组的最小大小值,还指定所需的容量值。设置max_queue_size指定 ComputeFleet Auto Scaling 组的最大大小值。


   一个基本 Auto Scaling 组。

纵向扩展

名为的进程每分钟一分钟jobwatcher在头节点上运行。它评估队列中的待处理作业所需的当前实例数。如果繁忙节点和所请求节点的总数大于 Auto Scaling 组中当前需要的值,则会添加更多实例。如果您提交多个作业,则会重新评估队列并更新 Auto Scaling 组,最多为多达指定的max_queue_size.

借助 SGE 计划程序,每个作业需要运行许多槽(一个槽对应于一个处理单元,例如一个 vCPU)。为了评估处理当前的待处理作业所需的实例数,jobwatcher 会将所请求槽的总数除以单个计算节点的容量。与可用 vCPUs 的数量对应的计算节点容量依赖于集群配置中指定的 Amazon EC2 实例类型。

与Slurm(在之前Amazon ParallelCluster版本 2.9.0)Torque调度程序,每个作业可能需要多个节点,每个节点可能需要多个槽,取决于具体情况。对于每个请求,jobwatcher 将确定为满足新的计算要求而需要的计算节点数。例如,假设一个集群的计算实例类型为 c5.2xlarge (8 vCPU),并且有三个已排队的待处理作业,要求如下:

  • 作业 1:2 个节点/每个节点 4 个插槽

  • 作业 2:3 个节点/每个节点 2 个插槽

  • 作业 3:1 个节点/每个节点 4 个插槽

在此示例中,jobwatcher需要 Auto Scaling 组中的三个新计算实例来处理这三个作业。

当前限制:自动扩展逻辑不考虑部分加载的忙节点。例如,正在运行作业的节点被视为繁忙,即使有空插槽也是如此。

纵向扩展

在每个计算节点上,都有一个名为 nodewatcher 的进程运行并评估节点的空闲时间。在满足以下两个条件时,将终止实例:

  • 实例不具有作业的时长已超过 scaledown_idletime(默认设置为 10 分钟)

  • 集群中没有待处理作业

要终止实例,nodewatcher调用TerminateInstanceInAutoScalingGroupAPI 操作,如果 Auto Scaling 组的大小至少为 Auto Scaling 组的最小大小,则会删除实例。此过程将收缩集群,而不会影响正在运行的作业。它还支持具有固定的实例基数的弹性集群。

静态集群

对于 HPC,Auto Scaling 的值与任何其他工作负载的相同。唯一的区别是,Amazon ParallelCluster 的代码使其能够更智能地交互。例如,如果需要静态群集,则设置initial_queue_sizemax_queue_size参数为所需集群的准确大小,然后设置maintain_initial_size参数为 true。这将导致 ComputeFleet Auto Scaling 组对于最小、最大和所需容量具有相同的值。