《架构系列四:一键部署应用到Tomcat集群中》

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kity9420/article/details/80784774

基于前面的《架构系列三:使用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

猜你喜欢

转载自blog.csdn.net/kity9420/article/details/80784774