天天看点

AutoScaling 通过lifecycleHook自动添加Redis白名单

弹性伸缩核心数据库组件不包含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。

模板具有如下行为:

  1. 根据指定的实例ID列表获取Private IP列表;
  2. 将Private IP列表添加/移除Redis实例IP列表;

该模板同时支持回调功能:

  1. 执行成功时,通过回调通知lifecycleHook继续执行挂起的伸缩活动;
  2. 执行失败时,通过回调通知lifecycleHook回滚挂起的伸缩活动;
  3. 当无回调时,lifecycleHook挂起的伸缩活动将在超时后,执行hook指定的策略。

参数指定

用户可以创建类型为OOS的lifecycleHook,并选择OOS系统模板ACS-ESS-LifeCycleModifyRedisIPWhitelist。在选择了指定的系统模板之后,你需要为模板运行配置合适的参数,例如目标Redis实例的ID,实例ID列表,lifecycleHook ID信息等。由于实例ID列表,lifecycleHook ID等信息只有在运行时才能获取到,你需要通过伪参数的提供占位符信息,支持的伪参数信息如下:

  1. ${scalingGroupId},当前伸缩活动所属的伸缩组id;
  2. ${instanceIds},当前伸缩活动关联的实例列表;
  3. ${regionId},当前伸缩活动执行的地域;
  4. ${lifecycleActionToken},伸缩活动的等待状态标识符,用于提前结束当前的挂起活动;
  5. ${lifecycleHookId},关联生命周期挂钩id。

注意事项

使用ACS-ESS-LifeCycleModifyRedisIPWhitelist模板时您需要注意:

  1. 当您创建该模板的lifecycleHook时,您需要将伸缩组中存量的实例列表手动添加到Redis白名单中,否则,当移除一个Redis白名单中不存在的实例私网IP时,将出现错误。

当指定生命周期挂钩关联一个OOS模板时,用户需要通过生命周期挂钩的通知标识(NotificationMetadata,简称metadata)为创建OOS执行指定所需的参数。针对OOS模板的metadata,你需要注意:

  1. metadata必须为JSON字符串格式;
  2. metadata中的键,必须与OOS模板参数一一对应;
  3. OOS模板中不存在默认值的参数必须指定,存在默认值的参数可选择是否指定以覆盖默认值。
  1. OOS模板通过扮演指定的角色 OOSServiceRole 执行关联的运维操作,因此您需要确保该角色存在,并具有相应的权限。

最佳实践

控制台使用

下面以控制台创建自动添加Redis白名单的OOS类型lifecycleHook为例进行使用介绍。

首先,您需要确定OOS模板扮演的角色 OOSServiceRole 存在,并具有相应的权限,否则您需要首先创建该角色。

登录

RAM控制台

,点击新建角色。

AutoScaling 通过lifecycleHook自动添加Redis白名单

角色类型选择 阿里云 服务.

AutoScaling 通过lifecycleHook自动添加Redis白名单

角色名称必须为 OOSServiceRole, 授信服务选择 运维编排服务。点击完成进行创建。

AutoScaling 通过lifecycleHook自动添加Redis白名单

为角色添加操作权限。

AutoScaling 通过lifecycleHook自动添加Redis白名单
AutoScaling 通过lifecycleHook自动添加Redis白名单

针对扩容流程创建类型为OOS模板的生命周期挂钩,这时,弹框提示您选择OOS模板,这里需要选择系统模板ACS-ESS-LifeCycleModifyRedisIPWhitelist。

AutoScaling 通过lifecycleHook自动添加Redis白名单

接下来,您需要填充模板使用的参数,此处已经为您自动填充了部分伪参数,您只需要填写目标Redis实例ID,同时选择modifyMode为Append。点击确认,核实您传入的参数。

AutoScaling 通过lifecycleHook自动添加Redis白名单

点击创建执行,将回到创建lifecycleHook的弹框。

AutoScaling 通过lifecycleHook自动添加Redis白名单

再次点击创建生命周期挂钩,完成创建。

此时您可以执行一条扩容伸缩规则,并在

OOS控制台

观察模板的执行过程。

AutoScaling 通过lifecycleHook自动添加Redis白名单