Ansible自动化批量部署技术的研究与实现

2022-10-25 09:51滕飞陈子铭
中国科技纵横 2022年17期
关键词:批量IP地址运维

滕飞 陈子铭

(广东理工学院,广东肇庆 526100)

信息化的发展过程中,企业服务器的大量部署,已然成为运维计算机管理中最难的一个步骤。运营维护所需要的技术要求提升是自动化管理发展的大势所趋。

1.研究意义

人工运维模式单一,结构简单,只能管理少量的服务器,管理模式缺乏高效性,浪费大量的人力,这种运维模式应用到服务器集群管理上显然不合适。随着智能时代的发展,自动化运维技术出现,管理工具也孕育而生,利用这些高效的管理工具来实现运维管理自动化已成为现阶段运维管理的主要技术手段。所谓的自动化运维管理,就是指IT运维人员,将过去传统人工对每台服务器进行操作,实现部署更新系统操作,转变成全部由机器自动化实现。

批量部署也是自动化运维管理的一部分,随着服务器数量的越发增多,批量部署在整个系统部署中起到重要的作用,所能达到的工作效率是有目共睹的。高效的监控工具和部署工具的支持,让运维管理可以做到快速处理故障服务器,本文对批量部署能力的研究具有重要的理论和现实意义[1]。

2.Ansible 的研究与分析

Ansible 是一款开源IT自动化工具,它基于Python语言开发,能够自动执行置备、配置管理、应用部署、编排和许多其他手动 IT 流程。与更为简易的管理工具不同,Ansible用户(如系统管理员、开发人员和架构师)可以运用 Ansible 自动化,在整个企业范围内更高效地安装软件、自动执行日常任务、置备基础架构、提高安全性[2]。

Ansible是一个轻量级工具,只需要安装和配置控制终端,其被控制端不需要安装相应的服务。使用通用

Python语言开发,让它非常友好,使得它在IT行业越来越受欢迎。Python的广泛使用使得Ansible工具的操作符更容易被开发。里面的模块功能多样化,一些企业或个人甚至在完善相关的功能模块,使用Ansible对于系统部署和配置管理非常有用。

3.批量部署设计

3.1 整体设计

整体架构前端利用HAProxy做Nginx的Web服务器集群的负载均衡,使用Keepalived的VRRP功能实现网络平稳通畅运行,达到高可用的目的,保证了Web集群的访问量与性能。这种架构有很多场景,比如一些电商企业的购物网站,可以搭建在LNMP集群上,通过集群部署的方式在平台进行推广时可能会增加点击量,可以通过前端负载均衡服务器会进行流量分配,以减轻服务器的压力,保证电商平台的正常工作[3]。大型平台是有非常多的Web集群和数据库集群,而IT运维人员不可能24h不间断监控,这就需要一个Zabbix监控工具来监控整个平台。整体架构设计结构如图1所示。

图1 整体架构设计

3.2 Ansible批量部署设计

Ansible部署过程简单,可一次性对多台服务器进行部署。找到/etc/ansible/hosts配置文件,在其中增添被控制端服务器的IP。Ansible部署安装完成后,建立SSH连接,使控制端无需密码即可登录受控主机。编写Playbook批量部署受控主机,Ansible剧本执行流程图如图2所示。

图2 Ansible部署流程

3.3 Zabbix 监控设计

Zabbix的监控端需要安装Zabbix server服务,被监控端需要安装Zabbix agent服务,只要安装了Agent服务,就连自身也能监控。为了减轻Zabbix server的压力,本文设计的监控模式采用主动模式,由Zabbix agent主动收集数据并推送给Zabbix server,它只需要处理大量的数据并警告即可,Zabbix监控流程如图3所示。

图3 设计zabbix监控流程

3.4 Keepalived的VIP漂移设计

Keepalive高可用方案部署在HAProxy 2台主机上,去展示HAProxy的高可用,高可用集群包括热备和互备,这些集群通常由2个以上机器组成。文采用2台机器的热备方案,其中一台作为主服务器对外提供服务,另一台作为备机,但服务未启动。主机和备机通过网络跳线相互监控。当备机监测到主机宕机时,可以根据预设好的方案将IP和服务切换到备机。以下是本次设计用到的核心配置:

以IP地址为192.168.191.132的主机作为主机,nginx1为它的路由器标识,虚拟路由器VI_1由vrrp_instance来定义,定义MASTER工作状态,工作接口为ens33,虚拟MAC最后一段地址的信息是100,优先级是200,通告频率为1s,开启通信认证机制,设置虚拟VIP地址为192.168.191.200。

以IP地址为192.168.191.133的机器作为备用主机,路由名称配置为nginx2,虚拟名称vrrp_instance称为VI_1,启动待机工作BACKUP,工作的接口为ens33,100作为虚拟MAC最后显示的地址信息,优先级低于主机为150,通告频率1s,开启通信认证的机制,设置同样的虚拟VIP地址为192.168.191.200。设计好配置文件,Keepalive高可用架构如图4所示。

图4 Keepalive高可用架构

3.5 HAProxy反向代理设计

设计HAProxy全局属性,使服务以daemon方式在后台运行,最大同时256个连接,指定保存HAProxy进程号的文件,默认为http模式,连接server端不能超过5s,客户端响应不能超过50s,server端响应不应超过50s。前端服务的监听端口为8080,请求转发至名为“servers”的后端服务。HAProxy可以向这个服务颁发32个并发数,检查80端口的状态。定义监控页面绑定端口1080,每5s更新监控数据,访问监控页面使用stats,监控页面的认证提示用户名和密码,其核心配置如下所示:

HAProxy通过负载均衡算法将访问流量负载引流到集群中的开启Web服务的Nginx节点。当Keepalived的Master服务通过其自带的健康检测功能,检测到网络连通不到后端节点,那么Backup节点就会变成为Master节点进行服务。一主多从的多机热备更有保障,只要增加备用的Keepalive节点就可以实现。很多情况下双热备份就能满足,不需要浪费资源。HAProxy负载均衡流程如图5所示。

图5 HAProxy负载均衡流程

3.6 LNMP 架构设计

大部分部署软件都是从源代码安装的,因为安装软件的模块应该适合企业的生产环境和生产需求,企业会根据自己的需求来选择软件的模块,并编译出最适合自己的软件功能条件。按照传统的编译安装方式部署LNMP架构,需要操作人员在每台服务器上手动安装,错误率高效力低下。当利用Ansible实现LNMP架构的自动化批量部署能够极大地解决传统运维部署方式存在的问题。LNMP架构搭建流程如图6所示。

图6 LNMP架构搭建流程

4.批量部署设计

4.1 部署安装环境

准备5台CentOS7操作系统的虚拟机,并且系统版本完全一致,利于后期系统排错和统一管理,系统内存为2G,处理器核心数量为2。在企业中Ansible自动化部署工具是用来安装部署多台服务器的,但在本文中因本人资源有限,只能让其中1台作为Ansible管理节点,其余4台被管理服务器作为测试节点。具体安装服务,如表1所示。

表1 部署安装环境测试表

4.1.1 安装Ansible

在IP地址为192.168.191.131的CentOS7操作系统的虚拟机上,使用Yum安装Ansible自动化批量部署工具,使其作为Ansible管理节点。输入安装命令Yum install -y ansible 输出的结果如图7所示。

图7 安装Ansible工具

4.1.2 部署ssh免密通信

想要Asible控制端与被控端正常的部署工作,需要让Ansible控制服务器与被控制服务器节点建立通信,通信的方式主要有2种,第一种是基于密码链接,第二种是基于密钥连接。我们选择后者,因为前者不安全暴露密码,在实际生产环境中我们是不能随便暴露密码的,第二种比较安全但是需要先创建公钥和私钥,并下发公钥至被控制端。

让控制端主机Ansible能够免密登录到被控制端的主机,实现直接远程登录上被控制端主机无需验证密码。Ansible控制端生成密钥的命令为ssh-keygen,如图8所示。

图8 密钥的创建

要想实现Ansible免密登录到其他的服务器节点,就要把上图生成的公钥发送到其他服务器节点,根据提示输入其服务器的用户和密码,至此免密通信搭建成功。

推送公钥到其他被控服务器节点的命令为ssh-copyid -i ~/.ssh/id_rsa.pub root@ip 地址,其中 id_rsa.pub为系统存放公钥的文件。使用免密登录被控制端主机的命令ssh root@IP地址,按照主机清单依次输入IP地址,验证免密操作是否成功。测试免密通信成功如图9所示。

图9 免密通信

4.1.3 部署Hosts Inventory

在Ansible框架中Hosts Inventory为主机清单,指定的是一个配置文件。将需要远程管理的主机IP写入主机清单中,指定操作的主机。Ansible会根据主机清单中提供的主机IP对主机进行远程控制与监控远程主机的运行状态。可以对需要远程管理的主机进行IP分组管理,有利于分配不同的部署操作。本文测试中对4台主机进行了远程管理,分别将4台主机分成Web组与proxy组。主机清单配置如图10所示。

图10 主机清单

4.2 部署 Zabbix 监控

Zabbix监控需要部署安装Zabbix-agent服务,不像Ansible批量部署技术一样,不需要在被控制端安装服务,只要控制端与被控制端之间能够通信就可以批量安装部署。由于Zabbix服务端需要和Ansible控制端安装在同一台虚拟机上IP地址为192.168.191.131,Zabbix服务端只需要安装在一台虚拟机上,Ansible技术是为了大量的机器部署,用来提高IT运维人员的工作效率。但是为了一台机器就编写一个剧本会浪费时间,所以就不需要编写剧本,只需要写一个sh脚本就可以了。

4.2.1 部署Zabbix Server

Zabbix监控需要稳定运行,且Zabbix监控是用于内部网络的监控,没有大量的访问流量,所以选择LAMP架构来安装Zabbix服务端。

安装Zabbix监控服务端前,我们需要进入MySQL创建Zabbix数据库,并且所有的服务器节点均需要授权。创建数据库语句为 create database zabbix character set utf8 collate utf8_bin;,创建 Zabbix 用户并 设计密码 create user zabbix@'%' identified by '123456'; 服务器节点均授权语句 grant all privileges on zabbix.*to zabbix@'%';查询Zabbix数据库以及Zabbix用户白名单,返回的结果如图11所示。

图11 Zabbix数据库及Zabbix用户

在Ansible控制端安装Zabbix服务,采取Yum安装的语句为 yum -y install zabbix-server-mysql zabbixweb-mysql,安装完成后开启Zabbix服务和Apache服务,在网页上输入192.168.191.131/Zabbix,进入Zabbix服务端的安装界面完成相关操作。

4.2.2 部署Zabbix Agent

部署Zabbix agent服务,是为了使其能被Zabbix所监控,所以需要在所有Ansible被控制端上部署。

如上所示中的Web和Proxy为主机清单中的两个用户组,执行代码部署。

4.3 部署Keepalived+HAProxy实现高可用

在IP地址为192.168.191.132和192.168.191.133这2台被控制端主机中,批量安装Keepalived+HAProxy。

其中Keepalived的安装部署为yum安装,HAProxy的安装部署为源码编译安装。Ansible分别通过调用Unarchive模块解压源码包,调用Shell模块对HAProxy进行编译安装,调用Yum模块安装依赖包和Keepalived。利用命令Ansible-playbook自动化部署过程如图12所示。

图12 部署Keepalived+HAProxy结果

4.4 部署 LNMP架构

本文是需要在IP地址为192.168.191.134和192.168.191.135的主机上部署LNMP架构。Ansible批量部署LNMP架构的Playbook的设计代码由于过多,部署软件所需的各个目录与所需要的依赖包等过程省略截取。

(1)Ansible通过调用Unarchive模块对Nginx安装包进行解压,并指定存放地点;调用Shell模块进行编译安装Nginx,并且启动Nginx。

(2)Ansible通过调用Unarchive模块对Php安装包进行解压;调用user模块添加用户;调用Shell模块来编译安装;调用file模块来对文件进行授权。

(3)安装MySQL是通过Ansible调用Yum模块来对MySQL进行部署;通过Shell模块来启动MySQL。

(4)Ansible通过调用批量部署LNMP的Playbook。

5.结语

本次批量部署中,搭载LNMP架构测试的机器主要有2台,IP地址分别为192.168.191.134和192.168.191.135。启动Nginx的Web服务,在浏览器中分别输入与之相应IP地址,能够成功访问2台Web服务器。对其部署的高可用LNMP架构进行了详细的测试,并且可以实现使用邮件发送监控警告。Ansible批量部署工具去完成了Keepalived、Haproxy和LNMP架构的部署。

猜你喜欢
批量IP地址运维
铁路远动系统几种组网方式IP地址的申请和设置
运维技术研发决策中ITSS运维成熟度模型应用初探
IP地址切换器(IPCFG)
基于SNMP的IP地址管理系统开发与应用
公安网络中IP地址智能管理的研究与思考
基于ITIL的运维管理创新实践浅析
浅议高校网银批量代发
基于AUTOIT3和VBA的POWERPOINT操作题自动批量批改
考虑价差和再制造率的制造/再制造混合系统生产批量研究