应用运维自动化平台设计与实践

2019-10-07 14:59蔡国华黄鹏秦国锋
新一代 2019年13期
关键词:自动化

蔡国华 黄鹏 秦国锋

摘 要:中国搜索应用运维自动化平台,是根据技术业务实际需求设计和研发的,实现了对关系型数据库、nosql数据库、存储和缓存系统等自动化部署和管理,有效地提升了应用运维的效率,降低了技术系统因故障隐患而产生的风险。

關键词:应用运维;自动化;SaltStack

一、平台建设背景

传统运维管理对服务器的操作几乎都是手动方式:手动安装操作系统、手动部署应用、手动更新等。中国搜索随着业务快速发展,服务器数量日趋庞大,技术架构也越来越复杂,涉及到关系型数据库、nosql数据库、存储和缓存系统等使用和管理。在日常的应用运维工作中,也碰到了越来越多的问题,主要表现在:

·服务器数量庞大,通过手动方式部署应用和更新,运维效率较低。

·应用系统和数据库版本不统一,维护起来比较困难。

·线上业务种类复杂,各个应用系统采用不同的配置,无法进行统一配置管理

·以传统方式登陆服务器查看应用日志,效率比较低,无法对日志做出有效的处理和分析。

为了提高运维效率,对涉及到的应用系统和数据库进行统一管理,将运维人员从重复性的工作中解放出来,有必要开发一套应用运维自动化平台,实现对关系型数据库、nosql数据库、存储和缓存系统等自动化部署和管理。

二、应用运维自动化平台技术介绍

中国搜索应用运维自动化平台是基于开源软件SaltStack,使用python开发,是集应用系统安装、配置、管理、监控于一体的自动化运维平台。主要使用的技术如下:

(一)开源软件Saltstack

SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块构建。通过部署SaltStack,可以在大规模服务器集群上做到批量执行命令,根据不同业务进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等。

SaltStack具有以下特性,实现系统批量管理:

·部署简单、管理方便。

·支持大部分的操作系统,如Unix/Linux/Windows环境;架构上使用C/S管理模式,易于扩展。

·配置简单、功能覆盖广。

·主控端(Master)与被控端(Minion)基于证书认证,确保安全可靠的通信。

·支持API及自定义Python模块,轻松实现功能扩展。

SaltStack的异步执行模式可以很好地应对上千台设备(甚至更多)的任务执行,特别适合耗时场景的应用。

(二)前端界面采用Vue开发

Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue也完全能够为复杂的单页应用提供驱动。

(三)后端程序采用Python+flask

Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理。

三、应用运维自动化平台架构

(一)部署方案

中国搜索应用运维自动化平台,以SaltStack为底层架构,前端采用Vue技术,后端采用Python+flask,前后端分离,功能上实现集安装,配置,集中管理为一体。部署过程如下:

·服务器端Master 角色的安装,配置好yum 源。

·客户端Minion角色的安装,配置好yum 源。

·客户端Minion 配置

SaltStack-Minion 是 SaltStack 安装在客户端的代理,负责接收服务器端发布的指令并执行,同时负责客户端的状态监控。客户端要想被 master 管理,需要修改其配置文件,将服务器指向到 Master 的地址。其配置文件位于/etc/salt/目录下,名为 minion。

·服务器端Master 配置

SaltStack-Master 是 SaltStack 组件的核心服务,负责发布指令及配置文件的分发与管理,及客户端的管理功能。Master 要想正常提供服务,需要接受客户端的证书认证请求。SaltStack 是通过 SSL 证书认证的方式进行通信的。输入 salt-key  l 来查询客户端证书状态,并输入 salt-key  A 接受客户端认证。

·搭建Flask+uwsgi+Nginx部署

在WEB服务器上搭建Flask+uwsgi+Nginx环境,并将后端代码上传到指定位置并启动相应的服务。

(二)整体架构

·SaltStack Minion Master架构

SaltStack采用 C/S 的架构,从部署结构上看,SaltStack的在部署上可以分为Master和Minion两个部分,其中Master相当于统领所有机器的总管,而Minion则是部署在被管理机器上面的agent进程,Master 可以发送任何指令让 Minion 执行,salt 有很多可执行模块,比如说CMD模块,在安装Minion的时候已经自带了,它们通常位于python 库中。

SaltStack客户端(Minion)在启动时,会自动生成一套密钥,包含私钥和公钥。之后将公钥发送给SaltStack服务器端(Master),服务器端验证并接受公钥,以此来建立可靠且加密的通信连接。同时通过消息队列ZeroMQ在客户端与服务端之间建立消息发布连接。

·Python+Flask架构

利用Python的Salt模块,自定义开发相应的应用模块,并调用SaltStack Master 远程执行和下发相应的命令在SaltStack Minion上面执行。

四、应用运维自动化平台功能

中国搜索应用运维自动化平台主要提供了以下功能:

·应用安装:Mysql高可用集群、Redis集群、MongoDB集群、ES集群、FastDFS集群自动化安装。

·配置管理:日常运维涉及的配置文件管理,包括配置文件比对、配置文件批量更新等。

·日常运维:网站静态文件上线,回滚等日常操作。

·集中监控: 自动安装配置各个应用系统的监控脚本,使用Zabbix实现集中监控。

·集中备份: 集中备份关键数据,例如Mysql,Mongodb等数据。

·集中日志管理: 使用ELK管理操作日志,方便查询、统计。

(一)Mysql主从高可用架构的自动化部署

Mysql是一个关系型数据库管理系统,其体积小、速度快,是目前最流行的关系型数据库管理系统之一。

应用运维自动化平台实现了Mysql的自动化安装和配置。同时实现了对Keepalived和LVS自动化配置,实现了Mysql读写分离,主从自动化切换的高可用架构。实现步骤如下:

·使用SaltStack把Mysql+LVS+Keepalived的高可用架构模块化。

·根据Web调用情况,程序会将Mysql安装模块下发到需要执行Mysql安装的机器。

·然后根据用户输入修改Keepalived配置和生成虚拟的读写IP。

·设置Mysql备份策略,实现自动化定时备份。

·查看每个管理的Mysql慢查询的统计情况。

(二)Redis集群自动安装配置

Redis集群是Redis官方提供的分布式解决方案,在3.0版本后推出的,有效地解决了Redis分布式的需求,当一个Redis节点挂了可以快速的切换到另一个节点。当遇到单机内存、并发等瓶颈时,可以采用分布式方案要解决问题。

應用运维自动化平台可以自动化安装配置Redis,一键构建Redis集群。应用自动化平台可以控制Redis实例启停。应用自动化平台实现了Redis连接集中管理。实现步骤如下:

·使用SaltStack把Redis实例安装模块化。

·根据Web调用情况,程序会将Redis安装模块下发到需要执行Redis安装的机器。

·根据Redis实例的安装情况,一键构建Redis集群。

·可以查看Redis各个实例的连接数情况。

(三)MongoDB分片集群自动安装配置

MongoDB分片是一种在多台机器上分配数据的方法。MongoDB使用分片来支持具有非常大的数据集和高吞吐量操作。

应用运维自动化平台实现了MongoDB分片集群的自动化安装。实现了MongoDB实例的数据节点、集中配置、路由的自动化配置。实现了MongoDB实例的集中启停,集中备份等功能。实现步骤如下:

·开发SaltStack MongoDB 安装模块、配置模块、启停模块。

·通过前端Vue的请求下发MongoDB模块到指定的机器。

·通过Python 调用Salt MongoDB安装模块,远程安装MongoDB。

·通过Python MongoDB配置模块,远程配置MongoDB。

·通过MongoDB启停模块,可以管理整个MongoDB机器。

·通过远程管理MongoDB主机实现MongoDB定时备份。

(四)ES集群自动安装配置

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。

应用运维自动化平台实现了ElasticSearch集群自动化安装,并根据不同的应用要求调整ElasticSearch集群中Node节点的配置,以便实现Node节点不同的角色,并管理整个ElasticSearch集群中Node节点的启停。

(五)FastDFS集群自动安装配置

FastDFS是一款开源的高性能分布式文件系统。主要功能包括文件存储,文件同步和文件访问,以及高容量和负载平衡,主要解决了海量数据存储问题,特别适合以中小文件为载体的在线服务。

应用运维自动化平台实现了FastDFS存储集群的安装,并可以定制FastDFS跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Clinet)的配置,并管理上述不同FastDFS角色启停。

五、总结与展望

中国搜索应用运维自动化平台,是根据公司技术业务实际需求设计和研发的,实现了对关系型数据库、nosql数据库、存储和缓存系统等自动化部署和管理,有效地提升了应用运维的效率,降低了技术系统因故障隐患而产生的风险。该平台可灵活扩展至更多运维场景,具备向数据化、智能化演进的可能性。目前我们正在对平台向容器和微服务方向进行研发与集成,使自动化覆盖面能够更加广泛。后续我们还将根据业务实际需求,将机器学习和大数据技术应用于自动化运维中,实现智能化运维。

参考文献:

[1]SaltStack官方说明:http://docs.saltstack.cn/

[2]Vue官方教程:https://cn.vuejs.org/v2/guide/

[3]Flask教程:http://docs.jinkan.org/docs/flask/

猜你喜欢
自动化
国内焊接设备市场现状及发展趋势研究
AGV小车在白酒行业自动化立体仓库中的应用
配电室无人职守集控站在京博石化的运用
配电线路运行资料管理自动化的探讨