运维编排场景系列-----自动从负载均衡移除停止的ECS实例
场景简介
挂载在负载均衡上的ECS实例,存在被意外停止的可能性,若实例意外停止后没有得到及时处理,负载均衡上一直挂载着异常状态的实例,或被动地等待负载均衡的处理异常,这种情况肯定不是我们想要的。
通过运维编排服务中事件触发器动作可对您运行中实例进行监控,一旦实例进入停止状态,则立刻进行一些逻辑处理,确保异常实例及时移除。
解决方案
-
步骤拆分
- 对ECS实例通过OOS的事件触发器进行有效监控,保证实例中断事件发生后及时得到处理。
- 检查中断的实例是否为当前负载均衡上的,保证后续任务只针对该负载均衡上的中断实例执行。
- 将中断实例从负载均衡后端服务器列表移除,主动剔除问题实例。
- 模版内容(YAML格式)
--- FormatVersion: OOS-2019-06-01 Description: Remove ECS Instance from SLB when Instance Status is Stopped. Parameters: regionId: Description: The Region Id of SLB and Instance. Type: String MinLength: 1 MaxLength: 30 OOSAssumeRole: Description: The RAM role to be assumed by OOS. Type: String Default: OOSServiceRole loadBalancerId: Description: The ID of the SLB instance. Type: String AllowedPattern: lb-[A-Za-z0-9]* MaxLength: 30 MinLength: 1 RamRole: '{{OOSAssumeRole}}' Tasks: - Name: whenInstanceStopped Action: 'ACS::EventTrigger' Properties: Product: ECS Name: - 'Instance:StateChange' Content: state: - Stopped Outputs: instanceId: ValueSelector: content.resourceId Type: String - Name: checkNeedRemoveOrNot Action: ACS::CheckFor Description: check the interrupted Instance is being added on SLB or Not. OnError: ACS::END OnSuccess: ACS::NEXT Properties: Service: SLB API: DescribeLoadBalancerAttribute Parameters: RegionId: '{{ regionId }}' LoadBalancerId: '{{ loadBalancerId }}' DesiredValues: - "{{whenInstanceStopped.instanceId}}" PropertySelector: 'BackendServers.BackendServer[].ServerId|select(.=="{{whenInstanceStopped.instanceId}}")' - Name: setEcsOnBackendServers Action: ACS::ExecuteApi Description: Sets ECS instances no weight on backend servers. Properties: Service: SLB API: SetBackendServers Parameters: RegionId: '{{ regionId }}' BackendServers: - ServerId: '{{ whenInstanceStopped.instanceId }}' Weight: 0 LoadBalancerId: '{{ loadBalancerId }}' Outputs: backendServer: Type: List ValueSelector: BackendServers.BackendServer[] - Name: removeEcsFromBackendServers Action: 'ACS::ExecuteApi' Description: Remove ECS instances to backend servers. Properties: Service: SLB API: RemoveBackendServers Parameters: RegionId: '{{ regionId }}' LoadBalancerId: '{{ loadBalancerId }}' BackendServers: - ServerId: '{{ whenInstanceStopped.instanceId }}' Weight: 0 Outputs: backendServer: Type: List ValueSelector: BackendServers.BackendServer[]
操作指南
- 首先登录到运维编排控制台 。
- 单击 自定义模版 ,单击 创建模版 。
- 单击 YAML 。
将编写好的YAML格式模版内容粘贴到编辑框内,或者您也可直接在编辑框中编写该模版。 -
单击 校验模版。
- 若模板内容已通过校验,继续下一步。
- 若模板内容校验失败,请根据提示内容调整模版。
- 填写 模版名称。
本文此处填写"remove_interrupted_instance_from_slb1" 。 - 单击 创建模版 。
在自定义模版列表中可通过模版名称快速找到该模版。 - 单击 创建执行 。
- 风险确认模式 选择 客户了解风险,无需确认 。
-
单击 下一步,设置参数 。
- regionId :将要操作的实例及负载均衡所在的Region。
- loadBalancerId:当该负载均衡上有ECS实例停止时,将从该负载均衡的后端服务器列表上移除停止的ECS实例。
- 单击 下一步,确认创建 ,单击 创建执行 。
在执行管理中可查看刚刚创建的执行,若创建执行成功,且执行状态处于等待中,则表示ECS实例已开始被监控,一旦有该负载均衡上的ECS实例被停止,则会触发whenInstanceStopped任务后面的任务执行,该ECS实例会被自动从负载均衡上移除。 - 那么我们验证下,验证前,在该负载均衡上需要有一个已挂载且正常运行的ECS实例。
- 停止负载均衡上正常运行的ECS实例。
- 负载均衡挂载的ECS实例已停止。
- 当该ECS实例已停止时,该模版执行中whenInstanceStopped任务下面的任务会被触发,且执行状态从等待中变为运行中,即触发了自动从负载均衡移除已停止的ECS实例。
- 现在我们在该负载均衡服务器列表中查询该实例Id,发现服务器列表中已经没有了该台ECS实例,表示自动移除成功。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
运维编排场景系列---运行远端shell脚本
场景介绍 ECI在使用OOS的时候,遇到了command比较复杂的情况,通过runcommand一行一行的敲,有点麻烦,需要直接运行一个OSS里面的script,这样ECI同学可以单独维护OSS里的文件。本文介绍如何用OOS在指定实例中运行OSS中的shell脚本。 解决方案 我们首先准备一台ECS实例,远程连接管理终端,在OSS上传一个shell脚本:内容为: # /bin/bash mkdir test_run_shell; 先登录到运维编排控制台。如果您之前从未开通过OOS服务,请点击“立即开通”按钮,即可一键开通。OOS运维编排是安全免费的服务,请放心开通。 开通后在公共模板中搜索'ACS-ECS-RunRemoteShellScript'这个模板。点击“创建执行”的按钮,选择“客户了解风险,无需确认”的按钮,点击“下一步:设置参数”。在参数设置页,需要输入如下参数: 参数说明: instanceId:实例ID InstanceRole:挂载到实例的RAMRole名称 srcUrl:脚本在oss中的目录 destUrl:实例中下载脚本的目录 fileName:脚本名称 work...
- 下一篇
使用自定义指标进行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...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,8上快速安装Gitea,搭建Git服务器