HOME 生活记录运维/编程
作者/来源:yixinu.com
栏目:运维/编程
日期:2013-09-03 17:28:32

服务器5台

   172.16.0.1LB

   172.16.1.21(Real Server),以下简称 vs1

   172.16.1.22Real Server,以下简称 vs2

   172.16.1.23Real Server,以下简称 vs3

   172.16.1.24   (这台是线上测试用),以下简称 vs4


WebServer/集群服务 : nginx  


平滑升级步骤:

   1、将开发部发过来的代码发布到vs4上面,开启一个测试端口映射到vs4的测试环境端口,这是为了不让用户看到测试版环境。

   2、通知测试部测试代码,待测试完了,完全可以上线了,将vs4上的代码同步到vs1,vs2,vs3上面

   3、同步方式采用分批同步,首先关闭vs2和vs3,同步这两台机器,待vs2和vs3能正常访问了,再开启vs2和vs3,关闭vs1并同步。


脚本如下:

#!/usr/bin/env bash
   
echo '#从nginx 集群 关闭 vs2,vs3'
/bin/sed -i 's/server 172.16.1.22/#server 172.16.1.22/g' /usr/local/nginx-1.4/conf/nginx.conf
/bin/sed -i 's/server 172.16.1.23/#server 172.16.1.23/g' /usr/local/nginx-1.4/conf/nginx.conf
/usr/local/nginx-1.4/sbin/nginx -s reload
   
echo '#关闭 vs2,vs3 的tomcat服务器'
/usr/bin/ssh root@172.16.1.22 "/etc/init.d/tomcat_order stop"
/usr/bin/ssh root@172.16.1.22 "/etc/init.d/tomcat_taoye stop"
/usr/bin/ssh root@172.16.1.23 "/etc/init.d/tomcat_order stop"
/usr/bin/ssh root@172.16.1.23 "/etc/init.d/tomcat_taoye stop"
sleep 2
   
echo '#删除原来的代码'
/usr/bin/ssh root@172.16.1.22 "rm /usr/local/tomcat_order/webapps/eboss/* -rf"
/usr/bin/ssh root@172.16.1.22 "rm /usr/local/tomcat_taoye/webapps/taoyewang/* -rf"
/usr/bin/ssh root@172.16.1.23 "rm /usr/local/tomcat_order/webapps/eboss/* -rf"
/usr/bin/ssh root@172.16.1.23 "rm /usr/local/tomcat_taoye/webapps/taoyewang/* -rf"
   
echo '#从vs4已经测试好的代码同步到vs2,vs3'
/usr/bin/ssh root@172.16.1.24 "/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass /usr/local/tomcat_order/webapps/eboss backup@172.16.1.22::eboss"
/usr/bin/ssh root@172.16.1.24 "/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass /usr/local/tomc    at_order/webapps/eboss backup@172.16.1.23::eboss"
/usr/bin/ssh root@172.16.1.24 "/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass /usr/local/tomcat_taoye/webapps/taoyewang backup@172.16.1.22::taoyewang"
/usr/bin/ssh root@172.16.1.24 "/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass /usr/local/tomcat_taoye/webapps/taoyewang backup@172.16.1.23::taoyewang"
   
echo '#启动 vs2,vs3的tomcat '
/usr/bin/ssh root@172.16.1.22 "JAVA_HOME=/usr/java/jdk1.7.0_21;GM_HOME=/usr/local/GraphicsMagick;PATH=$GM_HOME/bin:$JAVA_HOME/bin:$PATH;export PATH;/etc/init.d/tomcat_order start"
/usr/bin/ssh root@172.16.1.22 "sleep 40"
/usr/bin/ssh root@172.16.1.22 "JAVA_HOME=/usr/java/jdk1.7.0_21;GM_HOME=/usr/local/GraphicsMagick;PATH=$GM_HOME/bin:$JAVA_HOME/bin:$PATH;export PATH;/etc/init.d/tomcat_taoye start"
   
/usr/bin/ssh root@172.16.1.23 "JAVA_HOME=/usr/java/jdk1.7.0_21;GM_HOME=/usr/local/GraphicsMagick;PATH=$GM_HOME/bin:$JAVA_HOME/bin:$PATH;export PATH;/etc/init.d/tomcat_order start"
/usr/bin/ssh root@172.16.1.23 "sleep 40"
/usr/bin/ssh root@172.16.1.23 "JAVA_HOME=/usr/java/jdk1.7.0_21;GM_HOME=/usr/local/GraphicsMagick;PATH=$GM_HOME/bin:$JAVA_HOME/bin:$PATH;export PATH;/etc/init.d/tomcat_taoye start"
   
sleep 40
######################################################################################################
echo '#从nginx 集群 开启 vs2,vs3,关闭 vs1'
/bin/sed -i 's/#server 172.16.1.22/server 172.16.1.22/g' /usr/local/nginx-1.4/conf/nginx.conf
/bin/sed -i 's/#server 172.16.1.23/server 172.16.1.23/g' /usr/local/nginx-1.4/conf/nginx.conf
/bin/sed -i 's/server 172.16.1.21/#server 172.16.1.21/g' /usr/local/nginx-1.4/conf/nginx.conf
/usr/local/nginx-1.4/sbin/nginx -s reload
   
echo '#关闭 vs1 的tomcat服务器'
/usr/bin/ssh root@172.16.1.21 "/etc/init.d/tomcat_order stop"
sleep 2
/usr/bin/ssh root@172.16.1.21 "/etc/init.d/tomcat_taoye stop"
echo '#删除原来的代码'
/usr/bin/ssh root@172.16.1.21 "rm /usr/local/tomcat_order/webapps/eboss/* -rf"
/usr/bin/ssh root@172.16.1.21 "rm /usr/local/tomcat_taoye/webapps/taoyewang/* -rf"
echo '#从vs4已经测试好的代码同步到vs1'
/usr/bin/ssh root@172.16.1.24 "/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass /usr/local/tomcat_order/webapps/eboss backup@172.16.1.21::eboss"
/usr/bin/ssh root@172.16.1.24 "/usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass /usr/local/tomcat_taoye/webapps/taoyewang backup@172.16.1.21::taoyewang"
echo '#启动 vs1的tomcat '
/usr/bin/ssh root@172.16.1.21 "JAVA_HOME=/usr/java/jdk1.7.0_21;GM_HOME=/usr/local/GraphicsMagick;PATH=$GM_HOME/bin:$JAVA_HOME/bin:$PATH;export PATH;/etc/init.d/tomcat_order start"
/usr/bin/ssh root@172.16.1.21 "sleep 40"
/usr/bin/ssh root@172.16.1.21 "JAVA_HOME=/usr/java/jdk1.7.0_21;GM_HOME=/usr/local/GraphicsMagick;PATH=$GM_HOME/bin:$JAVA_HOME/bin:$PATH;export PATH;/etc/init.d/tomcat_taoye start"
echo '#从nginx 集群 开启 vs2,vs3,关闭 vs1'
/bin/sed -i 's/#server 172.16.1.21/server 172.16.1.21/g' /usr/local/nginx-1.4/conf/nginx.conf
/usr/local/nginx-1.4/sbin/nginx -s reload
   
echo '全部更新完成'


脚本中启动tomcat的命令行前面加了JAVA_HOME的环境变量,这是因为 远程ssh 启动 tomcat 必须加java的环境变量,要不然,tomcat是启动不了的。。

分享到:

Copyright © 2013-2014 yixinu.com 湘ICP备14004402号

QQ:316686606  Email: 316686606@qq.com