场景说明:
多台服务已部署负载均衡运行
所有进程按先后顺序关闭并重启,确保后台服务不中断
实现无感发布功能,用户端不会因服务重启导致访问异常
脚本文件内容如下:
#!/bin/sh
http="http://192.168.1.112"
server_prot1="40011"
server_prot2="40012"
APP_HOME="$HOME/app"
APP_HOME_BIN="$HOME/app/http/bin"
stopname="stop_http_app_0"
startname="start_http_app_0"
# 注:i<=2 代表进程数为:2
for ((i=1; i<=2; i ++))
do
#stop services:
echo "Stopping Server $i……"
eval stop_name${i}=$stopname$i".sh"
eval start_name${i}=$startname$i".sh"
eval port=\$server_prot${i}
eval stopn=\$stop_name${i}
eval startn=\$start_name${i}
http_addr="$http:$port/actuator/health"
for file in `find $APP_HOME -name $stopn`
do
cd `dirname $file`
fname=`basename $file`
j=0
msg=`./$fname`
while [[ `lsof -i:$port | wc -l` -gt 0 ]]
do
echo "服务【$stopn 】正在运行,尝试停止中......耗时$j;"
j=`expr $j + 1`;
sleep 1
done
echo "${stopn}...............[${msg}]"
done
#start services:
echo "Starting Server $i......"
for file in `find $APP_HOME -name $startn`
do
cd `dirname $file`
fname=`basename $file`
j=0
msg=`./$fname > /dev/null 2>&1 &`
while [[ `curl -I -s -m 6 -o /dev/null -w %{http_code} $http_addr` -ne 200 ]]
#while [[ `lsof -i:$port | wc -l` -eq 0 ]]
do
echo "服务【$startn 】正在启动中,请稍等......耗时$j;"
j=`expr $j + 1`;
sleep 1
done
echo "${startn}....................[The process started successfully]"
done
done
亲,沙发正空着,还不快来抢?
我要评论 / 展开表单