自动运维是一个老生常谈的话题,不同的人有不同的理解,开源的解决方案也比较多,经过调研及选型,我们采用的“开源”+“自研”的方式来实现自动运维平台,整个平台功能架构如下所示:
我们认为运维人员,主要做两件事,一是进行系统状态维护,二是远程执行命令,因此经过抽象提炼出插件和脚本模型,让它们作为运维人员的左右手,通过命令下发的方式,下载到指定机器,执行相应的运维任务,同时上报运维过程中产生的日志,经过对日志的收集与分析,判定一次运维任务是否成功,整个运维过程涉及的命令收发及日志回传,均采用加密传输,保证了运维任务的安全性。
由于将运维工作抽象成了插件及脚本,因此自动运维平台框架搭建起来后,更多的工作是针对痛点问题开发对应的插件及脚本。作为插件及脚本的宿主方,运维Agent更像是一个轻量级的运维容器,每当收到一个运维任务,就会启动一个单独的执行器进程,该进程负责下载并执行插件和脚本,同时将运维过程中产生的日志源源不断上报到日志存储,如下所示:
常见的自动运维是很庞大的系统,并不一定适合每个企业,经过抽象和实践,特来电云平台自动运维平台做到了简易但不简单,很好的解决了日常运维中经常遇到的一些痛点问题,下面谈一下自动运维的两个应用实践。
三、应用实践
1.分布式应用程序部署
互联网企业中,部署分布式应用程序是一个司空见惯的事务,但当一个系统涉及到成百上千台机器,并且分布式应用程序很复杂时,进行应用程序的安装部署及更新,将会涉及到数据库还原、应用程序部署、Web站点创建及绑定、系统服务创建及启动等一些列操作,如果单靠手工进行操作,无疑是一件耗时耗力并且容易出错的事情。有了安装平台与自动运维平台结合,以前需要很多人两周才能搞定的事情,现在只需一个人20分钟,生产力得到极大提高,以下是分布式应用程序部署的一个简易图示:
2.预警平台
通过分析大量故障,我们发现当有问题发生时,重启站点或进程,杀掉阻塞进程或连接等一些常规操作,能解决80%的问题,而如果能将这些手工操作自动化,在问题恶化之前进行提前控制,将会起到事半功倍的效果。作为监、析、控中的一环,预警平台更偏“析”,通过对监控数据进行规则分析判断,当触发阈值时,可以得到机器信息、进程信息、站点信息、服务信息等,通过对自动运维平台下发指令动作,加载对应的插件及脚本,执行相应的运维任务,实现对系统的“控”,以下是一个简易图示:
四、特来电云计算与大数据微信公众号
1.微信公众号名称:特来电云计算与大数据
2.二维码: