全部产品
云市场

自动伸缩

更新时间:2019-05-21 10:09:15

简介

E-HPC自动化伸缩可以根据您配置的策略动态分配云资源,例如您可以设置根据实时负载自动增加或者减少云资源。E-HPC自动化伸缩可以为您:

  • 减少管理运维集群的人力成本。
  • 保证可用性的前提下,最大限度减少云资源消耗,降低集群成本。
  • 提高容错能力,自动化伸缩自动检测节点状态,停止处于错误状态下的节点,并创建新的节点。
  • 提高可用性,保证集群有充足的云资源。

配置自动伸缩服务

用户创建集群的时候,默认自动伸缩服务是没有启用的,用户如果希望使用的话,可以通过E-HPC控制台做如下配置。

autoscale

功能配置选项

自动化伸缩提供如下配置选项:

  • 是否启动扩容(EnableGrow): 是否启用自动扩容。
  • 扩容时间间隔(GrowIntervalInMinutes): 每轮资源扩展的时间间隔。默认值2分钟,最小值2分钟,最大值10分钟。
  • 扩容超时时间(GrowTimeoutInMinutes): 等待启动节点的超时时间。默认值20分钟,最小值10分钟,最大值60分钟。如果超时时间后,节点依然未达到运行状态,将会把这个节点重置,用于新的扩容。
  • 额外节点百分比(ExtraNodesGrowRatio): 额外扩张节点的百分比,默认值0,最小值0, 最大值100。例如,根据作业负载需要新增100个计算节点,ExtraNodesGrowRatio值为2,那么最终扩展的节点数量是102。场景如下。
    一个需要32个节点才能运行的mpi作业,如果将集群扩充至刚好32个节点,若其中一个节点启动失败或者启动过慢,就会导致其他31个节点一直处于空闲状态。但如果配置了额外节点百分比,将集群扩展至35个节点,就会一定程度上降低这种情况发生的概率,而且作业正常运行后,多启动的资源很快会被释放。
    此配置在保证可用性的同时,减少了资源的等待浪费,且只增加用户很少的成本(几乎可以忽略)。
  • 扩容比例(根据工作负载)(GrowRatio): 扩展比例(百分比)默认值100,最小值1,最大值100。比如当前根据作业负载需要新增10个计算节点,如果GrowRatio配置为50,就新增5个计算节点。场景如下。
    有10个作业需完成,且每个作业只需要运行几分钟。默认自动伸缩会扩容10个节点,每个节点启动初始化都需要几分钟的时间,而节点进入运行状态后,运行作业也是只需要几分钟。这种情况下,有的用户会希望只扩容5个节点,同时运行5个作业,等这5个作业运行结束,再继续在这5个节点上运行剩余的5个作业。
    通过这个配置选项,用户可以根据作业类型,运行时间长短对默认自动伸缩进一步优化,提高集群资源利用率。
  • 集群最大计算节点数(MaxNodesInCluster):集群最多可以扩展的节点数量,默认值100,最小值1。
  • 是否启动缩容(EnableShrink):是否启用自动缩容。
  • 缩容时间间隔(ShrinkIntervalInMinutes): 每轮资源收缩的时间间隔,默认2分钟,最小值2分钟,最大值10分钟。

    说明:ShrinkInterval必须大于等于GrowInterval,确保空闲节点不被任何作业所需要的前提下,释放节点

  • 节点连续空闲次数(ShrinkIdleTimes): 资源收缩检查时,一个节点连续处于空闲的次数。默认值3,最小值2。最大值5。如果一个计算节点连续空闲超过3次,就会被释放。所以默认配置下,一个资源的连续空闲时间超过6分钟,就会被释放。

  • 例外节点列表(ExcludeNodes): 不使用自动伸缩的节点列表,以半角逗号分割。用户如果希望一直保留一个最小规模的集群,可以使用此配置项。

多队列调度自动伸缩的策略

在多种类型业务和计算的驱动下,您可能需要在一个E-HPC集群里面运行不同类型的作业,而每种类型的作业对资源的需求是不一样的,例如,前处理作业需要普通8核32GiB内存的ECS虚拟机,后端计算性任务需要使用裸金属服务器。E-HPC为您提供了支持多队列部署的功能以及自动伸缩支持多队列的弹性配置策略。

1. E-HPC支持多队列部署功能如下所示:

  • 扩容的时候支持指定新的实例类型
  • 创建集群和扩容的时候支持加入指定队列,如果队列不存在则会自动创建队列
  • 提交作业的时候支持提交到指定的队列
  • 支持跨AZ扩容和缩容,以解决单个AZ域内资源库存不足的问题

2. 自动伸缩服务支持多队列弹性策略的配置,队列配置说明:

  • 队列名称(QueueName):为集群和节点指定的队列名称。
  • 是否启动扩容(EnableGrow)和缩容(EnableShrink):是否启动队列的自动扩容和缩容。
  • 实例类型(InstanceType):队列目标扩容的类型。
  • 竞价策略(SpotStrategy):扩充的实例需要配置的竞价方式。有三种选择:不使用抢占实例;设置上限价格的抢占实例;系统自动出价,最高按量付费价格。
  • 每小时最高价格(SpotPriceLimit):在竞价策略为“设置上限价格的竞价实例”时,需要设定每小时最高价格区间。

3. 跨AZ自动伸缩,队列配置详细信息

选择自动伸缩页面中需要操作的队列,如low队列,点击最右侧编辑按钮,跳转至如下页面,开始配置:

queueconfiguration

配置步骤及说明:

1) 打开启动扩容,启动缩容按钮;

2) 在队列配置栏下选择目标可用区和目标虚拟交换机ID,如果目标可用区没有可用的虚拟交换机,可以点击页面中“创建子网(交换机)”按钮进行创建;

3) 选择目标扩容实例类型,或者可以手动输入;根据实际情况选择竞价策略;

4) 点击“增加”按钮,添加配置信息到配置清单中。

注意:集群在扩容时,按照配置清单中的由上而下的顺序扩容,只有当上一个实例类型库存不存在或者库存不足时才会跳开上一个,开始扩容下一个实例类型。

5)点击左下角“确认”按钮,完成队列信息配置。

使用场景及配置

总的来说,自动伸缩服务适合于不使用包年包月服务的用户,比如:

  • 用户每天集中提交一批作业,使用HPC集群几个小时进行大规模计算, 然后释放资源。
  • 用户不定期的会提交作业,但不是每天24小时满负荷运行的。

针对不同的作业类型,用户可以使用不同的配置项参数,根据自己的HPC集群实际使用情况进行自定义配置。例如批量作业,作业数量大,单作业运行用时短,则用户可以通过配置扩容比例(GrowRatio)来调节扩容的比例。若用户提交1000个作业,每个作业虚使用一个CPU,运行1分钟。则用户可以配置GrowRatio为10,那么就会扩容100个CPU。

使用E-HPC集群运行lammps算例

1)创建集群, 选择安装的软件列表。

软件配置

2)在软件配置界面的高级配置下,指定集群需要加入的队列,如low队列,此时该队列会自动创建。同时,也可以在节点和队列界面单独创建队列,具体操作请参照 节点管理

3)配置自动伸缩: 启用自动扩容和缩容,启动目标队列的扩容和缩容,完成目标队列的信息配置。(对于pbspro来说,workq是默认队列,会自动创建,当新增加的nodes未指定队列时会默认加入到workq队列)

4)自动伸缩启动之后,如果没有作业运行,几分钟之后,指定队列的计算节点都会被释放。

5)通过控制台创建集群用户,用户组可以是普通权限组或者sodo权限组,本例设置为普通权限组。

6)用户把相应的数据,及程序放到NAS共享存储上。

7)创建并提交作业:用户可通过在线新建编辑,或者OSS文件上传的方式来进行SubmitJob的操作。具体操作流程,请参看 作业管理 模块的描述,进行作业信息配置和作业脚本文件创建。

例如 job.sh 脚本文件里的内容如下,可以看出需要1个计算节点。

job

8)两分钟左右,从控制台可以看到,low队列自动扩容了一个计算节点。

9)几分钟后,计算节点ready,同时可以看到作业开始运行,并运行完成。

在作业运行完毕之后,可以通过控制台看到作业详情。

jobdetail

10)几分钟之后,扩容产生的计算节点被释放。

11)从操作日志可以看到,扩容和缩容的日志记录。其中,第一次缩容(DeleteNode)为集群原来的节点,第二次缩容为提交作业后扩容产生的Node。joblog

SGE(SunGridEngine)支持自动伸缩配置

SGE队列如果为空,没有任何计算节点的时候,用户提交作业的时候,会提交失败,或者作业不会被分配到默认队列中。因此如果在SGE集群中使用自动伸缩,可以使用如下的方式之一:

  • 保持队列中至少有一个节点,在自动伸缩配置页面,设置“例外节点列表”包含这个节点这样保证集群至少有一个计算节点, 如果集群需要保持最小规模的话,推荐使用这种方式
  • 添加dummynode到队列中,可以参考以下的设置
    1. 以下操作都是在调度节点上执行
    2. 1, 在/etc/hosts增加以下记录
    3. 127.0.0.1 dummynode0
    4. 2,将dummnynode0加入默认节点组
    5. qconf -aattr hostgroup hostlist dummynode0 @allhosts
    6. 用户也可以使用类似命令将dummnynode0加入到别的节点组或者队列