《架構系列四:一鍵部署應用到Tomcat叢集中》
基於前面的《架構系列三:使用Keepalived+Nginx+tomcat實現叢集部署》,我們配置了nginx+Tomcat叢集,如果需要在VM1,VM2各部署6個Tomcat,這時候怎麼將應用部署到叢集中呢,如果手動一個一個的部署,那要部署12次,效率非常底,因此我們迫切需要一鍵自動部署的功能
叢集資訊
VM1:192.168.130.128
Tomcat:tomcat8.5-01,tomcat8.5-02,tomcat8.5-03,tomcat8.5-04,tomcat8.5-05,tomcat8.5-06
VM2:192.168.130.129
Tomcat:tomcat8.5-01,tomcat8.5-02,tomcat8.5-03,tomcat8.5-04,tomcat8.5-05,tomcat8.5-06
路徑準備
在VM1,VM2根路徑下各建立如下路徑:
cd /
mkdir -p deploy/tomcat
mkdir -p deploy/myscript
mkdir -p deploy/war/temp
說明:
/deploy/tomcat/ tomcat的存放路徑
/deploy/myscript/ 存放一鍵部署的指令碼
/deploy/war/ 存放war包
/deploy/war/temp/ 存放通過指令碼解壓後的war包的內容,因為可能會對解壓後的內容做一些修改
部署指令碼
通過FTP工具FileZilla將準備好的war包上傳到VM1,VM2下的/deploy/war路徑下
將Tomcat配置好,分別上傳到VM1,VM2中的/deploy/路徑下
[[email protected] deploy]$ ls
tomcat8.5-01 tomcat8.5-02 tomcat8.5-03 tomcat8.5-04 tomcat8.5-05 tomcat8.5-06
在/deploy/myscript路徑下,建立init_war_to_server.sh指令碼,將修改後的WAR包,分別上傳到Tomcat的webapps路徑下
#!/bin/bash #刪除臨時檔案 rm -rf /deploy/war/temp/* #清空tomcat/webapps路徑下的檔案 for i in $(seq 1 6) do rm -rf /deploy/tomcat/tomcat8.5-0$i/webapps/* done #解壓war包到temp路徑下 unzip /deploy/war/server-crm.war -d /deploy/war/temp #6001節點直接複製 cp /deploy/war/server-crm.war /deploy/tomcat/tomcat8.5-01/webapps/ cd /deploy/war/temp/ #埠替換,將p1替換為p2 #打成war包,並上傳到指定tomcatwebapps目錄 port=6000 for j in $(seq 2 6) do p1=$[port+j-1] p2=$[port+j] sed -i "s/$p1/$p2/g" /deploy/war/temp/WEB-INF/classes/prop/sdp-crm.properties zip -r /deploy/tomcat/tomcat8.5-0$j/webapps/server-crm.war ./ done echo 'finish!!!!!!!!!!!'
在不同的tomcat中,sdp-crm.properties中的埠號是不一樣的,對應關係如下
tomcat8.5-01 ------ 6001
tomcat8.5-02 ------ 6002
tomcat8.5-03 ------ 6003
tomcat8.5-04 ------ 6004
tomcat8.5-05 ------ 6005
tomcat8.5-06 ------ 6006
因此在指令碼中,首先修改sdp-crm.properties中的埠號,然後再將修改後的檔案壓縮成war包,存放在對應的tomcat中
sed -i "s/$p1/$p2/g" /deploy/war/temp/WEB-INF/classes/prop/sdp-crm.properties
zip -r /deploy/tomcat/tomcat8.5-0$j/webapps/server-crm.war ./
WAR包準備好後,接下來在/deploy/myscript路徑下,建立start_tomcat_server.sh指令碼,用於啟動tomcat
#!/bin/bash
for i in $(seq 1 6)
do
/deploy/tomcat/tomcat8.5-0$i/bin/startup.sh
done
echo 'finish!!!'
指令碼準備好後,接下來給指令碼授予執行許可權,然後啟動指令碼
cd /deploy/myscript
chmod +x init_war_to_server.sh
chmod +x start_tomcat_server.sh
./init_war_to_server.sh
./start_tomcat_server.sh
到此,整個一鍵部署就完成了,要是打WAR包也做成自動化指令碼,再結合上面的自動部署,就完美了,總結一下上面的內容
1.將打包的WAR包上傳到/deploy/war目錄下
2.通過init_war_to_server.sh指令碼,修改WAR包中的內容,並將修改後的內容打成新的WAR包,放到對應的TOMCAT中
3.通過start_tomcat_server.sh指令碼,啟動所有的TOMCAT