大众科技Popular Science&Technology Vol.23No.3 March2021
总第23卷259期
2021年3月
基于Ansible自动化运维系统批量部署
LAMP架构的设计与实现
李湘林向全韦美雁潘学文
(湖南科技学院电子与信息工程学院,湖南永州425199)
【摘要】文章针对各大公司企业对网页web框架的需求,设计了一种基于Ansible自动化运维系统批量部署LAMP架构方案。该方案在Linux系统下设计实现,使用了Linux命令、Shell语言、Apache服务、Mysql服务、Php服务和Ansible自动化运维工具。利用Ansible自动化运维工具的批量系统配置、批量程序部署、批量运行命令等功能,编写Playbook脚本,批量部署LAMP架构,能够在短时间内部署出企业所需求的LAMP架构数量。经测试表明,Ansible自动化运维系统能大大节省传统运维手动部署LAMP架构的时间,降低了部署过程中的出错率。在实际生产环境中,运用Ansible能够提升企业工作效率,尤其在管理50台以上的服务器的场合下更为明显。
【关键词】Ansible;LAMP架构;服务;批量部署
【中图分类号】TP311.52【文献标识码】A【文章编号】1008-1151(2021)03-0001-04 Design and Implementation of Batch Deployment LAMP Architecture Based on
Ansible Automated Operation and Maintenance System Abstract:Aiming at the demands of various companies for web page framework,a batch deployment LAMP architecture scheme based on Ansible automatic operation and maintenance system was designed.The scheme is designed and implemented under Linux system, using Linux command,Shell language,Apache service,Mysql service,Php service and Ansible automatic operation and maintenance tools. By using the batch system configuration,batch program deployment and batch running command and other functions of A nsible automatic operation and maintenance tool,we can write Playbook script and batch deploy LAMP architecture,which can deploy the number of LAMP architecture required by enterprises in a short time.The test results show that Ansible automatic operation and maintenance system can greatly save the time of traditional operation and maintenance manual deployment of LAMP architecture,and reduce the error rate in the deployment process.In the actual production environment,the use of A nsible can improve the work efficiency of enterprises,especially in the case of managing more than50servers.
Key words:Ansible;LAMP architecture;service;batch deployment
引言
根据最新中国互联网络信息中心(CNNIC)公布的《中国互联网络发展状况统计报告》数据显示,截至2020年3月,我国网民规模达9.04亿,并且存在有超过十亿的互联网网站。目前,很多企业服务器系统以Linux系列和Windows系列为主。随着各种业务对IT的依赖性渐重以及云计算技术的普及,企业平均的IT基础架构规模正不断扩张。有些Web2.0企业可能会需要在两个星期内增加上千台服务器,当前计算机技术的发展传统的运维已经不适合现代计算机的发展,通过手动来一个一个搭建的方法不仅麻烦、效率低下,且非常不利于维护和扩展。运维自动化就是把日常运维工作中一些需要手动执行的工作转化为自动化执行,把一些重复性的工作也交给系统自动执行,例如网站项目的部署和测试〔"I。
本文针对各大公司企业对网页web框架的需求,设计了一种基于Ansible自动化运维系统批量部署LAMP架构,集中控制服务器,以满足很多企业发展的需求。
【收稿日期】2021-01-05
【基金项目】湖南省自然科学基金项目(NO.2020JJ4327);湖南省教育厅科学研究项目(NO.18C1063);湖南科技学院校级科研项目(NO.20XKY051);湖南科技学院应用特学科建设项目。
【作者简介】李湘林(1998-),男,湖南常德人,湖南科技学院电子与信息工程学院学生,研究方向为电子与信息工程。
【通信作者】潘学文(1983-),男,湖南永卅人,湖南科技学院电子与信息工程学院讲师,从事电子与通信方面课程教学工作。
-1-
1LAMP和Ansible技术介绍
LAMP,即Linux+Apache+Mysql/MariaDB+Perl/PHP/ Python的首字母缩写。这是一组常用来搭建动态网站或者服务器的开源软件,它们本身都是各自独立的程序,但是因为常被放在一起使用,因此拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台⑷。LAMP架构由于具有简易性、安全性、低成本、灵活扩展性等特点和优势,应用的普及范围扩大,已从简单、小型系统的应用扩充到复杂、大型系统的应用,形成了一种发展潮流,并开始与J2EE和.Net 商业软件形成三足鼎立之势,受到整个IT界的关注。越来越多的供应商、用户和企业投资者逐渐认识到,使用LAMP开源软件组成的平台来构建、运行各种商业应用以及协作构建各种网络应用程序,现已变为一种可能和实践,其变得更加具有竞争力、更加吸引客户。无论是性能、质量还是价格,LAMP架构都将成为企事业单位信息化所必须考虑的平台。
Ansible,一种集成IT系统的配置管理、应用部署、执行特定任务的开源平台。它是一款基于Python开发的开源的自动化运维工具,由Paramiko和PyYAML两个关键模块构建。它能够很大程度简化运维中的配置管理与流程控制方式,利用推送方式对客户系统加以配置,所有工作都可在主服务器端完成⑸。Ansible主要可实现批量系统配置、批量程序部署、批量运行命令、批量执行任务等功能。
2LAMP架构的搭建与实现
2.1LAMP架构的搭建
传统的LAMP架构搭建都是由运维工作人员手动搭建的,本文研究的Ansible批量部署LAMP架构需要提前将LAMP架构在Ansible主机上搭建成功,才能使用其批量部署的功能,LAMP架构搭建的流程图如图1所示。
图1LAMP架构搭建的流程图
LAMP架构搭建过程如下:
(1)在服务器上配置好yum源,清理yum源缓存并重新建立yum缓存,关闭服务器的防火墙。
(2)在服务器上安装httpd软件,安装完成后httpd服务是默认启动的。
(3)在服务器上安装mariadb-server mariadb软件,安装完成后,mysql服务是默认不启动的,需要创建一个目录作为数据库存放数据的位置。mysql服务安装后数据存放目录是默认的,需定义一个目录并把默认目录修改成自己定义的目录,方便数据查,修改mysql的主配置文件(myf),并把默认存放数据的位置修改成自己定义的。到配置文件里面的datadir=/car/lib/mysql这一行,把存放路径修改成自己定义的目录,即:datadir=/mydata/data□修改完毕后,更改属主信息,启动mysql服务mariadb,从启动开始后,产生数据都会存放在自己定义的目录。
(4)在服务器上安装php php-mysql软件,安装完成后,在httpd的网页目录(/var/www/html/)下提供一个php测试页,即网站首页文件index.php,—般内容默认为:
<?php
Phpinfo();
>
添加完成后,重启httpd服务,关闭系统防火墙,在浏览器输入当前服务器的IP地址即可看到搭建成功后的以LAMP 架构为框架的web网页。web网页的具体内容可以根据公司的要求来自定义设计,性能优化和网页的抗并发能力都可以通过修改服务的配置文件来实现。
2.2Ansible平台的部署
Ansible具有批量系统配置、批量程序部署、批量运行命令等功能,Ansible平台部署完成后,可执行一些命令批量控制Ansible主机清单里被控制的服务器,Ansible命令执行流程图如图2。
执行命令
返回结果给控制机
图2Ansible命令执行流程图
-2
-
Ansible平台部署过程如下:
(1)在服务器上配置好yum源,配置完成后,清理yum 源缓存并重新建立yum缓存,最后关闭服务器的防火墙。
(2)yum安装ansible软件。
(3)定义主机清单,把需要被控制的服务器的IP地址都添加到ansible主机清单配置文件(/etc/ansible/hosts)里面,编写内容如下:
[web-servers]#主机组名
192.168.0.107#被控制的服务器的IP
192.168.0.108
这里需要控制多少台服务器,就把需要控制的服务器所有的1P地址写入主机清单就行了。本方案用了两台被控制的主机做测试。
建立ssh免密钥连接,实现ansible主机能够免密登录到被控制的服务器主机,在ansible主机上执行命令ssh-keygen 开始生成公钥。然后把生成的公钥发送到被控制的服务器上,分别执行命令ssh-copy-id************.0.107,ssh-copy-id ************.0.108o最后测试能否免密登录到被控制的服务器主机上,需要控制多少台服务器,就执行多少次命令,只是IP地址不同而己。
2.3Playbook的设计
Playbook是本设计方案的主要实现手段。Playbook是Ansible自动化运维系统里用于配置,部署和管理
被控节点的一个任务列表文件。通过执行Playbook中的一系列task,可以让被控主机达到预期的状态。在Playbook中可以编排有序的执行过程,甚至于要做到在多组机器间,来回有序地执行特别指定的步骤,可以同步或异步的发起任务。利用Playbook 的这个功能,可以实现LAMP架构的自动搭建,并且可以同时控制多台服务主机,同时自动搭建LAMP架构。
Ansible批量部署LAMP架构的Playbook的执行流程图如图3所示。
图3Playbook的执行流程图
Ansible批量部署LAMP架构的Playbook的设计过程如下:
(1)编写prepare(前期准备)的Playbook,LAMP架构的搭建需要先配置好yum源,清除原来的yum缓存并创建新的yum缓存,然后关闭防火墙,设计思路如下:
-name:install wget#任务描述信息
shell:yum install-y wget#安装wget命令
-name:delete yum config
shell:rm-rf/pos.d/*#删除原有的yum配置文件
-name:make aliyun-os
shell:echo n[aliyun-os]H»/pos.po&&echo n name=aliyun-os n»/pos.d/ po&&echo n baseiirl=mirrors.aliyun. com/centos/7/os/x86_64/M»/pos.d/CentOS-Base. repo&&echo n enabled=l H»/pos.po&&echo n gpgcheck=O n»
#下载新的yum配置文件
-name:clean the yum repo
shell:yum clean all#清除原有的yum缓存信息
-name:clean the iptables
shell:iptables-F#清除原有防火墙规则,不然后可能上不了网
(2)构建httpd的任务,传统LAMP架构搭建过程中,安装完所有服务后,需要在httpd的网页目录下添加一个php 的测试页,在编写httpd的Playbook时,这里需要注意一个点,要把原有的Apache的配置文件全部删掉,如果不删除,copy 任务是不会执行的,因为当源文件和目标文件一样时,copy 命令是不会执行的,如果copy命令不执行,那么noyify将不调用handler,设计思路如下:
-name:web server install
yum:name=httpd state=present#安装httpd服务
-name:provide test page
copy:src=index.php desWvar/www/html#提供测试页
-name:delete apache config
shell:rm-rf/etc/f#删除原有的apache配置文件
-name:provide configuration file
copy:f dest=/etc/httpd/confilittpd.c onf #提供httpd的配置文件
notify:restart httpd#当前面的copy复制成功后,通过notify通知名字为restart httpd的handlers运行。
(3)构建httpd的handlers(监控httpd),用来监控httpd 的模块,设计思路如下:
-name:restart httpd
service:name=httpd enabled=yes state^restarted#服
务名—httpd?启用=是,状态=重新启动
(4)部署mariadb数据库,传统LAMP架构搭建过程中,mysql安装成功后需要更改数据存放目录和属主信息,然后再启动,设计思路如下:
-name:install the mysql
yum:name=mariadb-server state=present#安装mysql服务
-name:mkdir date directory
shell:mkdir-p/mydata/data#创建挂载点目录
-name:provide configration file
copy:src=myf desWetc/myf#提供mysql的配置文件
-name:chage the owner
shell:chown-R mysql:mysql/mydata/*#更改属主和属组
-name:start mariadb
service:name=mariadb enabled=yes state=started#启动mysql服务
(5)构建php的任务,传统LAMP架构搭建过程中,php 只要安装完毕即可,设计思路如下:
-
name:install php
yum:name=php state=present#安装php
-name:install php-mysql
yum:name=php-mysql state=present#安装php与mysql交互的插件
(6)定义整个LAMP架构的任务,把要执行的内容列出来,设计思路如下:
-name:LAMP build#LAMP架构
remote user:root#root权限
hosts:web-servers#主机组
roles:#需要执行的规则
-prepare
-mysql
■php
-httpd
方案经过搭建和调试,Ansible服务端执行命令后,开始对被控制的服务器自动部署LAMP架构,部署过程很快,只需1分钟左右便可部署成功,工作效率很高。在实际工作中,Playbook不仅可以用来批量部署服务器,还能用于后续的管理,批量执行命令,查看被管理的所有主机的CPU信息,各种服务的状态等。
3结束语
本文设计的基于Ansible自动化运维系统批量部署LAMP 架构的方案,运用了智能运维思路来建设维护云中心的体系,提升运维质量效率。该方案不仅能提高IT运维人员的工作效率,还能满足公司所需部署的LAMP架构数量,对提升公司的生产效率有很大的帮助。
【参考文献】
[1]黄巨涛,杨永娇,刘梓健,等.基于Ansible的电力云平
mysql下载配置台自动部署系统设计[J].电子设计工程,2020,28(3): 43-46,51.
[2]刘威.基于Ansible自动化运维的信息系统故障预测技术
[J],电子技术与软件工程,2020(1):90-91.
[3]罗宁.基于LAMP架构的服务器并发性能优化研究[J].
数字通信世界,2019(8):126,22.
[4]李小娜,张释如,张雨珊,等.LAMP架构在嵌入式平台
上的移植与搭建[J].现代电子技术,2018,41(20): 114-117,121.
[5]陆冰芳,粟邈如.基于Ansible的web形式自动化运维系
统的研究与设计[JJ.数字技术与应用,2017(12):151-152.
-4-

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。