一:系统上线基本流程
html
二:操做环境
nginx
ansible主机一台:web
软件需求:haproxy、ansibleshell
实现功能:haproxy健康监测,ansible自动化运维vim
tomcat主机两台:后端
tomcatA:172.17.214.74tomcat
tomcatB:172.17.214.75
bash
软件需求:tomcat、nginx服务器
实现功能:tomcat实现war包上线,nginx负责健康监测页面app
三:操做目的
经过ansible,实现war包上线的自动化操做
四:操做步骤
一、配置阶段
※操做环境:ansible主机
一、配置haproxy ①开启后端服务器状态监测页面 ②开启基于页面内容的健康监测 ③指明后端主机 编辑haproxy主配置文件,写入以下内容: frontend main mode http #基于http协议 bind 0.0.0.0:1080 #监听1080端口 stats enable #开启服务统计报告 stats hide-version #隐藏统计报告版本信息 stats uri /haproxyadmin?stats #统计访问报告url stats auth admin:admin #登录认证 stats admin if TRUE #验证模式 default_backend servers #默认后端服务器组 backend servers balance roundrobin option httpchk GET /index.html #开启基于页面内容的健康监测 http-check expect string up #定义健康内容为"up" server server1 172.17.214.74:80 check server server2 172.17.214.75:80 check 二、修改ansible配置文件,定义主机组web [root@server ~]# vim /etc/ansible/hosts [web] 172.17.214.74 172.17.214.75 三、建立test.sh脚本文件,用来在playbook中对部署后的新war包进行最后一步的健康检测 #!/bin/bash host_ip=`ifconfig | grep "\<inet\>" | grep -v 127.0.0.1 | head -1 | awk '{print $2}'` #截取tomcat主机ip curl http://$host_ip/web/ -D curl.txt &> /dev/null #访问tomcat网站,并将头部信息存放在指定文件中 num=`head -1 curl.txt| cut -d' ' -f2` #截取网站响应码 if [[ "$num" =~ "^[2|3].*" ]];then #判断响应码是否正常 exit 0 #正常返回0 else exit 1 #不正常返回1 fi unset num host_ip 四、建立mark.yml文件,定义playbook - hosts: web remote_user: root serial: 1 ##按主机顺序执行操做,主机A上线操做所有完成后再进行B的操做 vars: - new: solo-2.2.0.war #新建new变量,用以存放新上线war包名称 tasks: - name: mark down shell: echo "down">/data/webapps/index.html #mark down,系统下线 - name: stop tomcat service: name=tomcat state=stopped #关闭tomcat服务 - name: sleep 5s #等待5秒,给予服务关闭充分的时间 shell: sleep 5 - name: create new soft link #新建软连接,源文件替换为新上线war包 file: src=/data/{{ new }} dest=/var/lib/tomcat/webapps/web.war state=link force=yes - name: start tomcat #启动tomcat服务 service: name=tomcat state=started - name: sleep 5s #等待5秒,给予服务启动充分的时间 shell: sleep 5 - name: test the new website shell: ./test.sh #判断脚本是否执行正常,不正常则停止上线 - name: mark up #mark up,系统上线 shell: echo "up">/data/webapps/index.html
注意事项:
①playbook语法格式
②serial 1 :即一次执行一台主机,tomcatA成功上线后再轮到tomcatB
③系统上线前,务必要检测新部署网站是否能够正常访问。
※操做环境:tomcat主机
一、配置tomcat,显示管理页面,用以管理war包的部署 二、配置nginx配置文件,确保后端tomcat主机root相同,并在root下建立index.html文件,写入up/down 三、开启nginx服务 四、将/data目录设为默认新war包存放目录 五、建立 /var/lib/tomcat/webapps/web.war 文件,用以建立软连接
二、测试阶段
①试运行playbook,查看语法错误 [root@server ~]# ansible-playbook mark.yml -C -vv ②语法无误,运行文件 [root@server ~]# ansible-playbook mark.yml ③查看tomcat管理页面,查看是否部署 ④再次部署新的.war文件,查看剧本可用性
三、实验效果以下
查看tomcat管理员页面,课件web.war已经自动部署上,点击/web字样便可进入网站
注:ansible有关playbook语法使用方法见我的博客 http://www.javashuo.com/article/p-eodvoqgz-cy.html