智能运维 | 一键上线系统Archer 完美解决部署不确定问题


业务部署(俗称上线)是运维领域最常见的业务类型,主要涉及线上代码变更、配置文件变更(数据变更由于其高频、量大的特点,我们已经在这篇文章《嗖的一下,让数据自动生效!》中讨论过)。

一般的业务上线具有不定时操作、业务部署情况复杂、启停策略复杂等特点。在手工运维时代,运维人员需要花费大量精力进行此类重复性工作,且很容易出错。从之前Google公开的数据得知,Google有大概七成的生产事故由上线变更触发。如何减少变更过程中的人为误操作,提供一个灵活、稳定的部署系统成为运维平台研发人员亟需解决的问题。

基本概念

在运维自动化的大潮下,百度云运维管理平台Noah发布了一键上线部署系统——Archer。

Archer致力于提供一套覆盖产品线全过程的可迁移发布解决方案,其可一键完成机器初始化、服务部署、监控添加、定时任务配置、动态数据文件分发等全过程的自动操作。

在操作方面,Archer提供了命令行工具作为发起一次上线的操作入口,这种设计模式也决定了其易于集成的特点。在DevOps流水线作业中,Archer可以作为一个环节被整合进整条测试发布流水线中。

另外,Archer也可作为上层服务托管平台的底层工具链,为PaaS平台提供稳定的底层部署服务。

图1  Archer与持续部署

通用场景

在百度,通用的部署系统需要适用以下场景:

  • 各业务线拥有各自的包规范,使用不同的语言和框架,具有不同的部署策略;

  • 支持分级发布,及时拦截新版本引入的线上故障;

  • 支持业务多地域部署;

  • 支持多种网络环境及大包部署;

  • 提高自动化效率,能够集成测试发布自动化流水线等。

接下来,我们将结合上面的场景,向大家介绍百度云持续部署是如何完美解决这些问题的。

服务架构

整个系统由命令行工具、Web服务、中转服务及单机Agent+部署插件几部分组成(如图2所示)。用户通过命令行工具触发一次变更,在Web端进行参数解析及任务分发,对应执行机器Agent通过心跳获取任务后,调用部署插件执行实际任务。涉及大包及不同网络环境的部署会进行中转下载。

图2  服务整体架构

解决方案

不同的部署策略 

为避免杂乱无章且不规范的服务代码(配置文件的目录结构),Archer规定了一套既灵活又完整的包规范。Archer的配置文件路径、服务的启停脚本及运维命令具有固定的标准并且支持定制化,使用Archer进行部署的服务具有统一的包结构。

支持分级发布

针对分级发布的使用场景,Archer支持串并行上线及暂停点功能,可按照单实例、单机房、单地域等级别设置暂停点,并支持部署过程中进行暂停、继续、重试、撤销等操作。

业务的多地域部署 

服务的多地域部署主要解决不同地域配置不同的问题。Archer提供了配置派生功能以支持多地域部署的场景。Archer支持在同一份配置文件中设置配置变量,并在特定地域(机房)中生成特定配置值。

多种网络环境及大包部署 

针对多种网络环境及大包部署的使用场景,Archer提供了部署数据中转传输。采用中转的上线在发起任务后,部分代码将首先被转存至中转机上。后面任务下发至具体机器,具体机器再从中转机拉取需要被部署的文件;中转机服务也为跨网络环境的部署提供了可能,隔离网段中的机器无法访问内网机器,通过中转服务的“搭桥”完成跨网段的数据传输。

提高自动化效率

自动化效率方面,Archer提供了命令行工具,可接入各种脚本、平台。另外,Archer也可定制化单机流程:针对不同的业务场景,Archer支持使用YAML语法编辑的配置文件。单机执行流程步骤被定制化成固定几个种类。用户通过简单的配置,即可实现“启停监控”、“启停服务”、“数据传输”、“执行某些命令或脚本”、“启停定时任务”等上线过程中常见操作的自由组织及编排。这种形式大大扩展了Archer的适用范围。在了解Archer使用方法的情况下,OP/RD几分钟内即可配置出适用于数十条不同产品的上线方案。

其他特色

每次的部署流程通过Web总控端的参数解析后,就被作为任务下发到每台被部署的目标机器。当部署任务从总控端发到被部署机器上时,任务的具体执行依赖Agent及一系列脚本。因此,在部署系统的开发后期,自身的功能变更主要集中于单机部署工具。为了提高自身开发迭代效率,脚本不会采用全网部署的方案,只部署到特定插件集群。

每次执行时,单机Agent会从插件集群下载最新MD5,如果有变更,将重新下载最新插件进行任务的执行。这种设计形式增强了执行端功能的可横向扩展性,并且极大降低了每次自身升级的成本。每次升级只需更新一个集群的插件代码,即可在全部机器上生效。

总结

百度云Noah部署服务,早已帮助百度运维完成从手工上线向自动化上线的转变,并形成开放化的体系,在百度内部具有极高的使用率。

现在,我们也正在将智能化算法引入到部署系统中,期待本文的介绍能为您提供一些思路,也欢迎各位同行与我们进行交流,共同促进AIOps的发展!

作者简介

运小博    百度云高级研发工程师

负责百度云通用部署系统研发工作,在部署系统架构、分布式调度系统方面有着较为广泛的实践经验。

更多相关文章

百度自动化运维(上)百度自动化运维(下)|

百度网络监控(上) | 百度网络监控(下) | 

自动化运维三要素 | 智能运维 | 

大规模分布式监控系统高可用实现 |

外网访问质量保障(上) | 外网访问质量保障(下) |

海量日志处理 | 故障自愈机器人 | 

故障自愈机器人使用 | 单机房故障自愈 | 智能运维进阶 | 

如何执行命令 | 执行命令为什么难 | 让数据自动生效 | 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值