运维编排服务系列-----自动启动意外停止的ECS实例

本文涉及的产品
系统运维管理,不限时长
简介: 有时ECS实例可能因为某些意外原因被停止,可通过OOS的事件触发器对ECS实例进行监控,一旦实例停止,则对实例自动地执行恢复逻辑,比如自动启动,进而实现ECS实例的快恢复。

有时ECS实例可能因为某些意外原因被停止,可通过OOS的事件触发器对ECS实例进行监控,一旦实例停止,则对实例自动地执行恢复逻辑,比如自动启动,进而实现ECS实例的快恢复。

步骤拆分

  1. 对账号下的ECS实例进行监控。
  2. 一旦有ECS实例停止,则检查其是否为要自动启动的Tag下的ECS实例。
  3. 若不是该Tag下的实例,则忽略此ECS实例的停止,若是该Tag下的ECS实例,则执行后面逻辑。
  4. 对实例做一些恢复逻辑,此处对实例进行启动。
  5. 等待恢复逻辑执行成功,此处等待停止的实例启动成功。

OOS模版任务

  1. 通过OOS事件触发器监控所有的ECS实例是否停止。
  2. 若有实例停止,检查该实例是否为要被自启动Tag下的ECS实例。
  3. 若不是则忽略,实例的停止,若是则对该实例进行启动。
  4. 等待实例状态变为运行中。

模版内容

FormatVersion: OOS-2019-06-01
Description: Start ECS instance when instance is stopped.
Parameters:
  tagKey:
    Description: The tag key for query ECS instances.
    Type: String
    MinLength: 1
    MaxLength: 30
    Default: oostt
  tagValue:
    Description: The tag value for query ECS instances.
    Type: String
    MinLength: 1
    MaxLength: 30
    Default: oostt

Tasks:
- Name: whenInstanceStopped
  Action: 'ACS::EventTrigger'
  Properties:
    Product: ECS
    Name:
      - 'Instance:StateChange'
    Content:
      state:
        - Stopped
  Outputs:
    instanceId:
      ValueSelector: .content.resourceId
      Type: String

- Name: describeInstancesByTag
  Action: ACS::ExecuteApi
  Description: Views running ECS instances by specifying tag.
  Properties:
    Service: ECS
    API: DescribeInstances
    Parameters:
      Tags:
      - Key: '{{ tagKey }}'
        Value: '{{ tagValue }}'
  Outputs:
    instanceIds:
      Type: List
      ValueSelector: Instances.Instance[].InstanceId
- Name: checkInstanceReady
  Action: ACS::CheckFor
  Description: Checks ECS instance is in specified tag's instances.
  Properties:
    Service: ECS
    API: DescribeInstances
    Parameters:
      InstanceIds:
        - '{{ whenInstanceStopped.instanceId }}'
    DesiredValues: '{{describeInstancesByTag.instanceIds}}'
    PropertySelector: Instances.Instance[].InstanceId
- Name: startInstance
  Action: 'ACS::ExecuteAPI'
  Properties:
    Service: ECS
    API: StartInstance
    Parameters:
      InstanceId: '{{ whenInstanceStopped.instanceId }}'
  Description: start instance.
- Name: untilInstanceReady
  Action: 'ACS::WaitFor'
  Description: Waits for the ECS instance Running.
  Properties:
    Service: ECS
    API: DescribeInstances
    Parameters:
      InstanceIds:
        - '{{ whenInstanceStopped.instanceId }}'
    DesiredValues:
      - Running
    PropertySelector: 'Instances.Instance[].Status'
Outputs:
  InstanceId:
    Value: '{{ whenInstanceStopped.instanceId  }}'
    Type: String

模版参数

  • tagKey:要自启动的ECS实例所在Tag的key值。
  • tagValue:  要自启动的ECS实例所在Tag的Value值。

操作指南

  1. 首先登录到运维编排控制台 。
  2. 单击 自定义模版,单击 创建模版 。
  3. 单击 YAML 。
    将编写好的YAML格式模版内容粘贴到编辑框内,或者您也可直接在编辑框中编写该模版。
    4840_b236_b0f413e625c2
  4. 单击 校验模版。 

    • 若模板内容已通过校验,继续下一步。
    • 若模板内容校验失败,请根据提示内容调整模版。
  5. 填写 模版名称。
    本文此处填写AutoStartEcsWhenStopped。
    5f_4e1e_8be8_aea8a2dd58d6
  6. 单击 创建模版 。
    自定义模版列表中可通过模版名称快速找到成功创建的模版。
  7. 单击 创建执行 。
  8. 风险确认模式 选择 客户了解风险,无需确认 。
    _1cd5_4199_b2c8_61e3fd5bcdf4
  9. 单击 下一步,设置参数 。

    • tagKey:要自启动的ECS实例所在Tag的key值。
    • tagValue:  要自启动的ECS实例所在Tag的Value值。
      _3174_4d57_a280_1b8b52077ce0
  10. 单击 下一步,确认创建 ,单击 创建执行 。
    执行管理中可查看刚刚创建的执行,若创建执行成功,且执行状态处于等待中,则表示ECS实例已开始被监控,一旦有ECS实例被停止,则会触发whenInstanceStopped任务后面的任务逻辑,即该Tag下被停止的实例自动启动。
    _48ee_bdb7_4329441ce5bc
  11. 那么我们现在就演示下ECS实例自启动,下图是该Tag下运行中的3台实例。
    _4c51_b4a2_9089e0fbee31
  12. 我们现在通过手动停止这3台实例,模拟实例意外停止。
    _bae6_084fce3052aa
  13. 当实例停止后,执行状态由等待中转换为运行中,开始执行对停止的ECS实例的启动。
    _4b1a_b58a_5a361dd1ec5d
  14. 片刻后,刷新ECS实例的状态,可发现该Tag下被停止的ECS实例已经自启动完成,又变回了运行中状态。
    _9fd3_4c51_b4a2_9089e0fbee31
相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
16天前
|
弹性计算 监控 负载均衡
|
13天前
|
存储 缓存 安全
阿里云服务器内存型r7、r8a、r8y、r8i实例区别及选择参考
随着阿里云2024年金秋云创季的开始,目前在阿里云的活动中,属于内存型实例规格的云服务器有内存型r7、内存型r8a、内存型r8y和内存型r8i这几个实例规格,相比于活动内的经济型e和通用算力型u1等实例规格来说,这些实例规格等性能更强,虽然这几个实例规格的云服务器通常处理器与内存的配比为都是1:8,但是他们在处理器、存储、网络、安全等方面等性能并不是一样的,所以他们的适用场景也有着不同。本文为大家介绍内存型r7、r8a、r8y、r8i实例的性能、适用场景的区别以及选择参考。
|
12天前
|
弹性计算 运维
新 企业级ECS集群运维管理训练营 打卡学习领好礼
新 企业级ECS集群运维管理训练营 打卡学习领好礼
54 3
|
16天前
|
机器学习/深度学习 弹性计算 编解码
阿里云服务器c7/c8a/c8y/c8i/g7/g8a/g8y/g8i/r7/r8a/r8y/r8i实例区别及选择参考
在阿里云目前的活动中,除了特价的轻量应用服务器和经济型e及通用算力型u1实例之外,属于计算型实例的实例有计算型c7/c8a/c8y/c8i,属于通用型实例的有通用型g7/g8a/g8y/g8i,属于内存型实例的有内存型r7/r8a/r8y/r8i。本文将详细介绍阿里云服务器中的c7、c8a、c8y、c8i、g7、g8a、g8y、g8i、r7、r8a、r8y、r8i等实例规格的性能、适用场景及选择参考,帮助用户更好地选择合适的云服务器实例。
|
18天前
|
存储 人工智能 安全
阿里云服务器通用型g7、g8a、g8y、g8i实例区别及选择指南
目前在阿里云的活动中,属于通用型实例规格的云服务器有通用型g7、通用型g8a、通用型g8y和通用型g8i这几个实例规格,相比于活动内的经济型e和通用算力型u1等实例规格来说,这些实例规格等性能更强,虽然这几个实例规格的云服务器通常处理器与内存的配比为都是1:4,但是他们在处理器、存储、网络、安全等方面等性能并不是一样的,所以他们的适用场景也有着不同。本文为大家介绍通用型g7、g8a、g8y、g8i实例的性能、适用场景的区别以及选择参考。
|
弹性计算 负载均衡 测试技术
运维编排系列场景--跨可用区批量克隆ECS实例
背景可用区(Availability Zone,简称 AZ)是指在同一地域内,电力和网络互相独立的物理区域。例如,华北1(青岛)地域支持2个可用区,包括青岛 可用区B和青岛 可用区C。同一可用区内实例之间的网络延时更小,其用户访问速度更快。将应用部署在多个可用区可以提高应用的可用性,降低故障风险。然而,在实际应用中,有时需要将实例从一个可用区迁移到另一个可用区,以实现故障切换、负载均衡、数据备份与
运维编排系列场景--跨可用区批量克隆ECS实例
|
弹性计算 运维 数据中心
运维编排系列场景--跨账号跨地域实例操作系统补丁修复
运维编排(OOS) 简介什么是OOSOperation Orchestration Service,简称OOS,是全面、免费的云上自动化运维平台,提供运维任务的管理和执行。典型使用场景包括:事件驱动运维,批量操作运维,定时运维任务,跨地域运维等,OOS为重要运维场景提供审批,通知等功能。OOS帮您实现标准化运维任务,从而实践运维即代码(Operations as Code)的先进理念。关于OOS更
|
弹性计算 运维 监控
运维编排系列场景--通过告警触发自动重启CPU使用率高的ECS实例
运维编排(OOS) 简介什么是OOSOperation Orchestration Service,简称OOS,是全面、免费的云上自动化运维平台,提供运维任务的管理和执行。典型使用场景包括:事件驱动运维,批量操作运维,定时运维任务,跨地域运维等,OOS为重要运维场景提供审批,通知等功能。OOS帮您实现标准化运维任务,从而实践运维即代码(Operations as Code)的先进理念。关于OOS更
|
弹性计算 运维 监控
运维编排系列场景--使用定时运维进行状态逼近
### 面向终态的运维 阿里云运维编排服务(Operation Orchestration Service,简称OOS),是阿里云提供的云上自动化运维服务,能够自动化管理和执行任务。OOS支持定时运维功能,可以周期性重复执行指定的运维任务。基于定时运维,OOS能够对云资源的状态进行管理,实现面向终态的运维。 本文以[ilogtail](https://help.aliyun.com/d
运维编排系列场景--使用定时运维进行状态逼近
|
弹性计算 运维 网络安全
运维编排系列场景--批量管理自定义的软件包
运维编排(OOS) 简介 什么是OOS Operation Orchestration Service,简称OOS,是全面、免费的云上自动化运维平台,提供运维任务的管理和执行。典型使用场景包括:事件驱动运维,批量操作运维,定时运维任务,跨地域运维等,OOS为重要运维场景提供审批,通知等功能。OOS帮您实现标准化运维任务,从而实践运维即代码(Operations as Code)的先进理念。关于
运维编排系列场景--批量管理自定义的软件包