本教程介绍如何使用弹性伸缩生命周期挂钩挂起ECS实例,并结合系统运维管理 OOS(CloudOps Orchestration Service)的模板,实现将ECS实例自动加入和移出AnalyticDB集群白名单。
前提条件
已创建伸缩组,并且伸缩组处于启用状态。
已创建AnalyticDB集群。
已为OOS服务创建RAM角色。该RAM角色的可信实体必须为阿里云服务,受信服务为系统运维管理,并且拥有执行OOS模板的权限。具体操作,请参见为OOS服务设置RAM权限。
说明本教程中使用的示例RAM角色为OOSServiceRole,您也可以使用其他自定义的RAM角色。
背景信息
伸缩组支持关联负载均衡实例和RDS实例,但是暂时不能关联AnalyticDB集群。如果您有业务数据存储在AnalyticDB集群上,手动配置ECS实例加入或移出AnalyticDB集群白名单,操作效率较低。您可以通过生命周期挂钩和OOS模板将ECS实例自动加入和移出AnalyticDB集群白名单。
操作步骤
本教程以OOS公共模板ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist为例,实现在扩容时将ECS实例加入AnalyticDB集群白名单。步骤如下:
如果需要在缩容时将ECS实例移出AnalyticDB集群白名单,创建适用于弹性收缩活动的生命周期挂钩并触发缩容即可。
步骤一:对RAM角色授予OOS服务权限
您需要拥有OOS的执行权限才能执行OOS的模板。执行ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist中定义的运维操作时涉及云服务器ECS、弹性伸缩、云原生数据仓库 AnalyticDB MySQL 版的资源。
登录RAM控制台。
创建权限策略。
在左侧导航栏,单击 。
单击创建权限策略。
在创建权限策略页面,选择权限策略的配置模式为脚本编辑后,设置其他参数项,然后单击确定。
本教程中使用的配置如下表所示,未提及的配置保持默认即可。
配置项
说明
名称
填写ESSHookPolicyForAnalyticDBWhitelist。
策略内容
输入以下内容:
{ "Version": "1", "Statement": [ { "Action": [ "ecs:DescribeInstances" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "adb:ModifyDBClusterAccessWhiteList" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "ess:CompleteLifecycleAction" ], "Resource": "*", "Effect": "Allow" } ] }
为OOSServiceRole授予权限策略。
在左侧导航栏,单击 。
找到OOSServiceRole,在操作列,单击新增授权。
为OOS服务扮演的RAM角色OOSServiceRole添加所需权限即可完成授权。
在新增授权页面,指定资源范围和权限配置,然后单击确认新增授权。
本教程中使用的配置如下表所示,未提及的配置保持默认即可。
配置项
说明
资源范围
选择账号级别。
权限策略
添加自定义策略ESSHookPolicyForAnalyticDBWhitelist。
步骤二:为扩容活动创建生命周期挂钩并触发扩容
- 登录弹性伸缩控制台。
- 在左侧导航栏中,单击伸缩组管理。
- 在顶部菜单栏处,选择地域。
- 找到待操作的伸缩组,选择任一种方式打开伸缩组详情页面。
- 在伸缩组名称/ID列,单击伸缩组ID。
- 在操作列,单击查看详情。
为扩容活动创建生命周期挂钩。
- 在页面上方,单击生命周期挂钩页签。
单击创建生命周期挂钩。
指定生命周期挂钩配置,然后单击确认。
本教程中使用的配置如下表所示,未提及的配置保持默认即可。
配置项
说明
名称
输入ESSHookForAddAnalyticDBWhitelist。
适用的伸缩活动类型
选择弹性扩张活动。
超时时间
输入适当的超时时间,例如300秒。
说明超时时间即用于执行自定义操作的时间,若超时时间过短,可能导致自定义操作失败,请评估自定义操作耗时并设置适当的超时时间。
默认执行策略
选择继续。
挂钩期间执行的动作
模板配置如下:
通知方式:选择OOS模板。
OOS模板类型:选择公共模板。
公共模板:选择ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist。
ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist的执行参数配置如下:
AnalyticDB集群ID:输入AnalyticDB集群的ID。
修改IP白名单的方式:选择Append,对应弹性扩张活动,将ECS实例加入AnalyticDB集群白名单。
OOS扮演的RAM角色:选择OOSServiceRole,操作步骤中已为RAM角色OOSServiceRole添加操作ECS、弹性伸缩、云原生数据仓库的权限,OOS服务扮演该RAM角色即可拥有相关权限。
触发扩容。
本教程中以手动执行伸缩规则为例,您也可以通过定时任务、报警任务等方式触发扩容。
说明手动执行伸缩规则触发扩缩容时,生命周期挂钩会生效,但手动添加或移出已有ECS实例时,生命周期挂钩不会生效。
在页面上方,单击伸缩规则与报警任务页签。
在伸缩规则页签下,单击创建伸缩规则。
设置伸缩规则的属性,然后单击确认。
本教程中使用的配置如下表所示,未提及的配置保持默认即可。
配置项
说明
规则名称
输入Add1。
伸缩规则类型
选择简单规则。
执行的操作
设置为增加1台。
在伸缩规则列表下,找到新建的伸缩规则Add1,在操作区域,单击执行。
单击确定。
执行伸缩规则后自动创建1台ECS实例,由于伸缩组内已创建生命周期挂钩ESSHookForAddAnalyticDBWhitelist,ECS实例会被挂起,同时自动通知OOS服务执行ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist中定义的运维操作。
步骤三:查看AnalyticDB集群白名单
在左侧导航栏,单击集群列表。
找到Analytic集群,在集群ID/集群描述区域,单击集群ID。
在左侧导航栏,单击数据安全。
如果Analytic集群白名单中加入了新建ECS实例的私有IP,符合使用公共模板ACS-ESS-LifeCycleModifyAnalyticDBIPWhitelist的预期。
如果成功创建了ECS实例,但是新建ECS实例的私有IP并没有加入AnalyticDB集群白名单,请前往OOS控制台查看运维任务执行情况。具体操作,请参见(可选)步骤四:查看OOS执行情况。
(可选)步骤四:查看OOS执行情况
常见问题
如果运维任务执行失败,请根据执行结果中的报错信息排查原因。更多信息,请参见常见问题。
常见的报错信息如下:
报错信息 | 原因 | 解决方案 |
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模板中定义的运维任务。 |