本教程介绍如何使用弹性伸缩生命周期挂钩挂起ECS实例,并结合运维编排服务OOS的模板,实现为ECS实例自动释放有弹性公网IP(EIP)的辅助弹性网卡。
前提条件
- 使用本教程进行操作前,请确保您已经注册了阿里云账号。如还未注册,请先完成账号注册。
- 已创建伸缩组,且伸缩组处于启用状态。
- 伸缩组内ECS实例绑定了有EIP的辅助弹性网卡。
- 已为OOS服务创建RAM角色,具体操作请参见为OOS服务设置RAM权限。
说明 本教程中使用默认的RAM角色OOSServiceRole,您也可以使用其他自定义的RAM角色,但需要保证RAM角色拥有执行OOS模板所需的权限。
背景信息
如果伸缩组内ECS实例绑定了有EIP的辅助弹性网卡,在删除ECS实例时默认释放辅助弹性网卡但不会释放EIP,您可以通过生命周期挂钩和OOS模板实现同时释放辅助弹性网卡和EIP。
操作步骤
本教程以OOS公共模板ACS-ESS-LifeCycleDetachNetworkInterfaceAndDeleteEip为例,实现在缩容时为ECS实例同时释放辅助弹性网卡和EIP。步骤如下:
步骤一:对RAM角色授予OOS服务权限
您需要拥有OOS的执行权限才能执行OOS的模板。执行ACS-ESS-LifeCycleDetachNetworkInterfaceAndDeleteEip中定义的运维操作时涉及ECS、弹性伸缩、EIP的资源。
- 登录RAM控制台。
- 在左侧导航栏,单击RAM角色管理。
- 找到OOSServiceRole,在操作区域,单击添加权限。
为OOS服务扮演的RAM角色OOSServiceRole添加权限即可完成授权。
- 指定权限配置,然后单击确定。
本教程中使用的配置如下表所示,未提及的配置保持默认即可。
配置项 |
说明 |
授权范围 |
选择云帐号全部资源。
|
选择权限 |
添加系统策略AliyunECSFullAccess、AliyunESSFullAccess和AliyunEIPFullAccess。 |
步骤二:为缩容活动创建生命周期挂钩并触发缩容
- 登录弹性伸缩控制台。
- 在左侧导航栏中,单击伸缩组管理。
- 在顶部菜单栏处,选择地域。
- 找到待操作的伸缩组,选择一种方式打开伸缩组详情页面。
- 在伸缩组名称/ID区域,单击伸缩组ID。
- 在操作区域,单击查看详情。
- 为缩容活动创建生命周期挂钩。
- 在页面上方,单击生命周期挂钩页签。
- 单击创建生命周期挂钩。
- 指定生命周期挂钩配置,然后单击确认。
本教程中使用的配置如下表所示,未提及的配置保持默认即可。
配置项 |
说明 |
名称 |
输入ESSHookForDeleteNicAndEip。 |
适用的伸缩活动类型 |
选择弹性收缩活动。
|
超时时间 |
输入适当的超时时间,例如300秒。
说明 超时时间即用于执行自定义操作的时间,若超时时间过短,可能导致自定义操作失败,请评估自定义操作耗时并设置适当的超时时间。
|
执行策略 |
选择继续。
|
通知方式 |
模板配置如下:
- 通知方式:选择OOS模板。
- OOS模板类型:选择公共模板。
- 公共模板:选择ACS-ESS-LifeCycleDetachNetworkInterfaceAndDeleteEip。
ACS-ESS-LifeCycleDetachNetworkInterfaceAndDeleteEip需要设置执行使用到的权限的来源:选择OOSServiceRole即可。步骤一中已为RAM角色OOSServiceRole添加操作ECS、弹性伸缩、EIP资源的权限,OOS服务扮演该RAM角色即可拥有相关权限。
|
- 触发缩容。
本教程中以手动执行伸缩规则为例,您也可以通过定时任务、报警任务等方式触发缩容。
说明 手动执行伸缩规则触发扩缩容时,生命周期挂钩会生效,但手动添加或移出已有ECS实例时,生命周期挂钩不会生效。
- 在页面上方,单击伸缩规则页签。
- 单击创建伸缩规则。
- 设置伸缩规则的属性,然后单击确认。
本教程中使用的配置如下表所示,未提及的配置保持默认即可。
配置项 |
说明 |
规则名称 |
输入Delete1。 |
伸缩规则类型 |
选择简单规则。
|
执行的操作 |
设置为减少1台。 |
- 找到新建的伸缩规则Delete1,在操作区域,单击执行。
- 单击确定。
执行伸缩规则后删除1台ECS实例,由于伸缩组内已创建生命周期挂钩ESSHookForDeleteNicAndEip,ECS实例会被挂起,同时自动通知OOS服务执行ACS-ESS-LifeCycleDetachNetworkInterfaceAndDeleteEip中定义的运维操作。
- 查看执行结果是否符合预期。
(可选)步骤三:查看OOS执行情况
- 登录OOS管理控制台。
- 在左侧导航栏,单击执行管理。
- 按开始时间找到执行,然后在操作区域,单击详情。
- 在页面上方,单击高级视图,然后在执行结果页签中查看执行状态。
- 如果执行成功,显示相关的结果输出等信息。
- 如果执行失败,显示相关的报错等信息。
常见问题
如果运维任务执行失败,请根据执行结果中的报错信息排查原因。常见的报错信息及解决方案如下:
- 报错信息:Forbidden.Unauthorized message: A required authorization for the specified action
is not supplied.
解决方案:请检查是否为RAM角色OOSServiceRole添加了相应的权限,例如步骤一中的示例权限。您需要为RAM角色添加操作权限,确保OOS服务能够操作OOS模版中涉及的资源。
- 报错信息:Forbidden.RAM message: User not authorized to operate on the specified resource, or
this API doesn't support RAM.
解决方案:请检查是否为RAM角色OOSServiceRole添加了相应的权限,例如步骤一中的示例权限。您需要为RAM角色添加操作权限,确保OOS服务能够操作OOS模版中涉及的资源。
- 报错信息:LifecycleHookIdAndLifecycleActionToken.Invalid message: The specified lifecycleActionToken
and lifecycleActionId you provided does not match any in process lifecycle action.
解决方案:请评估生命周期挂钩的超时时间,确保在超时时间内可以执行完OOS模板中定义的运维任务。