原创

无感发布重启服务

温馨提示:
本文最后更新于 2024年06月12日,已超过 2 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

场景说明:

多台服务已部署负载均衡运行,实现无感发布功能,用户端不会因服务重启导致访问异常

 

处理方法:

如app1 和 app2为同一服务,先重启app1, app2暂不处理,直到app1完全启动后,再重启app2 

脚本文件内容如下:

 

#!/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 ]]

do

echo "服务【$startn 】正在启动中,请稍等......耗时$j;"

j=`expr $j + 1`;

sleep 1

done

 

echo "${startn}....................[The process started successfully]"

done

done

 

 

正文到此结束