######haproxy动态下线需要用到socat工具
socat工具:
对服务器动态权重和其它状态可以利用 socat工具进行调整,Socat 是 Linux 下的一个多功能的网络工具,名字来由是Socket CAT,相当于netCAT的增强版.Socat 的主要特点就是在两个数据流之间建立双向通道,且支持众多协议和链接方式。如 IP、TCP、 UDP、IPv6、Socket文件等。
更改线上的服务器的权重为0,使haproxy不往该服务器调度,从而达到下线的效果
注:1、只支持动态算法下使用
2、每次只能修改一个单进程(sock文件)
######ha1安装socat工具
[root@ha1 ~]#yum install -y socat
######修改ha1上的haproxy配置socket文件。
[root@ha1 ~]#vim /etc/haproxy/haproxy.cfg
global
…
stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin process 1
…
######重启haproxy服务
[root@ha1 ~]#systemctl restart haproxy
######编写动态上下线服务器脚本
[root@ha1 ~]#vim haproxy_host_up_down.sh
#!/bin/bash
#================================================================
# Copyright (C) 2022 IEucd Inc. All rights reserved.
#
# 文件名称:haproxy_host_up_down.sh
# 创 建 者:TanLiang
# 创建日期:2022年08月27日
# 描 述:This is a test file
#
#================================================================
. /etc/init.d/functions
case $1 in
up)
echo “set weight httpd_80/$2 1” | socat stdio
/var/lib/haproxy/haproxy.sock
[ $? -eq 0 ] && action “$2 is up”
;;
down)
echo “set weight httpd_80/$2 0” | socat stdio /var/lib/haproxy/haproxy.sock
[ $? -eq 0 ] && action “$2 is down”
;;
*)
echo “Usage: `basename $0` up|down IP”
;;
esac
######使用脚本动态下线web1
[root@ha1 ~]#bash haproxy_host_up_down.sh down web1
web1 is down [ OK ]
######访问nginx验证
[root@client ~]#curl 10.0.0.150
web2.tan.com
[root@client ~]#curl 10.0.0.150
web2.tan.com
[root@client ~]#curl 10.0.0.150
web2.tan.com
[root@client ~]#curl 10.0.0.150
web2.tan.com
######使用脚本上线web1,下线web2
[root@ha1 ~]#bash haproxy_host_up_down.sh up web1
web1 is up [ OK ]
[root@ha1 ~]#bash haproxy_host_up_down.sh down web2
web2 is down [ OK ]
######client访问haproxy验证。
[root@client ~]#while :;do curl 10.0.0.150 && sleep 1;done
web2.tan.com
web2.tan.com
web2.tan.com
web2.tan.com
web2.tan.com
web2.tan.com
web2.tan.com
web2.tan.com
web2.tan.com
web2.tan.com
web2.tan.com
web1.tan.com
web2.tan.com
web1.tan.com
web2.tan.com
web1.tan.com
web2.tan.com
web1.tan.com
web1.tan.com
web1.tan.com
web1.tan.com
web1.tan.com