来自中国移动云运维团队的戴声老师分享的则是自动化平台的架构设计和开发之路。对于运维,有一个对联段子,上联是:这个需求很简单,下联是:怎么实现我不管,横批:明天上线,可见运维有多么无奈与无助。而戴声老师的分享很接地气,同时也是逐步迭代,不断试错、改进,最终能够让产品得以落地,达到弯道超车的效果。
移动作为传统运营商,在实施自动化运维方面时还是遇到了颇多困难,今天就借这个机会跟大家分享一下“移动云”如何在一年多的时间里,实现从纯人工到自动化的运维转变。
运维:传统到自动化的一般路径
事实上,近几年接受了诸多运维大会的“洗脑”,对于一个运维团队的运维开发之路,我们比较遵从这样一个理念,即做自动化运维,一般是经历下面四个步骤:
标准化。包括整个环境、服务的标准化。进行标准化后,事实上整个环境已变成相对可控了。所有的厂家或者是不同的单位按照我们的这些规则来部署之后,很多的东西包括自动化都变成了可能,所以马上就进入了第二个阶段。
脚本化与工具应用。这时我们从人工运维往上跳了一个台阶,很多东西都变得可以用脚本或工具来实现,便慢慢开始积累更多的原子脚本。
平台化服务化。随着运维规模的不断扩大,这些脚本慢慢变得混乱和复杂,有些也变得不太适用某些场景,所以我们开始考虑如何把这些所有脚本及工具整合成一个平台,来实现我们的配置管理、资源服务,以及怎样把所有的运维动作场景化。
智能化。在上述三步的基础上,慢慢考虑如何利用长期积累下来的数据,推动整个平台往智能化方向发展。
这样的路径大家都比较认可,事实上,我们在完成了第一步的标准化之后开始尝试后续的步骤,这也是接下来演讲的主要内容:我将从工具化与脚本化的阶段开始,介绍我们一步步打造移动云自动化运维平台的若干经验。
4
Step4:场景化编排
执行时我们又发现了一个问题,其实它并没有真正解决很多实际落地的运维场景,比如说现在想要调用一个网络工具包的某个命令,执行完之后,再去调一个组件工具包的命令,然后我再把某一个文件发回来,再把结果发一个邮件等。因此我们开始实现下一步的功能——场景化的编排。
这个编排功能的作用是什么?事实上,光有了前面基础的能力和工具包是不够的,我们虽然可以利用这些工具包来帮助我们去管理一些资源或者做一些业务运维操作,但这些工具包如果只是每次至执行一步单步的的操作还不能实现一个完整的场景,还得再给它新增一些辅助性的单步的操作能力,再把这些能力编排起来。
比如说除了刚刚讲到的这种命令或脚本的批量执行外,我们还做了文件管理和一些场景的审核功能(例如,现在我要封堵一个客户虚拟机的IP,可能需要有网络管理跟主机的同事一起审核)。所以,假设我要新增一个应用,它可能是下面几个步骤编排起来:
审核通过
新增一个虚拟机
在这个虚拟机上推送一个中间件
在这个中间件上分发一个应用并启动
把虚拟机、中间件、应用在Zabbix监控起来
发送邮件通知,事情搞定了
这里面其实只做了一些单步的步骤,然后把这些单步的步骤做成了一个场景的编排,编排完了,如果这时变成了真正可以提供给所有人使用的一些小应用、小工具,那这个东西就非常好用了。
这里有一个背景要补充介绍下,我们的运维团队并不是什么事都包的,还有一个“服务台”的团队,他们比较擅长的不是技术,而是跟客户沟通,但他们有一个指标,就是对投诉的拦截率有多少,在他们的层面如果不能解决,再给我们运维同事派工单。事实上,我们可以把这些编排出来的小场景程序提供给服务台的同事。所以这时大家都比较爽,为什么呢?因为对二线运维同事来说,他没有工单要处理了,很多故障和投诉已经在服务台团队利用小场景程序解决了;而服务台这边也很爽,因为他们有拦截率的要求,靠这个运维同事提供的东西可以很快地提高他们的故障和投诉处理率(拦截率)。
当然,除了服务台以外,还有更多对资源有需求,或者需要对资源做操作的,是我们的研发,研发经常向我们的运维同事说:你给我一个虚拟机、给我一个数据库、给我配一条网络策略,或者我要看哪个状态信息。像这种事情,也能够通过这种编排小程序提供给他了。
那做这个东西有什么实现上的问题呢?最主要的问题是命令/脚本的批量执行,因为慢慢的,平台的使用量大起来了,像之前threading的多线程方式已不适用了,效率出现了较大问题。所以这时我们考虑使用了一个简单好用的分布式异步队列Celery,加上一套RabbitMQ,从而解决了并发量的问题。
第二个问题是文件管理。如果说用nfs的方法,IO性能可能不太行。我们想了一个办法,找了一个东西叫Minio。Minio可以实现AWS的S3的协议,而后端的存储它不管,可以用各种高可用方式去扩展,所以这也是一个可扩展的文件管理方式,是一种对象存储。
最后的问题是前端,我们改用了VUE.js。
全部做下来,我们发现对业务场景编排用得非常多,而对资源的管理场景则非常少,为什么?因为每一次组件的推送或者是我创建某一个虚拟机,我们做完了之后发现我的这些数据并没有存下来,只是帮你创建了资源,但并没有数据的维护。所以又绕回去刚刚那个问题了,我们是不是需要一个CMDB?或者说我这个资源管理服务,它其实并不完善,我是不是应该做一个比较完善的资源管理的服务来提供各种各样的资源?
浏览9401次
浏览5571次
浏览10092次
浏览8285次
浏览5365次
浏览9056次
2025-06-20 深圳
2025-04-19 南京
2025-04-22 上海
2025-05-23 上海
打开微信扫一扫,分享到朋友圈
Text