阿里云自动化部署和运维的最佳实践-基于YAML的编排

本文涉及的产品
资源编排,不限时长
系统运维管理,不限时长
简介: 为了提升运维开发人员的开发效率,降低开发的难度,阿里云推出了资源编排(Resource Orchestration Service,简称ROS),和运维编排Operation Orchestration Service,简称OOS)这两个编排平台。作为平台级的产品,阿里云会负责保证其稳定可靠,用户只需要按照平台的规则制定自己的运维逻辑。

  运维,是从IT诞生起就一直存在的重要角色,为软硬件系统的整体稳定性、效率、安全等指标负责。最近几年,伴随着云计算和DevOps的广泛应用,运维更是成了舞台中央最亮眼的主角之一。

  值得关注的是,云时代的运维,正在颠覆传统的运维。传统的运维,需要能够手动操作来自众多厂家的计算、网络、存储等软硬件,并为此学习传统“大厂”的众多认证,例如,数据库运维要学Oracle的认证,系统运维要学IBM的认证,虚拟化运维要学VMware的认证,等等。但企业上云之后,云厂商将计算、存储、网络的操作全部抽象成了软件定义的API接口,并用统一风格的SDK、命令行进行封装,从而大幅降低了运维操作的门槛。云上的运维人员不再需要感知底层基础设施的细节,更不需要考取高难度的认证。
  当然,云时代也对运维人员提出了新的要求和挑战。首当其冲的,就是DevOps,强调高度的自动化,要求运维人员具备一定的开发技能。以国内最大的云厂商阿里云为例,运维人员需要学习并掌握阿里云主流云产品(云服务器,云数据库,对象存储,专有网络等等)的API,才能从容的根据自己企业的实际运维需要,开发实现自动化运维系统。这样一来,运维操作工程师,就升级成了运维开发工程师。

  既然谈到了运维开发,就离不开编程语言和开发平台。运维开发与普通软件开发不同,对于快速开发的要求应该是第一位的,因为运维开发的需求变化更频繁,开发周期更短,人力也更为紧张。阿里云提供的JavaPythonGo等语言的SDK,虽然能力强大,但是能力过于“原子”。若没有平台的支持,要运维人员自己从头搭建一个自动化运维系统,并保证其高效稳定持续运行,难度和投入都很大。为了保证生产系统的稳定,创造了一个运维系统,那么,谁来保证这个运维系统的稳定呢?这是一个悖论。

  为了进一步的提升运维开发人员的开发效率,降低开发的难度,阿里云推出了资源编排(Resource Orchestration Service,简称ROS),和运维编排Operation Orchestration Service,简称OOS)这两个编排平台。作为平台级的产品,阿里云会负责保证其稳定可靠,用户只需要按照平台的规则制定自己的运维逻辑。那么什么是编排呢?编排来源于交响乐,是指通过编曲,把各种不同乐器的演奏,和谐的融合在一起。运维开发人员,就像交响乐作曲家,通过编写YAML格式的编排模板,把各种不同的资源、配置、动作,串联在一起。

  先来说资源编排ROS。假设一个场景,在阿里云上搭建一个经典的三层在线服务:前面是SLB负载均衡,中间是若干台ECS作为一个服务集群,后面再挂接一套RDS数据库。当然,你还需为这三层分别各自创建一个VPC,通过安全组设置安全规则。在业务初期你可能只需要两台ECS,但很快会扩大到3台、4台。按照传统的运维思维,需要给系统下达原子的命令:今天创建一台,明天再创建一台。但是按照ROS声明式的语法,运维开发人员只需要指定自己当前的资源需要。比如把MaxAmount值从3改成5(见如下例子),ROS会自动新建两台ECS。再比如把MaxAmount从3改成2,ROS会自动释放其中一台ECS。我们把这种全自动的管理资源的生命周期的方式,叫做“基础设施即代码”。

Resources:
  InstanceGroup:
    Type: 'ALIYUN::ECS::InstanceGroup'
    Properties:
      MaxAmount: 3
      InstanceType:
        Ref: InstanceType
      ImageId:
        Ref: ImageId
      SecurityGroupId:
        Ref: SecurityGroupId
      VSwitchId:
        Ref: VSwitchId

  运维是一个非常广泛的概念,资源的生命周期管理,只是其中一小部分。运维,还涉及到了监控、故障处理、持续发布、资源分组、审计等等各种需求。为了满足普适的运维需要,阿里云推出了运维编排(OOS)产品。同样是基于YAML的编排,但是与ROS不同的是,OOS编排的是一个个的原子动作(API)。几乎所有阿里云控制台上的操作,都可以通过OpenAPI来完成,而几乎所有的API动作,都可以通过OOS来完成,因此,我们可以说,所有的阿里云上的运维动作,都可以通过OOS来自动化完成。不仅如此,阿里云OOS还内置了三个强大的运维功能:定时任务、事件触发器和云助手命令。定时任务很容易理解,用户只需要编写cron表达式,OOS就会精确地定时触发,例如,每天早晨八点开启服务器。事件触发器可以跟云监控的事件(或者告警)相结合,实现“事件驱动”的自动化运维,尤其是自动化的故障恢复,运维人员无需关心事件的具体接收过程。云助手命令则可以让开发人员,在无需开启SSH接口的情况下,远程在linux里面执行系统命令。我们举一个事件驱动和云助手结合的例子,当60秒的平均CPU利用率超过90%的时候,重启tomcat服务,OOS模板的示例(节选)如下:

Tasks:
  - Name: alarmTrigger
    Action: 'ACS::AlarmTrigger'
    Properties:
      Namespace: acs_ecs_dashboard
      MetricName: cpu_total
      Statistics: Average
      ComparisonOperator: GreaterThanThreshold
      Threshold: '90'
      Resources: '[{"instanceId":"{{ instanceId }}"}]'
      Period: 60
  - Name: runcommnd
    Action: ACS::ECS::RunCommand
    Properties:
      commandContent: 'service tomcat restart'
      instanceId: '{{ instanceId }}'
      commandType: RunShellScript

  通过上面的例子,我们可以看出,ROS和OOS,可以帮助运维开发人员,以最快的速度和最少的代码,实现常见运维任务的自动化。阿里云官方,为ROS和OOS提供了一系列的公共模板,开源在github上,感兴趣的运维同学们可以阅读学习,或者基于这些现有的模板随意进行二次开发。 
 
ROS公共模板:https://github.com/aliyun/ros-templates   
OOS公共模板:https://github.com/aliyun/oos-templates   

  运维同学可能会想到,能否将ROS和OOS结合使用呢?答案是肯定的。可以在OOS模板里,对ROS进行API调用。具体的实现,还希望聪明的运维同学们参考ROS和OOS的官方帮助文档,自己尝试一下。 

ROS主页:https://www.aliyun.com/product/ros    OOS主页:https://www.aliyun.com/product/oos   

  阿里云正在筹办“弹性计算自动化运维模板挑战赛”。也欢迎运维开发同学们积极参与,奖励丰厚。如有问题,欢迎加入钉钉群咨询。 
 
ROS支持群群号:11783495   
OOS支持群群号 : 23330931

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
19天前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进
本文探讨了如何通过自动化和智能化手段,提升IT运维效率与质量。首先介绍了自动化在简化操作、减少错误中的作用;然后阐述了智能化技术如AI在预测故障、优化资源中的应用;最后讨论了如何构建一个既自动化又智能的运维体系,以实现高效、稳定和安全的IT环境。
46 4
|
10天前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
32 4
|
1月前
|
机器学习/深度学习 运维 Prometheus
构建高效运维体系:从自动化部署到智能监控的全方位实践
在当今数字化时代,企业对运维效率和稳定性的要求越来越高。本文将探讨如何构建一个高效的运维体系,从自动化部署、持续集成与持续交付(CI/CD)、智能监控、故障管理以及数据驱动决策等方面进行深入分析和实践指导。通过这些方法,企业可以实现更快速、更可靠的软件发布和问题解决,提升整体运营效率。
|
10天前
|
运维 jenkins 持续交付
自动化部署的魅力:如何用Jenkins和Docker简化运维工作
【10月更文挑战第7天】在现代软件开发周期中,快速且高效的部署是至关重要的。本文将引导你理解如何使用Jenkins和Docker实现自动化部署,从而简化运维流程。我们将从基础概念开始,逐步深入到实战操作,让你轻松掌握这一强大的工具组合。通过这篇文章,你将学会如何利用这些工具来提升你的工作效率,并减少人为错误的可能性。
|
15天前
|
运维 Prometheus 监控
运维中的自动化实践每月一次的系统维护曾经是许多企业的噩梦。不仅因为停机时间长,更因为手动操作容易出错。然而,随着自动化工具的引入,这一切正在悄然改变。本文将探讨自动化在IT运维中的重要性及其具体应用。
在当今信息技术飞速发展的时代,企业对系统的稳定性和效率要求越来越高。传统的手动运维方式已经无法满足现代企业的需求。自动化技术的引入不仅提高了运维效率,还显著降低了出错风险。本文通过几个实际案例,展示了自动化在IT运维中的具体应用,包括自动化部署、监控告警和故障排除等方面,旨在为读者提供一些实用的参考。
|
16天前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
【10月更文挑战第1天】智能化运维:机器学习在故障预测和自动化响应中的应用
48 3
|
17天前
|
机器学习/深度学习 运维 监控
构建高效运维体系:从自动化到智能化的演进之路
在当今数字化时代,运维工作的重要性日益凸显。随着企业业务的不断扩展和技术的日新月异,传统的运维方式已难以满足现代企业的需求。因此,构建一个高效、智能的运维体系成为了企业发展的关键。本文将探讨如何从自动化逐步演进到智能化,以实现运维工作的高效化和智能化。
|
17天前
|
机器学习/深度学习 运维 监控
构建高效运维体系:从自动化到智能化的演进之路
在当今数字化浪潮中,运维作为信息技术的重要支柱,其重要性日益凸显。本文将探讨如何通过自动化和智能化手段,提升运维效率,保障系统稳定性,促进业务持续发展。
|
27天前
|
机器学习/深度学习 运维 Cloud Native
构建高效运维体系:从自动化到智能化的演进之路
在当今数字化时代,运维作为信息技术的重要支柱,其效率与创新能力直接关系到企业信息系统的稳定性和业务连续性。本文将探讨如何通过技术手段,实现运维从传统手工操作向自动化、智能化的转变,进而构建一个高效、可靠的运维体系。我们将从自动化工具的应用开始,逐步深入到智能运维的实践,最终展望云原生架构下的运维未来趋势。
|
1月前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进之路
在当今数字化时代,运维作为保障企业IT系统稳定运行的关键环节,正经历着前所未有的变革。本文将探讨如何通过实施自动化和引入智能化技术,构建一个更加高效、可靠的运维体系,以应对日益复杂的业务需求和技术挑战。
65 1

热门文章

最新文章