- 现在着手的项目是一个集群化的,占用9台服务器,每次更新包都是件头疼的事情,索性自动化部署吧!
- 原先一个人更换完需要15-20分钟左右,现在1分钟就全部完成啦!
前提,本地和各个服务器都安装sspass
centos7安装
yum install -y epel-release
yum repolist
yum install -y sshpass
mac安装
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
机器
192.168.33.101
192.168.33.102
192.168.33.103
192.168.33.104
192.168.33.105
192.168.33.106
192.168.33.107
192.168.33.108
192.168.33.109
- 本地脚本
IM_HOME=/Users/xiaocai/文件/IM_WEN
#wms
L_WMS_PATH=$IM_HOME/wms-subject/wm-gw-web-api/target/wm-gw-web-api.jar
#单聊
L_P_PATH=$IM_HOME/wms-im-p/target/im_p.jar
#群聊
L_G_PATH=$IM_HOME/wms-im-g/target/im_g.jar
#集市
L_M_PATH=$IM_HOME/wms-im-market/target/im_market.jar
#群聊离线
L_G_OFF_PATH=$IM_HOME/wms-im-off/target/message_dispatcher.jar
#单聊负载
L_P_PROXY_PATH=$IM_HOME/wms-proxy-p/target/im_proxy.jar
#群聊负载
L_G_PROXY_PATH=$IM_HOME/wms-proxy-g/target/im_g_proxy.jar
#集市负载
L_M_PROXY_PATH=$IM_HOME/wms-proxy-m/target/im_m_proxy.jar
#服务器
PWD=123123
L_101=192.168.33.101
L_102=192.168.33.102
L_103=192.168.33.103
L_104=192.168.33.104
L_105=192.168.33.105
L_106=192.168.33.106
L_107=192.168.33.107
L_108=192.168.33.108
L_109=192.168.33.109
#远程包目录
#wms
R_WMS_PATH=/data/wmsMobile/
#单聊
R_P_PATH=/data/im_p/
#群聊
R_G_PATH=/data/im_g/
#集市
R_M_PATH=/data/market/
#群聊离线
R_G_OFF_PATH=/data/message_dispatcher/
#单聊负载
R_P_PROXY_PATH=/data/im_proxy/
#群聊负载
R_G_PROXY_PATH=/data/im_g_proxy/
#集市负载
R_M_PROXY_PATH=/data/proxy_m/
#wms
sshpass -p $PWD scp -r $L_WMS_PATH root@$L_104:$R_WMS_PATH
if [ $? -eq 0 ]; then
echo "wms-上包成功"
else
echo "wms-上包失败"
fi
#单聊
sshpass -p $PWD scp -r $L_P_PATH root@$L_106:/$R_P_PATH
sshpass -p $PWD scp -r $L_P_PATH root@$L_107:/$R_P_PATH
if [ $? -eq 0 ]; then
echo "单聊-上包成功"
else
echo "单聊-上包失败"
fi
#群聊
sshpass -p $PWD scp -r $L_G_PATH root@$L_106:/$R_G_PATH
sshpass -p $PWD scp -r $L_G_PATH root@$L_107:/$R_G_PATH
if [ $? -eq 0 ]; then
echo "群聊-上包成功"
else
echo "群聊-上包失败"
fi
#集市
sshpass -p $PWD scp -r $L_M_PATH root@$L_108:/$R_M_PATH
sshpass -p $PWD scp -r $L_M_PATH root@$L_109:/$R_M_PATH
if [ $? -eq 0 ]; then
echo "集市-上包成功"
else
echo "集市-上包失败"
fi
#群聊离线
sshpass -p $PWD scp -r $L_G_OFF_PATH root@$L_103:/$R_G_OFF_PATH
sshpass -p $PWD scp -r $L_G_OFF_PATH root@$L_105:/$R_G_OFF_PATH
if [ $? -eq 0 ]; then
echo "群聊离线-上包成功"
else
echo "群聊离线-上包失败"
fi
#单聊负载
sshpass -p $PWD scp -r $L_P_PROXY_PATH root@$L_101:/$R_P_PROXY_PATH
sshpass -p $PWD scp -r $L_P_PROXY_PATH root@$L_102:/$R_P_PROXY_PATH
if [ $? -eq 0 ]; then
echo "单聊负载-上包成功"
else
echo "单聊负载-上包失败"
fi
#群聊负载
sshpass -p $PWD scp -r $L_G_PROXY_PATH root@$L_101:/$R_G_PROXY_PATH
sshpass -p $PWD scp -r $L_G_PROXY_PATH root@$L_102:/$R_G_PROXY_PATH
if [ $? -eq 0 ]; then
echo "群聊负载-上包成功"
else
echo "群聊负载-上包失败"
fi
#集市负载
sshpass -p $PWD scp -r $L_M_PROXY_PATH root@$L_108:/$R_M_PROXY_PATH
sshpass -p $PWD scp -r $L_M_PROXY_PATH root@$L_109:/$R_M_PROXY_PATH
if [ $? -eq 0 ]; then
echo "集市负载-上包成功"
else
echo "集市负载-上包失败"
fi
# 各服务器执行脚本
# 101
sshpass -p $PWD ssh root@$L_101 "source /etc/profile;cd /data;sh start.sh >/dev/null 2>log &"
if [ $? -eq 0 ]; then
echo "101_success"
else
echo "101_fail"
fi
#102
sshpass -p $PWD ssh root@$L_102 "source /etc/profile;cd /data;sh start.sh >/dev/null 2>log &"
if [ $? -eq 0 ]; then
echo "102_success"
else
echo "102_fail"
fi
#103
sshpass -p $PWD ssh root@$L_103 "source /etc/profile;cd /data;sh start.sh >/dev/null 2>log &"
if [ $? -eq 0 ]; then
echo "103_success"
else
echo "103_fail"
fi
#104
sshpass -p $PWD ssh root@$L_104 "source /etc/profile;cd /data;sh start.sh >/dev/null 2>log &"
if [ $? -eq 0 ]; then
echo "104_success"
else
echo "104_fail"
fi
#105
sshpass -p $PWD ssh root@$L_105 "source /etc/profile;cd /data;sh start.sh >/dev/null 2>log &"
if [ $? -eq 0 ]; then
echo "105_success"
else
echo "105_fail"
fi
#106
sshpass -p $PWD ssh root@$L_106 "source /etc/profile;cd /data;sh start.sh >/dev/null 2>log &"
if [ $? -eq 0 ]; then
echo "106_success"
else
echo "106_fail"
fi
#107
sshpass -p $PWD ssh root@$L_107 "source /etc/profile;cd /data;sh start.sh >/dev/null 2>log &"
if [ $? -eq 0 ]; then
echo "107_success"
else
echo "107_fail"
fi
#108
sshpass -p $PWD ssh root@$L_108 "source /etc/profile;cd /data;sh start.sh >/dev/null 2>log &"
if [ $? -eq 0 ]; then
echo "108_success"
else
echo "108_fail"
fi
#109
sshpass -p $PWD ssh root@$L_109 "source /etc/profile;cd /data;sh start.sh >/dev/null 2>log &"
if [ $? -eq 0 ]; then
echo "109_success"
else
echo "109_fail"
fi
每台服务器/data目录下,各放一份,自动杀掉进程,自动启动的脚本,以104机器为例
cd /data/gw-user-center/
ps -ef | grep gw-user-center.jar | grep -v grep | awk '{print $2}' | xargs kill -9
nohup java -jar gw-user-center.jar >/data/gw-user-center/nohup.out &
#wms
cd /data/wmsMobile/
ps -ef | grep wm-gw-web-api.jar | grep -v grep | awk '{print $2}' | xargs kill -9
nohup java -jar wm-gw-web-api.jar >/data/wmsMobile/nohup.out &