应用运维自动化平台设计与实践
来源:用户上传
作者:
摘 要:中国搜索应用运维自动化平台,是根据技术业务实际需求设计和研发的,实现了对关系型数据库、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/
转载注明来源:https://www.xzbu.com/9/view-15016959.htm