一:系統上線基本流程
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