文档中心>高性能计算平台>操作指南>集群扩缩容策略说明

集群扩缩容策略说明

最近更新时间:2023-12-27 11:36:12

我的收藏

背景说明

THPC 的弹性扩缩功能支持根据您的业务负载动态伸缩集群节点,帮助您节省集群成本。您可以根据需要选择不同的扩缩容模式,在创建集群接口中的 AutoScalingType 进行配置,推荐您使用 THPC_AS 模式进行扩缩容,支持自动匹配作业需要的实例资源,且弹性伸缩的实例与创建集群时配置的TAG一致。
说明:
创建弹性扩缩容集群请参见自动伸缩最佳实践,目前仅支持 Slurm 集群开启 THPC_AS 模式。

THPC_AS 扩缩容策略

需把 AutoScalingType 设置为 THPC_AS 后,使用 SetAutoScalingConfiguration 接口配置扩缩容策略,以下是多个业务场景扩缩容效果的说明。

扩容匹配原则

THPC 主要通过实例的 CPU、内存规格与提交作业的资源申请规模进行匹配,优先匹配到运行作业后剩余资源最少的实例。THPC 会优先保证 CPU 资源剩余最少,如果实例运行作业后剩余 CPU 资源相同,会再匹配内存资源。
场景示例
场景 a: 作业所需4核4GB内存资源,扩容配置如下:
实例类型
vCPU
内存(GB)
A
4
16
B
8
8
THPC 会匹配到实例类型 A,因为 CPU 的优先级高,优先匹配 CPU 资源。

场景b:作业所需4核4GB资源,扩容配置如下:
实例类型
vCPU
内存(GB)
A
4
16
B
4
8
THPC 会匹配到实例类型 B,因为在 CPU 相同的情况下,会匹配内存资源,B 实例运行上作业之后,剩余资源较少。且实例扩容的数量取决于此作业运行起来需要的节点数量。
注意:
目前匹配流程中,不会考虑实例运行作业之后的剩余资源。
投递的作业所需资源在机型配置中没有满足的实例规格,则不会进行扩容。
 投递作业时需要注意,登录实例操作系统看到的可使用的内存会小于实例规格的内存。例如:SA2.MEDIUM4 机型规格为4核4GB内存,扩容后的实例 OS 可用内存为3.6GB。

多机型、多可用区扩容

实例类型在每个可用区支持情况不同,您可能会面对所选机型在当前可用区售罄或相关配置问题,多可用区、多机型配置可帮助您有效的解决此类问题。
多机型配置功能能够有效降低售罄、实例调用失败带来的自动扩容失败风险。
场景示例
在 THPC_AS 策略中,可以对 CPU 核数和内存大小相同的机型进行多配置,以下为 SetAutoScalingConfiguration 接口中,队列名为 compute 所设置的ExpansionNodeConfig 机型列表、机型的资源信息、可用区以及对应的数组下标。
数组下标
机型
可用区
vCPU
内存(GB)
1
SA2.2XLARGE16
广州四区
8
16
2
SA2.2XLARGE16
广州五区
8
16
3
SA2.2XLARGE16
广州六区
8
16
4
SA3.2XLARGE16
广州五区
8
16
5
SA3.2XLARGE16
广州六区
8
16
假设客户投递一个作业,需要6核 CPU 和12GB内存,由于队列中最优匹配是需要8核、16GB内存的资源,那么弹性伸缩配置中,所有8核、16GB内存的资源都符合匹配,THPC 会根据配置的列表下标由低往高,依次尝试创建实例进行扩容。

比例扩容

由于扩容流程中,不会考虑扩容后实例的剩余资源,出于成本考虑,在扩容场景下,可以通过比例扩容的方式来逐步扩容,尽可能减少资源的浪费。
队列配置中,涉及 SetAutoScalingConfiguration 接口的队列配置中的两个参数:
参数名称
参数说明
ScaleOutRatio
扩容比例设置。取值范围1~100。
ScaleOutNodeThreshold
比例扩容阈值。
当计算出的任务需要扩容的数量大于 ScaleOutNodeThreshold 时,实际扩容数量为 (需要扩容数量 * ScaleOutRatio) / 100 向上取整。
当计算出的任务需要扩容的数量小于 ScaleOutNodeThreshold 时,实际扩容数量为需要扩容数量 (即 ScaleOutRatio=100)。
ScaleOutNodeThreshold 阈值有利于比例扩容在小数量扩容场景下,快速收敛。
场景示例
假设此时总共需要扩容100个节点加入集群,以下 A、B 配置的扩容比例设置为50,但是 ScaleOutNodeThreshold 阈值配置不同。
配置
ScaleOutRatio
ScaleOutNodeThreshold
A
50
0
B
50
20
对于配置 A,100个节点总共需要自动扩容7轮,每轮节点扩容个数以及对应轮次如下图左,每轮节点扩容总数以及对应轮次如下图右:





对于配置 B,100个节点总共需要自动扩容4轮,当扩容至第4轮时,需要扩容的节点数量为12小于 ScaleOutNodeThreshold 参数值20,则按照需要扩容的节点数进行扩容。每轮节点扩容个数以及对应轮次如下图左,每轮节点扩容总数以及对应轮次如下图右:





二者每轮节点扩容总数以及对应轮次对比图如下,其中红色曲线为配置A,蓝色曲线为配置 B。可以看出,通过 ScaleOutNodeThreshold 参数能够加快在扩容实例数量较小的场景下收敛速度。



如果不需要比例扩容,可以将 ScaleOutRatio 参数默认设置为 100;如果对于扩容速度不敏感,可以将 ScaleOutNodeThreshold 设置为0。

THPC_AS 缩容策略说明

当节点连续空闲时间达到指定时间 ShrinkIdleTime,节点缩容。