本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon ParallelCluster Auto Scaling
注意
本节仅适用于Amazon ParallelCluster 2.11.4 及之前的版本。从 2.11.5 版本开始,Amazon ParallelCluster不支持使用SGE或Torque调度程序。您可以继续在 2.11.4 及之前的版本中使用它们,但它们没有资格获得Amazon服务和Support 团队的future 更新或故障排除Amazon支持。
从Amazon ParallelCluster版本 2.9.0 开始,不支持与Slurm Workload Manager (Slurm) 一起使用 Auto Scaling。要了解有关Slurm多队列扩展的信息,请参阅多队列模式教程。
本主题中描述的auto 扩展策略适用于使用Son of Grid Engine (SGE) 或Torque Resource Manager (Torque) 部署的 HPC 集群。使用其中一个调度程序部署时,通过管理计算节点的 Auto Scaling 组,然后根据需要更改调度程序配置来Amazon ParallelCluster实现扩展功能。对于基于的 HPC 集群Amazon Batch,Amazon ParallelCluster依赖于托Amazon管任务调度程序提供的弹性扩展功能。有关更多信息,请参阅 Amazon EC2 AAuto Scaling 用户指南中的 Amazon EC2 AAuto Scaling。
使用 Amazon ParallelCluster 部署的集群在多个方面是弹性的。设置会指initial_queue_size定 ComputeFleet Auto Scaling 组的最小大小值,以及所需的容量值。设置为指max_queue_size定 ComputeFleet Auto Scaling 组的最大大小值。

纵向扩展
每分钟,一个名为的进程都会在头节点上jobwatcher
借助 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 组中的三个新计算实例来为这三个任务提供服务。
当前限制:auto 扩展逻辑不考虑部分负载的繁忙节点。例如,即使插槽为空,正在运行作业的节点也被视为繁忙。
缩展
在每个计算节点上,都有一个名为 nodewatcher
-
实例不具有作业的时长已超过 scaledown_idletime(默认设置为 10 分钟)
-
集群中没有待处理作业
要终止实例,nodewatcher
请调用 TerminateInstanceInAutoScalingGroupAPI 操作,如果 Auto Scaling 组的大小至少等于 Auto Scaling 组的最小大小,则会删除实例。此过程将收缩集群,而不会影响正在运行的作业。它还支持具有固定基本实例数的弹性集群。
静态集群
对于 HPC,Auto Scaling 的值与任何其他工作负载的相同。唯一的区别是,Amazon ParallelCluster 的代码使其能够更智能地交互。例如,如果需要静态集群,则将initial_queue_size和max_queue_size参数设置为所需集群的确切大小,. 然后将maintain_initial_size参数设置为 true。这会导致 ComputeFleet Auto Scaling。