本章节介绍伸缩组内ECS实例的生命周期管理方式,并列出可能的服务状态。弹性伸缩管理ECS实例的生命周期时,会检查ECS实例是否健康,并及时移出甚至释放不健康的ECS实例。

伸缩组内ECS实例的生命周期管理方式

根据ECS实例加入伸缩组的方式,ECS实例可以分为自动创建的ECS实例和手动创建的ECS实例,对应的生命周期管理方式如下表所示。
ECS实例类型 加入方式 生命周期管理方式
自动创建的ECS实例 根据伸缩组的实例配置信息来源自动创建的ECS实例。 弹性伸缩管理ECS实例的全生命周期,弹性扩张时负责创建ECS实例,弹性收缩时负责停止和释放ECS实例。
手动创建的ECS实例 由您手动创建,然后手动添加至伸缩组的ECS实例。 由是否将ECS实例的生命周期托管给伸缩组决定:
  • 已托管给伸缩组:弹性收缩时负责停止和释放ECS实例。
  • 未托管给伸缩组:弹性收缩时负责将ECS实例移出伸缩组,但不会释放ECS实例。
说明 支持将包年包月实例添加至伸缩组,但不支持托管包年包月实例。
说明 ECS实例的生命周期是ECS实例从创建开始到释放结束的过程,和ECS实例加入伸缩组到移出伸缩组的过程不同,详情请参见实例生命周期介绍

伸缩组内ECS实例的服务状态

从加入伸缩组到移出伸缩组,一台ECS实例可能的服务状态如下表所示。
服务状态 对应的操作 说明
加入中(Pending) ECS实例正在加入伸缩组,包括加入负载均衡实例的后端服务器、RDS实例的访问白名单等过程。
加入挂起中(Pending:Wait) 创建生命周期挂钩 如果伸缩组内创建了适用于弹性扩张活动的生命周期挂钩,ECS实例在加入伸缩组时被挂起并等待挂钩超时时间结束。

您可以在挂起期间对ECS实例进行自定义操作,例如绑定辅助弹性网卡、添加Redis实例白名单等。

服务中(InService) ECS实例已成功加入伸缩组并正常提供服务。
备用中(Standby) 实例转为备用状态 ECS实例不提供服务,负载均衡权重被置为零,负载均衡实例停止向ECS实例转发流量,且弹性伸缩不管理ECS实例的生命周期,而是由您手动管理。

在备用状态下,您可以进行排查ECS实例异常、更新ECS实例镜像等操作,然后再将ECS实例投入使用。

保护中(Protected) 实例转为保护状态 ECS实例正常提供服务,但弹性伸缩不管理ECS实例的生命周期,而是由您手动管理。
停用中(Stopped) 实例转为停用状态 ECS实例已进入停用状态,不提供服务。ECS实例处于停用状态时,vCPU、内存和固定公网IP被回收,因此vCPU、内存和固定公网带宽不再收费,但是云盘、弹性公网IP等资源仍然保留并收费。发生弹性扩张活动时,会优先启用伸缩组中处于停用状态的ECS实例。
说明 如果您需要将ECS实例转为停用状态,请确保在创建伸缩组时将实例回收模式设置为停机回收模式。
移出中(Removing) ECS实例正在移出伸缩组,包括移出负载均衡实例的后端服务器、RDS实例的访问白名单等过程。
移出挂起中(Removing:Wait) 创建生命周期挂钩 如果伸缩组内创建了适用于弹性收缩活动的生命周期挂钩,ECS实例在移出伸缩组时被挂起并等待挂钩超时时间结束。

您可以在挂起期间对ECS实例进行自定义操作,例如拷贝日志、清理数据等。

ECS实例在伸缩组中各服务状态的过渡关系如下图所示。服务状态过渡

伸缩组内ECS实例的健康检查

您可以在创建伸缩组时开启或关闭健康检查,也可以为已创建的伸缩组开启或关闭健康检查,具体操作请参见创建伸缩组修改伸缩组

开启健康检查后,弹性伸缩管理伸缩组内ECS实例的生命周期时,会定期检查ECS实例的运行状态,如果发现一台ECS实例未处于运行中状态,则判定该ECS实例不健康。
说明 ECS实例的运行状态是ECS实例从创建开始到释放结束的可能状态,并非ECS实例在伸缩组内的服务状态。
弹性伸缩会移出伸缩组中不健康的ECS实例,具体动作如下:
  • 如果ECS实例由弹性伸缩自动创建,或者由您手动添加至伸缩组但生命周期已托管给伸缩组,弹性伸缩会移出并释放ECS实例。
  • 如果ECS实例由您手动添加至伸缩组且生命周期未托管给伸缩组,弹性伸缩会从伸缩组移出ECS实例,但不会释放该ECS实例。
移出不健康的ECS实例时不受最小实例数的限制,可能导致组内实例数低于最小实例数。此时弹性伸缩会自动创建对应数量的ECS实例,使得组内实例数等于最小实例数。
警告 请确保账号可用额度充足。如果账号欠费,所有后付费的ECS实例(包括按量付费实例和抢占式实例)都会停机,甚至被释放。欠费后伸缩组内ECS实例状态变化,请参见欠费说明