伸缩组中扩容的ECS实例未分配公网IP地址时,无法对外提供公网访问能力,您可以在扩容时为新的ECS实例自动绑定EIP以保持服务的可访问性。如果伸缩组中的ECS实例已绑定了EIP但您需要及时释放ECS资源(例如业务进入低谷期),或不再需要公网访问能力,建议释放对应EIP避免资源或成本浪费,您可以在缩容时自动释放不再需要的EIP以优化资源使用并降低成本。
EIP是可以独立购买和持有公网IP地址资源,可以灵活与ECS实例进行绑定或释放。更多信息,请参见什么是弹性公网 IP。
准备工作
已创建伸缩组,且该伸缩组处于启用状态。具体操作,请参见配置伸缩组。
授予OOS服务访问其他云产品权限。具体操作,请参见为OOS服务设置RAM权限。
创建RAM角色。
本步骤中RAM角色的受信服务为系统运维管理,RAM角色名称以
OOSServiceRole
为例。为RAM角色添加授权策略。
通过OOS执行任务时涉及ECS、弹性伸缩以及EIP资源,因此您需要为
OOSServiceRole
角色添加以下系统策略:AliyunECSFullAccess
AliyunESSFullAccess
AliyunEIPFullAccess
扩容时为ECS实例自动绑定EIP
创建生命周期挂钩。
主要配置项说明如下所示,未提及的配置保持默认即可。具体操作,请参见创建生命周期挂钩。
配置项
说明
名称
输入
ESSHookForAttachEip
。适用的伸缩活动类型
选择弹性扩张活动。
超时时间
输入适当的超时时间,例如300秒。
重要该参数用于执行自定义操作的时间,若超时时间过短,可能导致自定义操作失败,请评估自定义操作耗时并设置适当的超时时间。
挂钩期间执行的动作
执行动作选择OOS模板。配置步骤如下:
OOS模板类型选择公共模板。
选择OOS公共模板
ACS-ESS-LifeCycleAllocateEipAddressAndAttachToInstance
,实现扩容时为ECS实例自动绑定EIP。单击
ACS-ESS-LifeCycleAllocateEipAddressAndAttachToInstance
模板后的设置参数。主要参数示例如下,未提及的参数保持默认即可。
EIP的计量方式:PayByBandwidth为按带宽计费,PayByTraffic为按流量计费。本教程以PayByBandwidth为例。
EIP的带宽峰值:本教程以5为例,代表使用EIP时带宽峰值为5 Mbit/s。
EIP标签:为自动创建的EIP添加标签,以便分组管理。
OOS扮演的RAM角色:选择
OOSServiceRole
即可。已为RAM角色
OOSServiceRole
添加了操作ECS、弹性伸缩、EIP资源的权限,则OOS服务可访问相应资源。
弹性伸缩触发扩容活动。
本步骤以手动执行伸缩规则增加1台ECS实例为例。您也可以通过定时任务、报警任务等方式触发扩容。具体操作,请参见执行伸缩规则。
说明手动执行伸缩规则触发扩容时,生命周期挂钩功能会生效,但手动添加已有ECS实例时,生命周期挂钩不会生效。
成功触发扩容活动后,伸缩组会自动创建1台ECS实例,但由于伸缩组内已创建生命周期挂钩
ESSHookForAttachEip
,则ECS实例会被挂起,同时自动通知OOS服务执行运维操作(即创建EIP并将其绑定至ECS实例上)。如果伸缩活动的状态显示失败,例如出现以下报错,请前往OOS控制台查看运维任务执行情况。具体操作,请参见(可选)查看OOS执行情况。
查看扩容的ECS实例是否已自动绑定EIP。
在伸缩组的查询伸缩组内实例列表。
页签下,单击自动创建的ECS实例对应的云服务器ID,进入ECS实例详情页,具体操作,请参见查看ECS实例基本信息中,弹性公网IP参数显示如下所示,表示ECS实例已自动绑定了EIP。
说明如果成功创建了ECS实例,但ECS实例并没有自动绑定EIP,请前往OOS控制台查看运维任务执行情况。
(可选)查看OOS执行情况。
在任务执行详情页面,查看执行的相关信息。您可以在基本信息区域查看执行ID、执行状态等,也可以在执行步骤和结果区域,查看执行详情和相应日志。具体操作,请参见查看执行详情。
重要如果执行失败,在执行详情页面也会显示相关的报错信息。
缩容时为ECS实例自动释放EIP
创建生命周期挂钩。
主要配置项说明如下所示,未提及的配置项保持默认即可。具体操作,请参见创建生命周期挂钩。
配置项
说明
名称
输入
ESSHookForReleaseEip
。适用的伸缩活动类型
选择弹性收缩活动。
超时时间
输入适当的超时时间,例如300秒。
重要该参数用于执行自定义操作的时间,若超时时间过短,可能导致自定义操作失败,请评估自定义操作耗时并设置适当的超时时间。
挂钩期间执行的动作
执行动作选择OOS模板。配置步骤如下:
OOS模板类型选择公共模板。
选择OOS公共模板
ACS-ESS-LifeCycleReleaseEipAddressFromInstance
,实现缩容时为ECS实例自动释放EIP。单击
ACS-ESS-LifeCycleReleaseEipAddressFromInstance
模板后的设置参数。设置OOS扮演的RAM角色为
OOSServiceRole
即可,其他参数保持默认即可。已为RAM角色OOSServiceRole
添加了操作ECS、弹性伸缩、EIP资源的权限,则OOS服务可访问相应资源。
弹性伸缩触发缩容活动。
本步骤以手动执行伸缩规则减少1台ECS实例为例。您也可以通过定时任务、报警任务等方式触发扩容。具体操作,请参见执行伸缩规则。
说明手动执行伸缩规则触发缩容时,生命周期挂钩会生效,但手动移出已有ECS实例时,生命周期挂钩不会生效。
成功触发缩容活动后,伸缩组会自动减少1台ECS实例,但由于伸缩组内已创建生命周期挂钩
ESSHookForReleaseEip
,ECS实例会被挂起,同时自动通知OOS服务执行运维操作(即已成功释放ECS上的EIP)。查看缩容的ECS实例是否已自动释放EIP。
您可以前往弹性公网IP列表,查看对应的EIP,如果EIP不存在,则说明已成功释放了EIP。
说明如果成功删除了ECS实例,但并没有释放EIP,请前往OOS控制台查看运维任务执行情况。
(可选)查看OOS执行情况。
在任务执行详情页面,查看执行的相关信息。您可以在基本信息区域查看执行ID、执行状态等,也可以在执行步骤和结果区域,查看执行详情和相应日志。具体操作,请参见查看执行详情。
重要如果执行失败,在执行详情页面也会显示相关的报错信息。
常见问题
如果运维任务执行失败,请根据执行结果中的报错信息排查原因。更多信息,请参见常见问题。
常见的报错信息如下:
报错信息 | 原因 | 解决方案 |
Forbidden.Unauthorized message: A required authorization for the specified action is not supplied. | 您并未向弹性伸缩授权操作当前Action。 | 请检查是否为RAM角色OOSServiceRole添加了相应的权限。 |
Forbidden.RAM message: User not authorized to operate on the specified resource, or this API doesn't support RAM. | RAM用户或RAM角色没有操作对应资源的权限。 | 请检查是否为RAM角色OOSServiceRole添加了相应的权限。例如为RAM角色授予OOS服务的示例权限。您需要为RAM角色添加操作权限,确保OOS服务能够操作OOS模板中涉及的资源。 |
LifecycleHookIdAndLifecycleActionToken.Invalid message: The specified lifecycleActionToken and lifecycleActionId you provided does not match any in process lifecycle action. | 正在进行的生命周期动作已经过期或中止。 | 请评估生命周期挂钩的超时时间,确保在超时时间内可以执行完OOS模板中定义的运维任务。 |
相关文档
生命周期挂钩是一个管理伸缩组内实例生命周期的工具。使用该功能可以在实例被终止前执行自定义操作,更多信息,请参见生命周期挂钩概述。
系统运维管理 OOS(CloudOps Orchestration Service)是阿里云提供的云上自动化运维服务,能够自动化管理和执行任务。更多信息,请参见什么是系统运维管理。
如果需实现低成本故障转移等网络管理,同时需具备公网访问能力,您可在扩容时为ECS实例自动绑定带有EIP的辅助弹性网卡。如果ECS实例已绑定了带有EIP的辅助弹性网卡,但您需及时释放ECS资源(例如业务进入低谷期),或不再需要公网访问能力,您可在缩容时自动释放不再需要的辅助弹性网卡和EIP。具体操作,请参见自动绑定和释放带有EIP的辅助弹性网卡。