Haproxy--脚本实现不重启haproxy服务上下线server
1. socat 安装
yum install socat -y
2. 脚本配置
2.1 /root/haproxy-weight.sh
#!/bin/bash
# haproxy 自动上下线
#命令格式:/root/haproxy-weight.sh [up|down] {servername}
. /etc/init.d/functions
case $1 in
up)
for i in /var/lib/haproxy/haproxy.sock?;do echo "set weight back_web/$2 1"|socat stdio /var/lib/haproxy/haproxy.sock$i;done &>/dev/null
[ $? -eq 0 ] && action "$2 is up"
;;
down)
for i in /var/lib/haproxy/haproxy.sock?;do echo "set weight back_web/$2 0"|socat stdio /var/lib/haproxy/haproxy.sock$i;done &>/dev/null
[ $? -eq 0 ] && action "$2 is down"
;;
*)
echo -e "\033[41;37;1;5m格式错误,请按正确格式输入!\033[0m"
echo -e "\033[32;1m命令格式:haproxy-weight [up|down] {servername}\033[0m"
;;
esac
2.2 socket定义
socket文件由/etc/haproxy/haproxy.cfg的global定义
global
....
stats socket /var/lib/haproxy/haproxy.sock1 mode 600 level admin process 1
stats socket /var/lib/haproxy/haproxy.sock2 mode 600 level admin process 2
stats socket /var/lib/haproxy/haproxy.sock3 mode 600 level admin process 3
stats socket /var/lib/haproxy/haproxy.sock4 mode 600 level admin process 4
stats socket /var/lib/haproxy/haproxy.sock5 mode 600 level admin process 5
3.使用脚本实现通过socket上下线服务
3.1 使用脚本上下线
/root/haproxy-weight.sh down 192.168.31.17
3.2 查看效果
3.2.1 down
3.2.2 up
4.注意点
backend的配置中,将server name直接写成ip地址,这样上下线的时候只需要输入对应ip即可.无需再去查看对应的server名.
backend back_web
server 192.168.31.17 192.168.31.17:80 check inter 3000 fall 2 rise 5
server 192.168.31.27 192.168.31.27:80 check inter 3000 fall 2 rise 5
server back1 192.168.31.47:8081 backup