(临时方案)nginx前端配置upstream中指定2个tomcat应用,检测当其中挂掉一个的时候,自动切换到另外一个。
修改其中的 ip:port
#!/bin/bash path1=$(cd `dirname $0`; pwd) nginx_conf=/usr/local/nginx/conf/vhost/test.conf nginx_bin=/usr/local/nginx/sbin/nginx if [ ! -f ems_hotback.log ]; then touch ems_hotback.log;fi code=401 mail_list="[email protected]" date1=`date "+%Y-%m-%d %H:%M:%S"` arg12=`cat -n ${nginx_conf} |grep -w "ip:ports"` arg13=`cat -n ${nginx_conf} |grep -w "ip:ports"` arg12_1=`echo ${arg12} | awk -F ' ' '{print $1}'` arg12_2=`echo ${arg12} | awk -F ' ' '{print $2}'` arg12_3=`echo ${arg12} | awk -F ' ' '{print $3}'` arg12_3=${arg12_3%?} arg13_1=`echo ${arg13} | awk -F ' ' '{print $1}'` arg13_2=`echo ${arg13} | awk -F ' ' '{print $2}'` arg13_3=`echo ${arg13} | awk -F ' ' '{print $3}'` arg13_3=${arg13_3%?} function date_now(){ echo `date "+%Y-%m-%d %H:%M:%S"` $1 >> ${path1}/ems_hotback.log } function curl_head(){ now_code1=0 now_code1=`curl -I -s --connect-timeout 5 -m 5 -o /dev/null -w %{http_code} http://${1}/emsserver/` echo ${now_code1} #return ${now_code1} } function mail_do(){ for mail_name in `echo ${mail_list}`;do echo "故障时间:${date1} 故障节点:http://${1}/emsserver/ 切换节点:http://${2}/emsserver/ 来自于主机:192.168.25.39" | mutt -s "故障切换:由${1}切换为${2}" -e 'set content_type="text/html"' ${mail_name} done } if [[ "${arg12_2}" == "server" ]];then date_now "当前使用服务 ${arg12_3}" code_now=`curl_head "${arg12_3}"` date_now "服务 ${arg12_3} 的状态码检测结果为 ${code_now}" if [[ ${code_now} != ${code} ]];then sed -i "s/${arg13_2} ${arg13_3}/server ${arg13_3}/g" ${nginx_conf} sed -i "s/${arg12_2} ${arg12_3}/#server ${arg12_3}/g" ${nginx_conf} date_now "替换 ${nginx_conf} 中使用 ${arg13_3}" ${nginx_bin} -s reload date_now "重启服务 ${nginx_bin}" mail_do ${arg12_3} ${arg13_3} date_now "发送提醒邮件信息给 ${mail_list}" else date_now "检测结果正常……" fi elif [[ "${arg13_2}" == "server" ]];then date_now "当前使用服务 ${arg13_3}" code_now=`curl_head ${arg13_3}` date_now "服务 ${arg13_3} 的状态码检测结果为 ${code_now}" if [[ ${code_now} != ${code} ]];then sed -i "s/${arg12_2} ${arg12_3}/server ${arg12_3}/g" ${nginx_conf} sed -i "s/${arg13_2} ${arg13_3}/#server ${arg13_3}/g" ${nginx_conf} date_now "替换 ${nginx_conf} 中使用 ${arg12_3}" ${nginx_bin} -s reload date_now "重启服务 ${nginx_bin}" mail_do ${arg13_3} ${arg12_3} date_now "发送提醒邮件信息给 ${mail_list}" else date_now "检测结果正常……" fi fi
© 著作权归作者所有
下一篇: 批处理 windows 系统信息收集
文章评论(1)
需要在重启前判断另外一个应用是否正常,如果正常就重启,不正常就不重启,防止反复重启。