运维编排服务系列-----自动启动意外停止的ECS实例
有时ECS实例可能因为某些意外原因被停止,可通过OOS的事件触发器对ECS实例进行监控,一旦实例停止,则对实例自动地执行恢复逻辑,比如自动启动,进而实现ECS实例的快恢复。
步骤拆分
- 对账号下的ECS实例进行监控。
- 一旦有ECS实例停止,则检查其是否为要自动启动的Tag下的ECS实例。
- 若不是该Tag下的实例,则忽略此ECS实例的停止,若是该Tag下的ECS实例,则执行后面逻辑。
- 对实例做一些恢复逻辑,此处对实例进行启动。
- 等待恢复逻辑执行成功,此处等待停止的实例启动成功。
OOS模版任务
- 通过OOS事件触发器监控所有的ECS实例是否停止。
- 若有实例停止,检查该实例是否为要被自启动Tag下的ECS实例。
- 若不是则忽略,实例的停止,若是则对该实例进行启动。
- 等待实例状态变为运行中。
模版内容
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值。
操作指南
- 首先登录到运维编排控制台 。
- 单击 自定义模版,单击 创建模版 。
- 单击 YAML 。
将编写好的YAML格式模版内容粘贴到编辑框内,或者您也可直接在编辑框中编写该模版。
-
单击 校验模版。
- 若模板内容已通过校验,继续下一步。
- 若模板内容校验失败,请根据提示内容调整模版。
- 填写 模版名称。
本文此处填写AutoStartEcsWhenStopped。
- 单击 创建模版 。
在自定义模版列表中可通过模版名称快速找到成功创建的模版。 - 单击 创建执行 。
- 风险确认模式 选择 客户了解风险,无需确认 。
-
单击 下一步,设置参数 。
- tagKey:要自启动的ECS实例所在Tag的key值。
- tagValue: 要自启动的ECS实例所在Tag的Value值。
- 单击 下一步,确认创建 ,单击 创建执行 。
在执行管理中可查看刚刚创建的执行,若创建执行成功,且执行状态处于等待中,则表示ECS实例已开始被监控,一旦有ECS实例被停止,则会触发whenInstanceStopped任务后面的任务逻辑,即该Tag下被停止的实例自动启动。
- 那么我们现在就演示下ECS实例自启动,下图是该Tag下运行中的3台实例。
- 我们现在通过手动停止这3台实例,模拟实例意外停止。
- 当实例停止后,执行状态由等待中转换为运行中,开始执行对停止的ECS实例的启动。
- 片刻后,刷新ECS实例的状态,可发现该Tag下被停止的ECS实例已经自启动完成,又变回了运行中状态。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
使用自定义指标进行Pod弹性伸缩
Horizontal Pod Autoscaling,简称HPA,是Kubernetes中实现Pod水平自动伸缩功能的资源对象。Kubernetes 1.9 或更高版本支持HPA V2版本,允许我们是用自定义监控指标来控制Pod数目。本文用阿里云容器服务来介绍HPA使用自定义指标进行弹性伸缩的功能。 安装配置Prometheus和Prometheus adaptor 我们使用Prometheus收集指标,通过Prometheus adaptor来扩展Kubernetes 自定义监控指标。使用阿里云容器服务控制台创建好集群,并创建monitoring命名空间。然后进行如下步骤: 安装Prometheus 在应用目录-App Hub中搜索prometheus可以看到如下组件 点击prometheus进入安装页面,点击参数进行查看并配置(本文persistentVolume enabled设置为false,即使用emptyDir),选择集群命名空间后点击安装。 安装Prometheus adaptor 安装过程同上,注意配置参数中prometheus url要使用之前部署好的promethe...
- 下一篇
Rex-Ray配置VirtualBox backend
【1】Installation REX-Ray curl -sSL https://rexray.io/install | sh - 【2】然后创建并编辑 REX-Ray 的配置文件 /etc/rexray/config.yml libstorage: service: virtualbox virtualbox: endpoint: http://192.168.57.1:18083 volumePath: /Users/ztr/VirtualBox/Volumes controllerName: SATA 【3】在VirtualBox宿主机上启动vboxwebsrv服务 【4】关闭 VirtualBox 的登录认证: 【5】在关机状态下修改虚拟机 master和 docker1 的 Storage 配置 关闭虚拟机master和docker1 2.删除IDE存储介质,保留SATA存储介质 3.设置SATA controller 的 port 数量的最大值 为 30 【6】开启master和docker1, 运行rexray volume ls 测试 Rex-Ray 是否能够正常工作...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题