弹性伸缩核心数据库组件不包含Redis实例,想要自动化配置伸缩组实例到Redis白名单中,是一件相当麻烦的事情。弹性伸缩与OOS运维编排合作,通过lifecycleHook的方式为大家提供了一种简单,可靠的自动化添加Redis白名单的方案。
OOS 简介
什么是OOS
Operation Orchestration Service,简称OOS,是全面、免费的云上自动化运维平台,提供运维任务的管理和执行。典型使用场景包括:事件驱动运维,批量操作运维,定时运维任务,跨地域运维等,OOS为重要运维场景提供审批,通知等功能。OOS帮您实现标准化运维任务,从而实践运维即代码(Operations as Code)的先进理念。关于OOS更详细的介绍请查阅 运维编排服务。
OOS核心概念
模板:
OOS通过模板来定义具体的运维动作。OOS为用户提供了大量的通用模板来应对丰富的运维场景,同时,OOS允许用户方便的创建和修改模板来实现自定义运维动作。例如,ACS-ESS-LifeCycleModifyRedisIPWhitelist为用户提供了将弹性伸缩创建出来的实例的private ip添加Redis白名单的运维动作。关于模板的定义与语法,请查看 模板。
执行:
模板定义了一个具体的运维动作,通过模板,我们可以创建出一个执行,即按照模板中定义的任务按照一定的顺序依次执行。我们可以手动触发一次执行,并观察其运行结果和状态是否符合预期,然后再将其应用于自动化流程。关于OOS执行的更多内容请查看 执行。
关联模板
模板介绍
ACS-ESS-LifeCycleModifyRedisIPWhitelist模板负责添加/移除Redis白名单操作。当您需要实现自动化添加/移除Redis白名单操作时,您需要针对扩缩容流程分别设置两条OOS类型lifecycleHook。
模板具有如下行为:
- 根据指定的实例ID列表获取Private IP列表;
- 将Private IP列表添加/移除Redis实例IP列表;
该模板同时支持回调功能:
- 执行成功时,通过回调通知lifecycleHook继续执行挂起的伸缩活动;
- 执行失败时,通过回调通知lifecycleHook回滚挂起的伸缩活动;
- 当无回调时,lifecycleHook挂起的伸缩活动将在超时后,执行hook指定的策略。
参数指定
用户可以创建类型为OOS的lifecycleHook,并选择OOS系统模板ACS-ESS-LifeCycleModifyRedisIPWhitelist。在选择了指定的系统模板之后,你需要为模板运行配置合适的参数,例如目标Redis实例的ID,实例ID列表,lifecycleHook ID信息等。由于实例ID列表,lifecycleHook ID等信息只有在运行时才能获取到,你需要通过伪参数的提供占位符信息,支持的伪参数信息如下:
- ${scalingGroupId},当前伸缩活动所属的伸缩组id;
- ${instanceIds},当前伸缩活动关联的实例列表;
- ${regionId},当前伸缩活动执行的地域;
- ${lifecycleActionToken},伸缩活动的等待状态标识符,用于提前结束当前的挂起活动;
- ${lifecycleHookId},关联生命周期挂钩id。
注意事项
使用ACS-ESS-LifeCycleModifyRedisIPWhitelist模板时您需要注意:
- 当您创建该模板的lifecycleHook时,您需要将伸缩组中存量的实例列表手动添加到Redis白名单中,否则,当移除一个Redis白名单中不存在的实例私网IP时,将出现错误。
当指定生命周期挂钩关联一个OOS模板时,用户需要通过生命周期挂钩的通知标识(NotificationMetadata,简称metadata)为创建OOS执行指定所需的参数。针对OOS模板的metadata,你需要注意:
- metadata必须为JSON字符串格式;
- metadata中的键,必须与OOS模板参数一一对应;
- OOS模板中不存在默认值的参数必须指定,存在默认值的参数可选择是否指定以覆盖默认值。
- OOS模板通过扮演指定的角色 OOSServiceRole 执行关联的运维操作,因此您需要确保该角色存在,并具有相应的权限。
最佳实践
控制台使用
下面以控制台创建自动添加Redis白名单的OOS类型lifecycleHook为例进行使用介绍。
首先,您需要确定OOS模板扮演的角色 OOSServiceRole 存在,并具有相应的权限,否则您需要首先创建该角色。
登录 RAM控制台,点击新建角色。
角色类型选择 阿里云 服务.
角色名称必须为 OOSServiceRole, 授信服务选择 运维编排服务。点击完成进行创建。
为角色添加操作权限。
针对扩容流程创建类型为OOS模板的生命周期挂钩,这时,弹框提示您选择OOS模板,这里需要选择系统模板ACS-ESS-LifeCycleModifyRedisIPWhitelist。
接下来,您需要填充模板使用的参数,此处已经为您自动填充了部分伪参数,您只需要填写目标Redis实例ID,同时选择modifyMode为Append。点击确认,核实您传入的参数。
点击创建执行,将回到创建lifecycleHook的弹框。
再次点击创建生命周期挂钩,完成创建。
此时您可以执行一条扩容伸缩规则,并在OOS控制台观察模板的执行过程。