|
#智能判断,网站web02服务器是否在线上,如果在haproxy线上,就无需要在挂到haproxy上。
#现在3台web网站服务器还在线上.
#现在下线web02网站服务器.
#在haproxy监控页面,看到web02网站服务器已经不在线上,不对用户提供请求了。
#现在把web02网站服务器挂到haproxy负载均衡上.
#web02上线完成,到haproxy监控页面看下,是否在haproxy负载均衡上面。
#!/bin/bash
# Source function library.
. /etc/rc.d/init.d/functions
haproxydir=`find / -name haproxy |grep haproxy/sbin/haproxy|awk -F sbin '{print $1}'`
while true
do
clear
# menu
echo "
本机Haproxy负载均衡路径为: $haproxydir"
echo "
****************** Haproxy tool *******************
* *"
echo "* (1) 平滑启动Haproxy *"
echo "* (2) 关闭Haproxy *"
echo "* (4) 查看Haproxy运行进程数 *"
echo "* (5) 查看TCP连接状态 *"
echo "* (10) Haproxy平滑下线方案 *"
echo "* (11) Haproxy平滑上线线方案 *"
echo "* (0) 退出本程序 *"
echo "* *
*************************************************"
read -p "请输入对应数字: " caozuo
case $caozuo in
# reload
1) if [ -z "`ps ax|grep haproxy|grep -v grep|awk '{print $1}'`" ];
then
/etc/init.d/haproxy reload > /dev/null
sleep 1
if [ -z "`ps ax|grep haproxy|grep -v grep|awk '{print $1}'`" ];
then
read -p "Haproxy 启动失败!"
else
read -p "Haproxy 启动完成!回车继续!"
fi
else
read -p "Haproxy is Running! 回车继续!"
fi
;;
#stop
2) killall haproxy
sleep 1
if [ -z "`ps ax|grep haproxy|grep -v grep|awk '{print $1}'`" ];
then
read -p "Haproxy关闭完成!回车继续!"
else
read -p "Haproxy关闭失败!回车继续!"
fi
;;
#process
4) read -p "Haproxy运行进程数: `netstat -lntp|grep haproxy|wc -l`"
;;
#TCP
5) read -p "TCP连接状态:
`netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}'`"
;;
#xiaxian
10)
while true
do
clear
echo "
本机Haproxy-主站平滑下线方案"
echo "
**************Haproxy 下线主机列表****************
* *"
echo "* (1) 平滑下线web01:192.168.1.10主机 *"
echo "* (2) 平滑下线web02:192.168.1.11主机 *"
echo "* (3) 平滑下线web03:192.168.1.12主机 *"
echo "* (0) 退出本程序 *"
echo "* *
*************************************************"
read -p "请输入对应数字: " xiaxian
case $xiaxian in
1)
web01=`sed -n '/#server web01/p' /usr/local/haproxy/etc/haproxy.cfg|wc -l`
if [[ $web01 -gt 0 ]];then
echo "web01网站服务器已经下线.................."
sleep 2
else
echo "开始平滑下线web01网站服务器...................................."
sleep 1
sed -i '86s/^/#/g' /usr/local/haproxy/etc/haproxy.cfg
/etc/init.d/haproxy reload > /dev/null
read -p "下线完成,回车返回!"
sleep 2
fi
;;
2)
web02=`sed -n '/#server web02/p' /usr/local/haproxy/etc/haproxy.cfg|wc -l`
if [[ $web02 -gt 0 ]];then
echo "web02网站服务器已经下线.................."
sleep 2
else
echo "开始平滑下线web02网站服务器...................................."
sleep 1
sed -i '87s/^/#/g' /usr/local/haproxy/etc/haproxy.cfg
/etc/init.d/haproxy reload > /dev/null
read -p "下线完成,回车返回!"
sleep 2
fi
;;
3)
web03=`sed -n '/#server web03/p' /usr/local/haproxy/etc/haproxy.cfg|wc -l`
if [[ "$web03" -gt "0" ]];then
echo "web03网站服务器已经下线.................."
sleep 2
else
echo "开始平滑下线web03网站服务器...................................."
sleep 1
sed -i '88s/^/#/g' /usr/local/haproxy/etc/haproxy.cfg
/etc/init.d/haproxy reload > /dev/null
read -p "下线完成,回车返回!"
sleep 2
fi
;;
0) break
;;
*) read -p "请输入对应数字!或者Ctrl+C退出!回车继续!"
;;
esac
done
;;
#shangxian
11)
while true
do
clear
echo "
本机Haproxy-主站平滑上线方案"
echo "
**************Haproxy 上线主机列表****************
* *"
echo "* (1) 平滑上线web01:192.168.1.10主机 *"
echo "* (2) 平滑上线web02:192.168.1.11主机 *"
echo "* (3) 平滑上线web03:192.168.1.12主机 *"
echo "* (0) 退出本程序 *"
echo "* *
*************************************************"
read -p "请输入对应数字: " shangxian
case $shangxian in
1)
web01=`sed -n -e '/^server web01/p' /usr/local/haproxy/etc/haproxy.cfg|wc -l`
if [[ "$web01" -gt "0" ]];then
echo "web01网站服务器已经在线上,无需再重新上线.................."
sleep 2
else
echo "开始平滑上线web01网站服务器...................................."
sleep 1
sed -i '86s/^#//g' /usr/local/haproxy/etc/haproxy.cfg
/etc/init.d/haproxy reload > /dev/null
read -p "上线完成,回车返回!"
sleep 2
fi
;;
2)
web02=`sed -n -e '/^server web02/p' /usr/local/haproxy/etc/haproxy.cfg|wc -l`
if [[ "$web02" -gt "0" ]];then
echo "web02网站服务器已经在线上,无需再重新上线.................."
sleep 2
else
echo "开始平滑上线web02网站服务器...................................."
sleep 1
sed -i '87s/^#//g' /usr/local/haproxy/etc/haproxy.cfg
/etc/init.d/haproxy reload > /dev/null
read -p "上线完成,回车返回!"
sleep 2
fi
;;
3)
web03=`sed -n -e '/^server web03/p' /usr/local/haproxy/etc/haproxy.cfg|wc -l`
if [[ "$web03" -gt "0" ]];then
echo "web03网站服务器已经在线上,无需再重新上线.................."
sleep 2
else
echo "开始平滑上线web03网站服务器...................................."
sleep 1
sed -i '88s/^#//g' /usr/local/haproxy/etc/haproxy.cfg
/etc/init.d/haproxy reload > /dev/null
read -p "上线完成,回车返回!"
sleep 2
fi
;;
0)
echo "返回上层菜单!"
sleep 1
clear
break
;;
*) read -p "请输入对应数字!或者Ctrl+C退出!回车继续!"
;;
esac
done
;;
0)
action "haproxy管理脚本退出................................................" /bin/true
sleep 1
clear
break
;;
*) read -p "请输入对应数字!或者Ctrl+C退出!回车继续!"
;;
esac
done
|
|
|