基于前面的《架构系列三:使用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/路径下
[app@localhost 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