关于自动化:阿里云鲍文乐基于事件的自动化运维最佳实践

5次阅读

共计 3300 个字符,预计需要花费 9 分钟才能阅读完成。

摘要:2022 年 7 月 25 日,云上自动化运维 CloudOps 系列沙龙_第二弹正式开启!阿里云弹性计算技术专家鲍文乐带来的主题分享是《基于事件的自动化运维最佳实际》,以下是他的演讲内容整顿,本篇内容次要分为四个局部:

  1.    为何事件如此重要
  2.    让事件告诉更无效
  3.    事件驱动的运维架构
  4.    云上托管事件运维

01 为何事件如此重要

零碎事件代表了云资源状态的变动。以弹性计算的零碎事件为例,上图代表弹性计算的零碎事件起源。

为了给用户提供云服务器,须要底层的物理根底设置,以及两头的虚拟化服务。在虚拟化服务上,运行 Guest OS,最终给用户提供服务。

在运维类零碎事件局部,阿里云负责运维物理基础设施和虚拟化服务。当计算、存储、网络组件呈现故障,阿里云会收回运维类的零碎事件。这些运维类的零碎事件,要云厂商和用户通过合作,一起运维。

在资源状态变动类事件局部,不肯定代表故障或者问题。但它是实现事件驱动架构的根底。

如上图所示,展现了局部典型的零碎事件。

在非预期异样方面,实例宕机可能导致用户的服务中断。如果本地盘的实例产生宕机,阿里云无奈替用户决定,是否将实例迁徙,所以用户必须响应。

在打算内运维方面,最常见的是被动运维类事件。实例因系统维护打算重启。当计算、存储、网络等底层硬件呈现问题,但没有重大到立即宕机。

在这种状况下,阿里云检测之后,会给用户发送一个打算类运维事件。在肯定工夫内,如果用户不进行响应,阿里云会帮用户把这台机器迁徙到一个衰弱的硬件上。

如果用户响应,能够在阿里云给出的的操作窗口里,抉择一个对本人最无利的,对服务影响最小的工夫点。提前迁徙实例,从而躲避打算重启。

在费用方面,如果实例到期停机,零碎会在实例到期前三天,收回事件。用户须要布局本人的续费形式,比方主动续费。

在状态告诉方面,实例生命周期状态变动代表,ECS 的实例管控状态发生变化。比方实例创立,实例启动,实例停机,实例开释等。

上图展示了云上事件运维,常见的几个状态。从下往上,自动化水平越来越高。阿里云举荐用户尽量做到事件运维的自动化。

第一层,用户被动的接管告诉,登录控制台手工解决。
第二层,用户有肯定处理事件的意识,被动订阅事件告诉。
第三层,用户有肯定的技术实力,建设了本人的自动化或半自动化的运维零碎,通过事件驱动的架构,按需解决各种级别的事件音讯。在解决时,通过调用云产品的 API 运维。
第四层,托管的自动化运维。用户齐全把事件的运维逻辑,放到阿里云上,由阿里云托管运行。

02 让事件告诉更无效

接下来,讲一讲如何让事件告诉更准确。云监控提供所有云产品零碎事件,对立的查问入口以及事件报警性能。

目前,曾经有一百多种云产品,将本人的事件信息发送给云监控。包含云服务器、云数据库、容器服务等。

云监控在用户侧,提供两大类的服务:

第一类,用户能够被动查问。通过控制台查问零碎事件,也能够通过 Open API 查问零碎事件。

第二类,从零碎往用户的事件告诉。基于云监控事件的报警规定,订阅事件告诉的性能。

云监控的告诉渠道分两大类:

第一类,面向人工。包含电话、短信、邮件以及基于 Webhook 的工具,比方钉钉、飞书等等。

第二类,面向自动化运维程序或者运维零碎。有音讯队列、日志服务、函数计算、URL 回调等。基于软件库,能够实现事件的自动化解决。

上图是云监控事件的通用格局。一百多种云产品的零碎事件,会集到云监控之后,纳入对立的事件模型。

事件数据是 json 格局,外层是事件的公共属性,比方事件惟一的 ID,事件起源等,事件级别,事件名称,事件产生的工夫、所在地区等等。

其中,content 字段代表事件的内容。它和具体某一类事件相关联。云产品的事件逻辑决定了,不同事件有不同的内容。

EventRule 是事件的筛选规定,依照事件的公共属性以及事件 content 对事件进行匹配。

Rule Targets 是事件告诉的指标。其中,报警告诉代表人工告诉,包含电话、短信、邮件、钉钉、机器人等等。音讯服务队列、函数计算、URL 回调、日志服务等等,供程序自动化生产应用。

一旦呈现合乎匹配事件报警规定的事件,云监控会把事件路由给相应的 Target。如果抉择多个 Target,每个 Target 都会收到告诉。

为了让事件告诉更无效,阿里云通过应用标签,对资源进行分组,让报警规定的粒度更小。而后,通过动静标签规定,创立云监控的利用分组。

于是云监控的利用分组和标签,产生了一对一的关系。用户也能够在利用管理系统,通过导入标签,创立利用分组。利用治理会主动配置云监控的利用分组。

而后,基于分组创立报警规定。首先,依照不同的角色,不同的职责,创立不同的联系人分组。接下来,依照事件的重大水平和接管人,划分多个报警规定。

除此之外,用户能够利用云监控的筛选能力,做细粒度筛选。在一个事件里可能有实例创立,开释,启动、进行等多种状态。用户能够通过关键词过滤或者是 SQLFilter,准确地筛选一类事件里的某一类状态。

在抉择告诉形式方面,用户依照事件的级别,抉择不同的告诉形式。防止事件告诉沦为垃圾短信和垃圾邮件,举荐钉钉群报警。

事件规定细化之后,创立事件报警模板。把模板利用到 N 个分组上。从而实现了报警规定的批量复制,加重保护压力。

03 事件驱动的运维架构

基于 OpenAPI 轮询资源状态获取状态变更实时性较低,有大量冗余申请,零碎耗费高,无限流的危险,并且依赖多个云产品 API,进一步减少了复杂性。阿里云通过革新事件驱动架构,进步了实时性和稳定性,升高了零碎耗费。

某客户原先通过轮询云产品的 API,获取事件信息,存储到运维零碎。运维团队把事件推送到运维门户上,由各个业务零碎负责响应事件。业务零碎不间接上阿里云控制台。

因为它应用了多个云产品,运维零碎里有 N 段轮询代码,实时性也不好。

将零碎革新成事件驱动架构。零碎在初始化阶段,在云监控设置了事件报警规定。云产品公布了事件之后,云监控检测到事件匹配,把这个事件推送到指定客户的音讯队列里。客户的运维零碎从音讯队列里,拉取事件音讯,存储之后,推送给运维门户。

通过上述操作,简化了代码逻辑,升高了资源耗费,进步了实时性和稳定性。

在弹性伸缩方面,当实例开释之后,ECS 管控会公布一个实例状态的变更事件。云监控依据规定,路由给弹性伸缩音讯队列。而后,弹性伸缩生产事件音讯获取实例信息。弹性伸缩将实例从伸缩组移除,依据伸缩规定,进行下一步操作。

04 云上托管事件运维

运维编排 OOS 零碎,可能自动化治理和执行运维工作。相比传统的纯手工运维或脚本运维,门槛低、标准平安、效率高、易保护、收费。

在运维编排里,提供了事件运维性能。首先,设定事件规定,限定资源范畴。而后,抉择事件触发之后执行的运维模板,设定模板参数。

阿里云提供的抢占式实例,是一个比拟便宜的实例。购买抢占式实例之后,会有一个小时的保护期。一小时后,实例随时有可能被开释回收。在回收前的五分钟,抢占式实例会公布一个实例中断告诉。

通过 OOS 事件运维,在实例被回收之前,摘掉所有与之关联的负载平衡,实现不影响业务的优雅下线。

在运维模板里,一共分了五个步骤。

第一,eventTrigger。即监控抢占式实例的开释事件。
第二,describeSLB。即查问开释的抢占实例所在负载平衡 ID。
第三,setBackendServers。行将开释的实例在负载平衡上的权重设置为 0。
第四,waitConnectionExpire。即期待曾经建设的网络连接断开。
第五,removeBackendServers,行将开释的实例从负载平衡后端服务器列表上移除。

Q&A 环节,用户问答

Q1 资源编排 ROS 和 OOS 有买通的最佳实际案例吗?

答:买通没有问题。ROS 将 OOS 模板和执行定义为资源,反对执行 OOS 模板。因为 OOS 通过 API 编排,所以 OOS 里能够调用 ROS 的 API,从而创立一个资源栈。

Q2 OOS 运维编排的模板必须本人配置吗?

答:不是。编排提供了一些常见的运维场景,能够在控制台操作,点击配置即可。

Q3 突发性能实例的性能受限怎么办?

答:服务可能受损,须要查看突发性能实例的应用是否合乎预期。能够思考对实例升配或者更换成非突发性能实例。

正文完
 0