弹性计算技术公开课——CloudOps云上运维季圆满结束了,阿里云弹性计算技术专家郑大禹在本次系列课程中带来了主题为《使用OOS进行云上自动化运维》的课程分享,课程内容涵盖云上资源运维面临的挑战、OOS 自动化运维能力揭秘、使用 OOS 云上 CloudOps 实践等方向。
以下是他的课程内容整理,供各位开发者学习:
1. 云上资源运维面临的挑战
云上资源有如下特点,首先是规模大,用户不需要建立自己的基础设施,可以理论上无限的购买所需要的云资源。另外,由于云上资源的弹性,用户可以根据自身的需求,随时随地的获取所需的云资源。这些都造成云上资源会比自建的基础设施规模更大。其次就是云上资源种类多。除了传统的计算,存储,网络资源外,云上提供了更多样化的服务。例如数据库,消息队列、人工智能 ai、物联网等多种类型的资源。
用户可以根据自身的需求购买相应的资源,省去了自身搭建的繁琐流程。由云上提供了各种类型的云服务,使得用户能专注于开发业务自身的逻辑。越来越多的技术架构下沉到云资源层。这一方面让用户无需关注基础设施的维护与管理,同时也使得云上资源的场景变得更加复杂。
正是由于云上资源的这些特点,资源的运维在效率,成本,安全等方面也面临着相应的挑战。
1) 云资源规模快速增长
首先,云资源规模在快速的增长。云资源规模会随着业务的发展快速增长,企业需要管理更多的与计算,存储,网络等资源,这将大大增加运维的复杂性,需要企业投入更多的时间和人力资源来管理监控这些资源。企业需要建立有效的运维流程和工具,以提高资源的运维效率和可靠性。
下面以某云账号下的云资源规模为例,在开始的阶段,业务处于启动期,只需要几台 ECS 实例部署 web 服务就可以满足需求。时期云资源的增长比较平稳。采用一些手动运维的方式或者简单运维脚本的方式就能完成这些少量资源的管理。
但是随着业务的发展,提供的服务更多,包括 API 大数据服务,资源规模呈指数限制增长。如果采取和之前相同的运维方式需要的人力也在积极增长。这时如何通过自动化的方式将之前少量资源下的运维经验批量复制到大致大量资源上,从而提高运维效率是一个挑战。
2) 云资源成本也在快速的增长
云资源成本随着资源规模相应增长,企业需要进行有效的成本管理和优化,包括分析和监控资源的使用情况,采用适当的成本节约测试,比如节省停机模式,临时带宽升级等。与此同时,如何自动文化的将这些成本优化、运维措施应用起来,也成为了一个挑战。
在某云账号下的云资源成本为例,在开始的阶段企业仅引入了少量的 ecs 云资源,通过一些应用,一些成本优化的最佳实践方式能够降低云资源的整体成本。但随着业务的发展,引入了更多比如 ecs 资源或者其他云资源,包括例如数据库,消息队列等,需要对新引入的资源持续的进行成本优化。可以看到云资源的成本呈现了波动上涨的趋势。
这时如何通过提升云资源的利用率,降低成本,自然也成为了另一个挑战。同时,如何通过将之前成本优化的经验自动推广到新引入的资源上,避免人工优化,也是一个关键点。
3) 安全合规问题日益重要
云上的安全合规问题包括数据泄露,滥用服务系统漏洞、帐号劫持,拒绝服务攻击,不安全应用接口等。其实针对这些安全合规问题,云上已经有了不少的最佳事件。
比如随着云资源规模的增长,企业需要定期进行系统漏洞的管理,更新和升级系统的补丁、修复已知的安全漏洞。针对一些公司或者行业的合规要求,企业需要定期对云资源进行合规性检查,修复不合规的资源。
例如,某些行业对可靠性要求高,需要进行多可用区,甚至跨地域的容灾,企业就需要根据合规要求,对相应的云资源进行检查。如果资源不满足容灾要求还有进行相应的修正。整个过程耗时耗力,如何对部分安全合规要求进行自动的检查,并对不合规的资源进行自动修正,又成为了云上运维的又一挑战。
4) CloudOps 最佳实践如何落地
虽然云上绝大部分的运维操作已经封装成了 open api,但是这些最佳实践的场景往往不是简单的一个 api 的调用,或简单的云上云操作。它是一系列运维操作的组合,如何将众多的最佳实践自动化的应用到云资源上这将成为一个命题,OOS 运维编排服务正式提供了这样一种任务编排能力的平台。
2. OOS 自动化运维能力揭秘
简单介绍一下 OOS 服务,运维编排服务简称 OOS,是全面免费的云上自动化任务编排平台提供了自动化任务的管理和执行,作为平台提供了一系列自动化和半自动化的平台能力实,践基础设施运维及代码的 cloud office as Code 的理念。
首先在自动化能力方面, OOS 提供了批量操作,跨地域操作条件控制,并发控制等能力使得运维任务能够在多地域大批量资源等复杂场景下,高效稳定的运行。其次,OOS 也支持审批,暂停等半自动化功能。
例如对一些重要的运维操作,有些情况下会需要相关的或需要关键人员的审批通过才能执行,这是可以在 OOS 任务流程中加入审批步骤,通知相关人员进行审批,审批之后再自动执行。另外,对于一些无法自动化的步骤 OOS 也支持暂停操作,有相关的人员人工确认后再执行自动化操作,那么 OOS 还支持多种的触发类型,包括立即操作,定时操作,靠近触发操作事件驱动操作。
比如,如果我想现在立刻执行某个命令,就可以采用一级操作,这也是默认的方式。然后如果想明天晚上 8 点执行命令或者是每天晚上 8 点执行命令,这种周期性的操作或者延迟操作可以采用定时操作,如果我想针对一些云监控的告警条件。
比如当 CPU 使用量高于 80%的时候,进行一些清理的操作,或者是当磁盘到使用量高于 80%的时候删掉一些不必要的文件,这时可以使用告警触发操作事件驱动操作,是结合我们云监控的事件,以 ECS 事件为例。
当在 ECS 启动的时候来进行一些初始化的操作,这时可以采用事件操作,OOS 是在这些能力的基础上提供了托管服务稳定,可靠,无需用户在 ECS 或者产品中进行安装配置,OOS 支持编排 70 多种常用阿里产品,提供 200 多运维任务场景,公共模板开箱即用,此外, OOS 所有的运维操作都可以在 action trio 中审计保障用户的审计需求。
基于上述的平台能力 OOS 构建了强大的 api 编排能力,以启动 ECS 实例并安装软件为例,在我们常用的运维方式需要先通过 start instance 启动示例。因为 star instance 集中实例是一个异步的过程,所以必须要等实例是运行中的状态才能在后续进行安装软件的操作。
所以需要通过不停的 describe instance 来检查实例的系统状态。然后直到实例的状态是运行中,此时再通过 come on 的运行命令的 API 进行安装软件的命令。安装命令过程也是一个异步过程。所以我们需要通过不停的轮询来等待命令执行完成。在命令执行完成之后还需要通过一个 api described invocation result 来查询命令的结果输出,来确定命令是否按照我们期望来执行。
在 OOS 的任务流程中,将第一部分启动实例以及等待实例启动过程的分装成一个云产品动作,就是 ACS,ECS,StartInstance在过程中,它既完成了启动成立的过程。同时它会等待实例已经是运行中,当动作完成状态,可以立即来进行运行命令的操作,无需再等待。然后同时进行安装命令动作,并等待命令执行完成,最终把结果输出。
当这两个动作完全执行完成之后,现在的结果就会输出到任务的输出中,这样就能够一眼的看到命令是否按预期来执行,不用来维护复杂的流程。
平台能力和 api 编排能力的基础上后来是构建出了丰富的运维场景。包括常用运维任务、批量操作实例、批量管理软件、定时开关机、带宽临时升级、创建和更新镜像、清理磁盘,这些常用运维任务都是我们在收集用户的使用场景的基础上,抽象出来最常用的,这些通用的运维任务,把它提取出来,放在 OOS 的控制台。
同时,对这些操作的流程进行一些优化。另外, OOS 在提供这些基础能力的基础之上,还提供一些辅助场景的能力,包括软件包管理,参数管理,配置清单,补丁管理。软件包管理是在实例中安装阿里云 agient 或者软件包管理工具可管理的软件。
同时软件包还支持企业将自己的软件上传到 OOS 上,通过软件包进行版本管理来安装到对应的 ecs 实例,参数管理提供对参数的存储管理服务,支持文本数据和加密数据两种格式.加密数据这边采用了 MS 来保障加密的安全。配置清单是能够获取云服务器的 OOS 内部的一些信息,这些信息无法通过API来获取。
例如系统内软件包的安装的信息,另外还有系统中文件的一些信息,包括文件的大小,文件的更新时间。这些也都是无法通过API 获取。
所以这些信息我们是可以通过配置清单来获取,很自然的场景以刚才软件安装的信息为例,我们可以通过筛选一些未安装软件的实例,或者是安装的是软件的低版本的示例进行更新,把软件更新到最新的一个版本.
补丁管理是会对 ECS 实例的补丁系统补丁进行扫描或安装。
用户可以根据自己的需要灵活的设置补丁的扫描安装条件。比如在安装中只安装某个操作系统版本的补丁,比如只安装 windows2022 的操作系统,专门的补丁或者只安装中高危补丁,这样能够满足用户自定义的安装需求。
更多精彩内容,欢迎观看:
带你读《云上自动化运维宝典》——如何使用OOS有效进行云上自动化运维(2):https://developer.aliyun.com/article/1405368