文档

扩缩容时为ECS实例自动绑定和释放EIP

伸缩组中扩容的ECS实例未分配公网IP地址时,无法对外提供公网访问能力,您可以在扩容时为新的ECS实例自动绑定EIP以保持服务的可访问性。如果伸缩组中的ECS实例已绑定了EIP但您需要及时释放ECS资源(例如业务进入低谷期),或不再需要公网访问能力,建议释放对应EIP避免资源或成本浪费,您可以在缩容时自动释放不再需要的EIP以优化资源使用并降低成本。

说明

EIP是可以独立购买和持有公网IP地址资源,可以灵活与ECS实例进行绑定或释放。更多信息,请参见什么是弹性公网 IP

准备工作

  • 已创建伸缩组,且该伸缩组处于启用状态。具体操作,请参见配置伸缩组

  • 授予OOS服务访问其他云产品权限。具体操作,请参见为OOS服务设置RAM权限

    1. 创建RAM角色。

      本步骤中RAM角色的受信服务为系统运维管理,RAM角色名称以OOSServiceRole为例。

    2. 为RAM角色添加授权策略。

      通过OOS执行任务时涉及ECS、弹性伸缩以及EIP资源,因此您需要为OOSServiceRole角色添加以下系统策略:

      • AliyunECSFullAccess

      • AliyunESSFullAccess

      • AliyunEIPFullAccess

扩容时为ECS实例自动绑定EIP

  1. 创建生命周期挂钩。

    主要配置项说明如下所示,未提及的配置保持默认即可。具体操作,请参见创建生命周期挂钩

    配置项

    说明

    名称

    输入ESSHookForAttachEip

    适用的伸缩活动类型

    选择弹性扩张活动

    超时时间

    输入适当的超时时间,例如300秒。

    重要

    该参数用于执行自定义操作的时间,若超时时间过短,可能导致自定义操作失败,请评估自定义操作耗时并设置适当的超时时间。

    挂钩期间执行的动作

    执行动作选择OOS模板。配置步骤如下:

    1. OOS模板类型选择公共模板

    2. 选择OOS公共模板ACS-ESS-LifeCycleAllocateEipAddressAndAttachToInstance,实现扩容时为ECS实例自动绑定EIP。

    3. 单击ACS-ESS-LifeCycleAllocateEipAddressAndAttachToInstance模板后的设置参数

      主要参数示例如下,未提及的参数保持默认即可。

      • EIP的计量方式:PayByBandwidth为按带宽计费,PayByTraffic为按流量计费。本教程以PayByBandwidth为例。

      • EIP的带宽峰值:本教程以5为例,代表使用EIP时带宽峰值为5 Mbit/s。

      • EIP标签:为自动创建的EIP添加标签,以便分组管理。

      • OOS扮演的RAM角色:选择OOSServiceRole即可。

        已为RAM角色OOSServiceRole添加了操作ECS、弹性伸缩、EIP资源的权限,则OOS服务可访问相应资源。

  2. 弹性伸缩触发扩容活动。

    本步骤以手动执行伸缩规则增加1台ECS实例为例。您也可以通过定时任务、报警任务等方式触发扩容。具体操作,请参见执行伸缩规则

    说明

    手动执行伸缩规则触发扩容时,生命周期挂钩功能会生效,但手动添加已有ECS实例时,生命周期挂钩不会生效。

    成功触发扩容活动后,伸缩组会自动创建1台ECS实例,但由于伸缩组内已创建生命周期挂钩ESSHookForAttachEip,则ECS实例会被挂起,同时自动通知OOS服务执行运维操作(即创建EIP并将其绑定至ECS实例上)。

    如果伸缩活动的状态显示失败,例如出现以下报错,请前往OOS控制台查看运维任务执行情况。具体操作,请参见(可选)查看OOS执行情况

    scaling-failed

  3. 查看扩容的ECS实例是否已自动绑定EIP。

    在伸缩组的实例列表 > 自动创建页签下,单击自动创建的ECS实例对应的云服务器ID,进入ECS实例详情页,具体操作,请参见查询伸缩组内实例列表

    查看ECS实例基本信息中,弹性公网IP参数显示如下所示,表示ECS实例已自动绑定了EIP。

    primary-eip

    说明

    如果成功创建了ECS实例,但ECS实例并没有自动绑定EIP,请前往OOS控制台查看运维任务执行情况。

  4. (可选)查看OOS执行情况。

    在任务执行详情页面,查看执行的相关信息。您可以在基本信息区域查看执行ID、执行状态等,也可以在执行步骤和结果区域,查看执行详情和相应日志。具体操作,请参见查看执行详情

    重要

    如果执行失败,在执行详情页面也会显示相关的报错信息。

缩容时为ECS实例自动释放EIP

  1. 创建生命周期挂钩。

    主要配置项说明如下所示,未提及的配置项保持默认即可。具体操作,请参见创建生命周期挂钩

    配置项

    说明

    名称

    输入ESSHookForReleaseEip

    适用的伸缩活动类型

    选择弹性收缩活动

    超时时间

    输入适当的超时时间,例如300秒。

    重要

    该参数用于执行自定义操作的时间,若超时时间过短,可能导致自定义操作失败,请评估自定义操作耗时并设置适当的超时时间。

    挂钩期间执行的动作

    执行动作选择OOS模板。配置步骤如下:

    1. OOS模板类型选择公共模板

    2. 选择OOS公共模板ACS-ESS-LifeCycleReleaseEipAddressFromInstance,实现缩容时为ECS实例自动释放EIP。

    3. 单击ACS-ESS-LifeCycleReleaseEipAddressFromInstance模板后的设置参数

      设置OOS扮演的RAM角色OOSServiceRole即可,其他参数保持默认即可。已为RAM角色OOSServiceRole添加了操作ECS、弹性伸缩、EIP资源的权限,则OOS服务可访问相应资源。

  2. 弹性伸缩触发缩容活动。

    本步骤以手动执行伸缩规则减少1台ECS实例为例。您也可以通过定时任务、报警任务等方式触发扩容。具体操作,请参见执行伸缩规则

    说明

    手动执行伸缩规则触发缩容时,生命周期挂钩会生效,但手动移出已有ECS实例时,生命周期挂钩不会生效。

    成功触发缩容活动后,伸缩组会自动减少1台ECS实例,但由于伸缩组内已创建生命周期挂钩ESSHookForReleaseEip,ECS实例会被挂起,同时自动通知OOS服务执行运维操作(即已成功释放ECS上的EIP)。

  3. 查看缩容的ECS实例是否已自动释放EIP。

    您可以前往弹性公网IP列表,查看对应的EIP,如果EIP不存在,则说明已成功释放了EIP。

    说明

    如果成功删除了ECS实例,但并没有释放EIP,请前往OOS控制台查看运维任务执行情况。

  4. (可选)查看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的辅助弹性网卡