如何从零搭建一个自动化运维体系

2019-09-10 15:59:26 采集侠

对自动化运维体系的需求,是随着业务的增长、对运维效率和质量的要求不断提高而产生的。

前言: 在很多初创公司和中小型企业里,运维还停留在“刀耕火种”的原始状态,这里所说的“刀”和“火”就是运维人员的远程客户端,例如 SecureCRT 和Windows 远程桌面。

在这种工作方式下,服务器的安装、初始化,软件部署、服务发布和监控都是通过手动方式来完成的,需要运维人员登录到服务器上,一台一台去管理和维护。这种非并发的线性工作方式是制约效率的最大障碍。

同时,因为手动的操作方式过于依赖运维人员的执行顺序和操作步骤,稍有不慎即可能导致服务器配置不一致,也就是同一组服务器的配置上出现差异。

有时候,这种差异是很难直接检查出来的,例如在一个负载均衡组里面个别服务器的异常就很难发现。

随着业务的发展,服务器数量越来越多,运维人员开始转向使用脚本和批量管理工具。

脚本和批量管理工具与“刀耕火种”的工作方式相比,确实提升了效率和工程质量。

但这个方式仍然有很多问题。

第一是脚本的非标准化的问题。

不同运维人员写的脚本在所用的编程语言、编码风格和健壮性方面存在巨大差异,同时这些脚本的版本管理也是一个挑战。

第二是脚本的传承问题,人员的离职和工作交接,都会导致脚本无法很好地在运维人员之间传承和再利用,因为下一个运维人员可能无法理解和修改前一个运维人员编写的脚本功能。

第三是批量管理工具的选择。

不同的管理人员选择不同的批量管理工具必然会带来管理混乱的问题,也无法很好地实现在运维人员之间互相备份工作的需求。

因此,对构建自动化运维体系的要求变得越来越迫切。通过自动化运维体系来实现标准化和提高工程效率,是唯一正确的选择。那么如何建设自动化运维体系呢?

本案例研究分为三个大的方面:

第一个是为什么要建设自动化运维体系,就是解决“3W”中的Why和What的问题,即为什么和是什么。

第二个是介绍我司各个运维子系统是怎样设计、运行和处理问题的,解决“3W”中的How的问题,也就是怎样去做的。

第三个是对我司在自动化运维过程中遇到的一些问题的思考,做一个总结。

一、建设自动化运维体系的原因

先来看一下我们为什么要建设一个自动化运维体系。首先来看运维遇到的一些挑战,如下图所示。

如何从零搭建一个自动化运维体系

如何从零搭建一个自动化运维体系

运维面对的挑战

第一个是游戏的需求。它表现为三个方面:

一是游戏数量多,我司现在运营的游戏多达近百款。

二是游戏架构复杂。游戏公司和一般的互联网公司有一个很大的区别,就是游戏的来源可能有很多,比如有国外的、国内的,有大厂商的、小厂商的;每个游戏的架构可能不一样,有的是分区制的,有的是集中制的,各种各样的需求。

三是操作系统种类多,这与刚才的情况类似,游戏开发者的背景与编程喜好不一样,会有Windows、Linux等。

第二个是在硬件环境方面,主要表现为服务器数量多、服务器型号多。

因为公司从建立到现在有十几年的时间了,在这个过程中分批、分期采购的服务器几乎横跨各大OEM厂商的各大产品线,型号多而杂。

最后是人的因素。我们在建设自动化运维体系过程中,有一个比较重要的考虑点是人的因素。

如果大家的技术能力都很强,很多时候一个人可以完成所有工作,可能也就不需要自动化运维体系了。

正是因为每个运维人员的能力不一样,技术水平参差不齐,甚至是运维习惯和工具也不一样,导致我们必须要创建一套规范的自动化运维体系,来提升工作效率。

二、建设自动化运维体系的目标

再看一下建设这套自动化运维体系的目标,也就是说我们的原则是什么?

笔者将自动化运维体系的建设目标总结为四个词。

第一个是“完备”,这个系统要能涵盖所有的运维需求。