伸缩组内实例的生命周期
伸缩组内实例指ECS实例或ECI实例,实例从创建到释放的过程可能处于不同的状态,这些状态组成了实例的生命周期。生命周期挂钩功能可提供控制伸缩组内ECS实例或ECI实例创建和移出的能力,以便您灵活地管理实例的生命周期。本文介绍伸缩组内实例的生命周期管理方式、健康检查以及可能的生命周期状态。
伸缩组内实例的生命周期管理方式
根据ECS实例或ECI实例加入伸缩组的方式,ECS实例或ECI实例可以分为自动创建的实例和手动创建的实例,对应的生命周期管理方式如下表所示。
实例类型 | 添加方式 | 生命周期管理方式 |
自动创建的实例 | 根据伸缩组的实例配置信息来源自动创建的ECS实例或ECI实例。 | 弹性伸缩管理ECS实例或ECI实例的全生命周期,弹性扩张时负责创建ECS实例或ECI实例,弹性收缩时负责停止和释放ECS实例或ECI实例。 |
手动创建的实例 | 由您手动创建ECS实例或ECI实例,然后再手动将创建好的ECS实例或ECI实例添加至伸缩组。 | 由是否将ECS实例或ECI实例的生命周期托管给伸缩组决定:
说明 支持将包年包月ECS实例添加至伸缩组,但不支持托管包年包月ECS实例。 |
伸缩组内实例的健康检查
弹性伸缩管理ECS实例或ECI实例的生命周期时,会定期检查ECS实例或ECI实例的运行状态,如果发现一台ECS实例或ECI实例未处于运行中状态,则判定该ECS实例或ECI实例不健康,伸缩组会及时将不健康的ECS实例或ECI实例移出或者释放。
ECS实例或ECI实例的运行状态是ECS实例或ECI实例从创建开始到释放结束的可能状态,并非ECS实例或ECI实例在伸缩组内的服务状态。
您可以在创建伸缩组时开启或关闭健康检查,也可以为已创建的伸缩组开启或关闭健康检查,具体操作,请参见配置伸缩组和修改伸缩组。
开启健康检查后,弹性伸缩管理伸缩组内ECS实例或ECI实例的生命周期时,会检查ECS实例或ECI实例是否健康,并及时移出甚至释放不健康的ECS实例或ECI实例,具体说明如下所示:
如果ECS实例或ECI实例由弹性伸缩自动创建,或者由您手动添加至伸缩组但生命周期已托管给伸缩组,弹性伸缩会移出并释放ECS实例或ECI实例。
如果ECS实例或ECI实例由您手动添加至伸缩组且生命周期未托管给伸缩组,弹性伸缩会从伸缩组移出ECS实例或ECI实例,但不会释放该ECS实例或ECI实例。
移出不健康的ECS实例或ECI实例时不受最小实例数的限制,可能导致伸缩组内实例数低于最小实例数。此时弹性伸缩会自动创建对应数量的ECS实例或ECI实例,使得伸缩组内实例数等于最小实例数。
警告请确保账号可用额度充足。如果账号欠费,所有后付费的ECS实例(包括按量付费实例和抢占式实例)都会停机,甚至被释放。欠费后伸缩组内ECS实例状态变化,请参见欠费说明。
伸缩组内实例的生命周期状态
根据伸缩组是否添加生命周期挂钩,伸缩组内ECS实例或ECI实例的生命周期状态有所差异,具体说明如下所示。
ECS实例或ECI实例本身的生命周期是ECS实例或ECI实例从创建开始到释放结束的过程,与伸缩组内ECS实例或ECI实例的生命周期不同,更多信息,请参见实例的生命周期。
本节以伸缩组内的ECS实例为例,展示伸缩组内实例的生命周期状态关系和实例可能所处的服务状态。
伸缩组未添加生命周期挂钩时,伸缩组内ECS实例可能的生命周期状态关系如下图所示:
图中括号内表示API中实例的状态。通过API获取伸缩组中实例状态,请参见DescribeScalingInstances - 查询伸缩组内ECS实例列表。
伸缩组中添加生命周期挂钩时,伸缩组内ECS实例可能的生命周期状态如下图所示:
图中括号内表示API中实例的状态。通过API获取伸缩组中实例状态,请参见DescribeScalingInstances - 查询伸缩组内ECS实例列表。
从加入伸缩组到移出伸缩组,伸缩组内ECS实例可能的服务状态具体说明如下表所示。
下表服务状态列下括号中的内表示在API中实例的状态。通过API获取伸缩组中实例状态,请参见DescribeScalingInstances - 查询伸缩组内ECS实例列表。
服务状态 | 状态说明 | 相关操作 |
加入中(Pending) | ECS实例正在加入伸缩组,包括加入负载均衡实例的后端服务器、RDS实例的访问白名单等过程。 以下状态的ECS实例可加入伸缩组:
|
|
加入挂起中(Pending:Wait) | 如果伸缩组内创建了适用于弹性扩张活动的生命周期挂钩,ECS实例在加入伸缩组时被挂起并等待挂钩超时结束。 您可以在挂起期间对ECS实例进行预装软件或其他自定义操作,例如,绑定辅助弹性网卡、添加Redis实例白名单等。 说明 伸缩组中添加生命周期挂钩功能时,伸缩组内的ECS实例才会出现该服务状态。 | |
服务中(InService) | ECS实例已成功加入伸缩组并正常提供服务。 如果出现以下任一种情况,ECS实例将不再保持服务中(In Service) 状态:
| 服务中(In Service) 状态的ECS实例可转为停用状态、备用状态,或者手动移出或删除实例,更多信息,请参见手动调整实例状态。 |
备用中(Standby) | ECS实例不提供服务,负载均衡权重被置为零,负载均衡实例停止向ECS实例转发流量,且弹性伸缩不管理ECS实例的生命周期,而是由您手动进行管理。 在备用状态下,您可以进行排查ECS实例异常、更新ECS实例镜像等操作,然后重新将ECS实例投入使用中,可再次加入伸缩组。 说明 备用中的ECS实例在重新投入使用前,不再属于您应用程序的有效部分。 | |
保护中(Protected) |
| |
移出中(Removing) | ECS实例正在移出伸缩组,包括移出负载均衡实例的后端服务器、RDS实例的访问白名单等过程。 移出后的ECS实例独立于伸缩组内的ECS实例,您也可以将ECS实例加入到其他伸缩组中。 | |
移出挂起中(Removing:Wait) | 如果伸缩组内创建了适用于弹性收缩活动的生命周期挂钩,ECS实例在移出伸缩组时被挂起并等待挂钩超时时间结束。 您可以在挂起期间对ECS实例进行卸载软件或其他自定义操作,例如,拷贝日志、清理数据等。 说明 伸缩组中添加生命周期挂钩功能时,伸缩组内的ECS实例才会出现该服务状态。 | |
停用中(Stopped) | 完成生命周期的管理后,ECS实例已进入停用状态,不提供服务。ECS实例处于停用状态时,vCPU、内存和固定公网IP会被回收,因此vCPU、内存和固定公网带宽不再收费,但是云盘、弹性公网IP等资源仍然保留并收费。发生弹性扩张活动时,会优先启用伸缩组中处于停用状态的ECS实例。 说明 如果您需要将ECS实例转为停用状态,请确保在创建伸缩组时将实例回收模式设置为停机回收模式。 |