阿⾥智能运维平台的演进:从⾃动化到⽆⼈化(附PPT)
差不多在两年前,阿⾥内部出现了很多运维中台、研发中台等等,那有没有后台呢?不好意思,我们只有中台,没有后台,会在中台上构建与业务相关的各个前台。⽬前阿⾥的业务⼏乎覆盖了所有⾏业,有着很多业务线,如果业务线的前台到中台全部都是我们⾃⼰去建设,会造成⼀个巨⼤的浪费。我们需要去构建整个集团、或是阿⾥巴巴经济体所需要的统⼀的平台,避免重复性的建设。
最近我们在思考运维的本质到底是什么,就突然联想到⼀部名叫《太空旅客》的电影。电影⾥的飞船装了5000个乘客和⼤约50多个机组⼈员,从地球飞往其他星球要飞120年。这意味着整艘飞船必须是⽆⼈驾驶的,因为没有⼈可以活120年,靠⼈去操控这样⼀艘飞船根本不可能。所以飞船⾥有⼀套运维系统,也就是靠这套系统的运作,整艘飞船才可以飞120年不出故障。
这和我们现在做的运维系统是⼀样的。我认为运维的本质就是在线,即如何让这种在线的业务能持续不断地运⾏,满⾜客户的需求。如果把业务⽐作⼀艘飞船,你能否让飞船持续运⾏?遇到了任何故障或问题时能否⾃动解决?我觉得这就是运维的作⽤——稳定性。
⽽随着业务复杂度越来越⾼,已经没有办法靠⼈来运维整个平台和业务了。可以试想,如果要靠⼈,那需要投⼊多少⼈⼒?当发⽣问题时,我们⼈为地去感知问题后排查问题、定位问题,这时业务可能已经挂了很长时间。所以这也是我今天想跟⼤家分享的,我们基于对运维的理解构建起的智能化运维平台。
阿⾥运维历程
阿⾥的运维和很多公司有相似之处,也经历了四个阶段:
1. 使⽤命令⾏⼯具运维;
2. 系统化⼯具运维;
3. ⾃动化平台;
4. 智能化平台与⽆⼈值守实践。
按照上图这个层次,我们把运维的⼯作进⾏划分。对于双⼗⼀这样⼤型的活动,承载这么⼤的流量就必须要有很多资源。我们每年在准备资源的过程中会花⼤量的⼈⼒和资源,并且持续时间长,⼤概需要提前半年准备。⽽在近⼏年,阿⾥云发展起来了,等到更加成熟了就会把这个业务往云上搬。我们会先把机器买进来,把阿⾥云的整个基础设施装起来后,就把阿⾥的所有电商业务部署到它上⾯。等双⼗⼀结束后,有很多业务其实不需要⽤那么多机器,我们就把这些资源重新做⼀个格式化,再还给
阿⾥云,由阿⾥云做另外的售卖。这也是为什么阿⾥会做阿⾥云的原因。因为这种⼤促的时间⽐较短,但特别耗资源,且需要⼤量的运维⼈员和⼯程师,所以我们会在资源这个层⾯做⼤量⼯作。
现在我们的平台实际上会更加⾃动化,⽤公有云的资源去做⼀些弹性,包括资源的利⽤率。⽽最近我们有⼀个系统,是属于做资源调度的系统,它能够更好地利⽤云资源,提升资源的利⽤率。事实上阿⾥的整个电商的资源利⽤率是⽐较低的,平均下来只有10%左右,所以我们会在这块⼤⼒投⼊,包括做⼀些智能化的东西。⽽有了资源后就需要部署,所以我们就提前铺设了⼀层,包括数据库的⼀些东西,这属于⼀个变更,即把代码部署上去,或做⽹络的更新等。
等代码铺设上去后,还要清楚线上运⾏后的状况,因此监控是必不可少的。我们有很多监控系统,⽐如说监控IDC层⾯的湿度、温度等,如果这个地⽅出现问题,那整个机房就会过载。⽹络则是另⼀个专业领域的东西,我们需要去监控整个⽹络、交换机,让⽹络处于⼀个健康的状况。再次,还需要有服务器层⾯的监控,应⽤、业务层⾯的监控等,所有的这些都是不⼀样的,属于不同领域,因此我们的监控系统也⽐较多。
再往上就是运维最核⼼的本质——稳定性了,我认为这是怎么强调都不为过的。我们的很多业务部们都有⼀个专门做稳定性的团队,覆盖从业务到技术的环境。⽽像阿⾥这种体量的公司,规模化是必不可少的,我们现在正在收购很多公司,那怎么让这些公司的运维体系能⼀次性快速便捷地搬迁进来,
利⽤到我们中台的能⼒?⽐如我们做双⼗⼀⼤促销活动时,如何能快速把业务部署到云上?这些都需要做规模化的⼯作。
在以上这张图⾥,我负责的是蓝⾊部分的⼯作,主要是应⽤运维平台和基础运维平台,包括蚂蚁⾦服、菜鸟等个性化的东西,可以基于我们的应⽤运维平台做⼀些定制化的⼯作。
基础运维平台
基础运维平台是中台最核⼼的部分,是全部都打通的,我们的基础运维平台和基础设施是⼀样的。这就是刚才提到的中台概念,没有必要让所有⼈都去建设这个基础设施。就像国家的基础设施不会让每
个⼈都去建设,⽽是由国家统⼀去做,能节约⼤量的⼈⼒和资本,并把基础设施做精、做深,这是⾮常有必要的,可以避免⼤量重复性⼯作。
运维通道 - StarAgent
阿里巴巴开源镜像站StarAgent就是阿⾥运维的基础设施,它是⼀个运维通道,是基础设施中最核⼼的功能,主要是做命令的下发与执⾏。所有阿⾥的运维进程都在这上⾯,包括监控系统、调度所需的所有东西、数据采集等。信息的采集都在这个平台上,以插件的形式运⾏。
这个系统⼀天差不多有⼀个多亿的访问量且还在不断增长,因为我们的服务器数量在不断增长,业务的数量也在不断增长,但它的稳定性还是达到了99.995%
(1)场景
在阿⾥运维的整个⽣命周期,包括装机、应⽤发布、配置变更、信息采集、监控和⽇常运维等,我们都会⽤到这个场景。
(2)核⼼功能
核⼼功能如上图所⽰,就是命令的通道执⾏这样的⼀些⽅式,功能⽐较简单,主要核⼼能⼒是在稳定性和性能上⾯。
(3)系统架构
这个系统是由三层架构搭建⽽成的,第⼀层就是我们中央的⼀层东西,⽤户如何访问这个?我们会通过⽤户的API做调⽤,如果权限⾜够⼤,可以给全⽹所有的机器下发指令。每⼀个机房都有⼀个管控的服务器,即管控这个机房所有的机器,服务器都通过长链接的⽅式连到这个地⽅。还有末端的,就是⼀个插件的结构,⼤概如上图所⽰,会把信息全部都上报上来等等,这个也是能够⽀持⽹络结构的。
(4)稳定性
稳定性其实是最重要的,我们做了很多这⽅⾯的优化,但因为细节太多,此处就不具体展开了,最主要的是你如何能保证这个系统是稳定/活的。它⽐监控还重要,因为我们的监控也是依赖这个。当监控系统挂掉之后,监控录像或其他都有可能出现问题,会出现循环依赖。因此不能单独依赖⼀个存储的系统,反⽽要依赖更多的存储系统,来保证系统的健壮性。这是⾮常重要的,如果⼀个挂了就有可能导致我们回到⾮常原始的⼿⼯运维状态。
(5)安全
上图是安全⽅⾯的策略,我们有⽐较多重的保护,包括保护下发指令的安全不被篡改,以及整个账号体系有⾮常健壮的设计,来保证命令执⾏的安全性。我们所有的命令都会做⼀个映射。另外,权限还是⾮常⼤的,这⾥必不可少的就是要保护整个系统,如果有特别⾼风险的命令在执⾏,我们必须能够快速准确地识别出来,从⽽保护整个服务器的安全。
(6)⾃动化运维
⾃动化运维⾮常重要,我们不可能投⼊过多的⼈⼒去运维这么庞⼤的系统来管理所有的服务器。如果有哪怕1%的服务器出现了连接问题,我们都得投⼊⼤量⼈⼒去做,这也是为什么⾃动化运维⾮常重要的原因。以前可能需要⼗⼏⼈,每个⼈要频繁地去处理各种连接性的问题,所以我认为⾃动化运维是根本的东西。
(7)插件平台
最后简单介绍⼀下插件平台。这是⼀个描述⽂件,即你要跑什么进程、利⽤多少CPU内存等都可以设定。当这个系统发⽣各种问题时,会⾃动帮你把这个进程解决掉,再通知你上线去做⼀些排查。因为阿⾥的服务器和⽹络都⾮常复杂,我们在⼀个业务线⾥测试的结果没问题,并不代表能保证所有的业务线都没有问题。命令⼀直在下发,如果不退出,累计起来就会有很⼤问题。这个系统本质上是保障服务器的稳定性,所以不管发⽣什么情况,我们要把服务器上的所有命令都管控起来,只要有问题就采取⼀定措施。
智能⽂件分发系统 – 蜻蜓
要做容器化,⽂件的分发尤其是镜像的分发已经变成了⼀个⾮常⼤的问题,我们很经常在此过程中碰到这样的问题:原本只需要传⼀个包,现在要传⼀个镜像,但如果研发不太好,⼀出来就是⼀个多G的镜像在分发,会导致⽹络的堵塞。在这样的挑战下,我们当时就做了⼀个
P2P的⽂件分发系统,⾮常好地解决了这样的问题。
在上图中,红⾊部分就是传统的⽂件分发⽅式,蓝⾊部分是我们⽤蜻蜓做的⼀个⽂件分发系统。其中,X轴是客户端的数量,最⼤程度是7000个客户端同时下⼀个⽂件。不管有多少个客户端,蜻蜓都可以⾮常平稳,⼤概⼏秒钟就可以完成分发。⽽传统的分发,等到1000个客户端时就已经没有数据了,因为它已经被客户端打爆了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论