您的位置:首页 > 运维架构 > 网站架构

Haproxy负载均衡平滑上线,下线后端网站服务器方案

2014-02-16 12:00 671 查看




#智能判断,网站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


本文出自 “IMySQL” 博客,请务必保留此出处http://jiechao2012.blog.51cto.com/3251753/1359511
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐