本文介绍在伸缩配置中设置主机名称的规则,以实现扩容时为扩容的ECS实例生成有序且唯一的主机名称,有助于您更好地管理实例。

背景信息

伸缩组根据伸缩规则,支持一次扩容一台或者多台ECS实例,也可以多次扩容生成多台ECS实例。您可以在伸缩配置或者启动模板中设置主机名称的规则,具体如下:
  • 如果您需要使伸缩组内的ECS实例的主机名称有序且唯一,您必须在伸缩配置中按照规则设置主机名称,不能选择启动模板进行设置。具体规则,请参见固定增长排序(推荐)动态扩展排序
    说明 伸缩组的主机名称会有序递增,但不一定保证连续递增。例如,扩容的主机名称分别为ess-node-0999、ess-node-1000、ess-node-1002,说明主机名称为ess-node-1001的ECS实例未正常启动,伸缩组将此ECS实例视为不健康,移除此ECS实例后,伸缩组重新扩容一台ECS实例,且主机名称为ess-node-1002。
  • 如果您只关注单次扩容的主机名称唯一且有序,不需要伸缩组内所有的主机名称唯一,您可以按照指定排序规则配置。具体内容,请参见批量设置有序的实例名称或主机名称
  • 如果您对主机名称没要求,您无需按照上述的命名规则配置,设置普通名称即可。例如,设置主机名为hostname,则扩容的所有ECS实例中主机名称全部为hostname。

本文通过两个场景示例,分别介绍通过弹性伸缩控制台和API如何配置有序且唯一的主机名称规则。

场景一:在控制台配置有序且唯一的主机名称

  1. 创建伸缩组。
    具体操作,请参见 创建伸缩组
  2. 创建伸缩配置,并在创建成功后启用配置。
    系统配置页面,在 主机名处,指定命名规则,此处输入ess-node-(AUTO_INCREMENT)[0,3]-ecshost。
    说明 本例中选用的命名规则是固定增长排序。具体规则,请参见 固定增长排序(推荐)

    其他操作,请参见创建伸缩配置

  3. 启用伸缩组。

    具体操作,请参见启用伸缩组

  4. 创建并手动执行伸缩规则。
    1. 创建规则的操作,请参见创建伸缩规则

      此处选择简单规则,增加3台ECS实例。

    2. 创建完成后,手动执行规则。具体操作,请参见执行伸缩规则

      执行完成后,增加的3台ECS实例中的主机名分别为ess-node-000-ecshost、ess-node-001-ecshost、ess-node-002-ecshost。

场景二:调用API配置有序且唯一的主机名称

  1. 调用CreateScalingGroup创建伸缩组。
  2. 调用CreateScalingConfiguration创建伸缩配置。

    配置HostName为ess-node-(AUTO_INCREMENT)[0,3]-ecshost。

    说明 本例中选用的命名规则是固定增长排序。具体规则,请参见 固定增长排序(推荐)
  3. 调用EnableScalingGroup启用伸缩组。
  4. 创建并手动执行伸缩规则。
    1. 调用CreateScalingRule创建伸缩规则。

      本例将伸缩规则配置为简单规则,并增加3台ECS实例。

    2. 调用ExecuteScalingRule执行伸缩规则。

      执行完成后,增加的3台ECS实例中的主机名分别为ess-node-000-ecshost、ess-node-001-ecshost、ess-node-002-ecshost。

固定增长排序(推荐)

参数格式为name_prefix(AUTO_INCREMENT)[begin_number,bits]name_suffix

表 1. 参数说明表
字段名称 是否必选 配置说明 示例
name_prefix 指定主机名称的前缀。 ess-node-
(AUTO_INCREMENT) 固定取值,用来标识此排序方式。 (AUTO_INCREMENT)
[begin_number,bits] 指定主机名称的有序数值。设置后,主机名称的有序数值递增。
说明 系统默认依次递增,但是如果存在扩容的ECS实例无法启动,会被伸缩组移除后再扩容一台新的ECS实例,所以伸缩组内ECS实例的主机名称可能断续递增。
  • begin_number:有序数值的起始值,取值支持[0,999999]。
    • 首次扩容时,您设置的起始值生效,未设置时,起始值默认为0
    • 非首次扩容时,起始值在伸缩组内已有主机名称中有序数值的最大值上递增。
  • bits:有序数值所占的位数,取值支持[1,6],默认值为6
说明 bits建议最少为 3,否则容易达到有序数值的上限。在达到上限后,若还有扩容需求,伸缩活动会报错,并停止扩容。此时,您需要重新设置生成主机名称的规则。

[begin_number,bits]字段中不能有空格。当指定的begin_number位数大于bits的取值时,bits默认为6

[0,6]
name_suffix 指定实例名称或者主机名称的后缀。 -ecshost
表 2. 参数示例表
命名示例 伸缩组现有最大命名主机 主机名称(以扩容3台ECS实例为例) 说明
ess-node-(AUTO_INCREMENT)[0,3]-ecshost ess-node-000-ecshost、ess-node-001-ecshost、ess-node-002-ecshost 首次扩容时,有序数值的位数为bits的值,有序数值从begin_number开始,然后根据扩容ECS的台数依次递增。
  • ess-node-(AUTO_INCREMENT)[]-ecshost
  • ess-node-(AUTO_INCREMENT)[,]-ecshost
ess-node-000000-ecshost、ess-node-000001-ecshost、ess-node-000002-ecshost 未配置begin_number或者bits时,begin_number默认为0bits默认为6
ess-node-(AUTO_INCREMENT)[99,1]-ecshost ess-node-000099-ecshost ess-node-000100-ecshost、ess-node-000101-ecshost、ess-node-000102-ecshost
  • 非首次扩容时,有序数值从伸缩组内已有主机名中有序数值的最大值开始增加。
  • 当指定的begin_number位数大于bits的取值时,bits默认为6
ess-node-(AUTO_INCREMENT)[0,2]-ecshost ess-node-99-ecshost 伸缩活动报错并停止扩容
  • 非首次扩容时,有序数值从伸缩组内已有主机名中有序数值的最大值开始增加。
  • 在达到有序数值的上限后,若还有扩容需求,伸缩活动会报错,并停止扩容。此时,您需要重新设置生成主机名称的规则。
ess-node-(AUTO_INCREMENT)[0,4] ess-node-0998-ecshost ess-node-0999、ess-node-1000、ess-node-1002
  • 非首次扩容时,有序数值从伸缩组内已有主机名中有序数值的最大值开始增加。
  • 系统默认依次递增,但是如果存在扩容的ECS实例无法启动(此例主机名为ess-node-1001),会被伸缩组移除后再扩容一台新的ECS实例,所以伸缩组内主机名称可能断续递增。

动态扩展排序

参数格式为name_prefix(ess_extend_begin,ess_extend_bits)[begin_number,bits]name_suffix

表 3. 参数说明表
字段名称 是否必选 配置说明 示例
name_prefix 指定主机名称的前缀。 ess-node-
(ess_extend_begin,ess_extend_bits) 指定主机名称的扩展有序数值。当伸缩组内已有主机名中基础有序数值等于最大值时,本参数增加一个值,基础有序数值重新从0开始递增,循环增加直至上限。
  • ess_extend_begin:扩展有序数值的起始值,取值范围为[0,ZZZ]。每一位值的取值范围为0~9、a~z和A~Z,例如,9增加一个值变成a,z增加一个值变成A。
    • 首次扩容时,您设置的起始值生效,未设置时,起始值默认为0
    • 非首次扩容时,起始值为伸缩组内已有主机名中扩展有序数值的最大值。
  • ess_extend_bits:扩展有序数值所占的位数,取值支持[1,3],默认值为3
注意 若扩展有序数值和基础有序数值都达到上限后,伸缩组还有扩容需求,伸缩活动会报错,并停止执行伸缩活动。此时,您需要重新设置生成主机名称的规则。

(ess_extend_begin,ess_extend_bits)字段中不能有空格。当指定的ess_extend_begin位数大于bits的取值时,bits默认为3

(0,3)
[begin_number,bits] 指定主机名称的基础有序数值。设置后,本参数会递增至最大值,再扩容时,扩展参数增加一个值,本参数从0开始递增,循环增加直至上限。
注意 系统默认依次递增,但是如果存在扩容的ECS实例无法启动,会被伸缩组移除后再扩容一台新的ECS实例,所以伸缩组内ECS实例的主机名称可能断续递增。
  • begin_number:基础有序数值的起始值,取值支持[0,999999]。
    • 首次扩容时,您设置的起始值生效,未设置时,起始值默认为0
    • 非首次扩容时,起始值在伸缩组内已有主机名称中基础有序数值的最大值上递增。
  • bits:基础有序数值所占的位数,取值支持[1,6],默认值为6
注意
  • 当伸缩组内已有主机名的最大有序数值中的基础有序数值与即将扩容的ECS实例数量之和,大于等于基础有序数值的最大值,会出现ECS主机名称非连续(即断续)增长情况。为避免发生此情况,建议基础有序数值的位数最少配置为3。
  • 若扩展有序数值和基础有序数值都达到上限后,伸缩组还有扩容需求,伸缩活动会报错,并停止执行扩容。此时,您需要重新设置生成主机名称的规则。

[begin_number,bits]字段中不能有空格。当指定的begin_number位数大于bits的取值时,bits默认为6

[0,6]
name_suffix 指定实例名称或者主机名称的后缀。 -ecshost
表 4. 参数示例表
命名示例 伸缩组现有最大命名主机 主机名称(以扩容3台ECS实例为例) 说明
ess-node-(0,3)[0,3]-ecshost ess-node-000000-ecshost、ess-node-000001-ecshost、ess-node-000002-ecshost 首次扩容时:
  • 扩展有序数值:位数为ess_extend_bits的值,起始值为ess_extend_begin。若基础有序数值达到最大值,扩展有序数值再增加一个值,基础有序数值重新从0开始递增。
  • 基础有序数值:位数为bits的值,基础有序数值从begin_number开始,然后根据扩容ECS的台数依次递增。若基础有序数值达到最大值,扩展有序数值再增加一个值,基础有序数值重新从0开始递增。
  • ess-node-()[]-ecshost
  • ess-node-(,)[,]-ecshost
ess-node-000000000-ecshost、ess-node-000000001-ecshost、ess-node-000000002-ecshost
  • 扩展有序数值:未配置ess_extend_begin或者ess_extend_bits时,ess_extend_begin默认为0ess_extend_bits默认为3
  • 基础有序数值:未配置begin_number或者bits时,begin_number默认为0bits默认为6
ess-node-(0,1)[0,1]-ecshost ess-node-08-ecshost ess-node-10-ecshost、ess-node-11-ecshost、ess-node-12-ecshost
  • 非首次扩容时,基础有序数值从伸缩组内已有主机名中基础有序数值的最大值开始增加。
  • 当伸缩组内已有主机名的最大有序数值中的基础有序数值与即将扩容的ECS实例数量之和,大于等于基础有序数值的最大值,会出现ECS主机名称非连续(即断续)增长情况。为避免发生此情况,建议基础有序数值的位数最少配置为3。
ess-node-(0,1)[0,1]-ecshost ess-node-Z9-ecshost 伸缩活动报错并停止扩容
  • 非首次扩容时,基础有序数值从伸缩组内已有主机名中基础有序数值的最大值开始增加。
  • 在扩展有序数值和基础有序数值都达到上限后,若还有扩容需求,伸缩活动会报错,并停止扩容。此时,您需要重新设置生成主机名称的规则。
ess-node-(0,1)[0,3] ess-node-0099-ecshost ess-node-0100、ess-node-0101、ess-node-0103
  • 非首次扩容时,基础有序数值从伸缩组内已有主机名中基础有序数值的最大值开始增加。
  • 系统默认依次递增,但是如果存在扩容的ECS实例无法启动(此例主机名为ess-node-0102),会被伸缩组移除后再扩容一台新的ECS实例,所以伸缩组内主机名称可能断续递增。
ess-node-(0,1)[99,1]-ecshost ess-node-0000099-ecshost ess-node-0000100-ecshost、ess-node-0000101-ecshost、ess-node-0000102-ecshost
  • 非首次扩容时,基础有序数值从伸缩组内已有主机名中基础有序数值的最大值开始增加。
  • 当指定的begin_number位数大于bits的取值时,bits默认为6