liuhongyu 发表于 2019-1-1 13:21:46

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

http://s3.运维网.com/wyfs02/M00/12/3F/wKiom1MAOArwoSMgAAELEhmttes287.jpg
  

  #智能判断,网站web02服务器是否在线上,如果在haproxy线上,就无需要在挂到haproxy上。
http://s3.运维网.com/wyfs02/M02/12/3F/wKioL1MAN-aRK8rPAAD7rrfpqW8774.jpg
http://s3.运维网.com/wyfs02/M01/12/3F/wKiom1MAOAvy3iLKAAEO9V46dvA592.jpg
http://s3.运维网.com/wyfs02/M00/12/3F/wKioL1MAN-ajEuEeAAEYIrhsWOA419.jpg
  

  #现在3台web网站服务器还在线上.
http://s3.运维网.com/wyfs02/M02/12/3F/wKiom1MAOAzzH_E6AAJcvHaJARM313.jpg
http://s3.运维网.com/wyfs02/M01/12/3F/wKioL1MAN-jSevO8AAEJsekyMfY273.jpg
  

  

  #现在下线web02网站服务器.
http://s3.运维网.com/wyfs02/M01/12/3F/wKioL1MAN-jBqcmPAAINauaDZuc843.jpg
  

  #在haproxy监控页面,看到web02网站服务器已经不在线上,不对用户提供请求了。
http://s3.运维网.com/wyfs02/M01/12/3F/wKiom1MAOR-DVFfKAAHMe1jj8pk449.jpg
  

  

  

  #现在把web02网站服务器挂到haproxy负载均衡上.
http://s3.运维网.com/wyfs02/M02/12/3F/wKioL1MAN-mDuyzvAAENPH3tc-4926.jpg
  

  

http://s3.运维网.com/wyfs02/M01/12/3F/wKiom1MAOA_h7s3QAAIdHoEP58I151.jpg
  

  #web02上线完成,到haproxy监控页面看下,是否在haproxy负载均衡上面。
http://s3.运维网.com/wyfs02/M00/12/3F/wKioL1MAN-qwfQv7AAJRIku1Krw977.jpg
#!/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}'`"
;;
#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  




页: [1]
查看完整版本: Haproxy负载均衡平滑上线,下线后端网站服务器方案