在我们日常运维工作中,经常会碰到负载均衡器后端应用代码更新、临时剔除后端服务器、排查一主机应用故障等,往往我们会选择比较粗鲁的做法,直接停止或重启应用服务,让负载均衡器探测服务不可用将其剔除。这样带来的坏处是用户与服务器已经建立的连接会被中止,开发人员无法对已经停止服务的主机进行调试。现介绍一种较为温柔的做法,即通过禁用/启用成员的方式来达到目的。本文针对目前最为流行的负载均衡器逐一进行介绍。包括LVS、Haproxy、F5在命令行模式下的实现(方便与其它管理平台对接,实现自动化维护)。当然,Haproxy与F5都提供了人性化管理界面,不过只依赖手工来进行操作。
一、LVS负载均衡器
原理
使用LVS自带的管理工具来实现。
环境说明
Disable VIP:192.168.100.11:80
Disable REAL SERVER:192.168.100.78
实施步骤
1、初始状态
[devuser@lvsserver ~]# ipvsadm -Ln
2、禁用成员
[devuser@lvsserver ~]# ipvsadm -d -t 192.168.100.11:80 -r 192.168.100.78
3、当前状态
[devuser@lvsserver ~]# ipvsadm -Ln
4、启用成员
[devuser@lvsserver ~]#ipvsadm -a -t 192.168.100.11:80 -r 192.168.100.78
5、当前状态
[devuser@lvsserver ~]# ipvsadm -Ln
二、Haproxy负载均衡器
原理
使用Haproxy的socket admin通道来实现。
环境说明
Disable backend:test.tianya.cn
Disable REAL SERVER:192.168.100.78
实施步骤
1、修改haproxy.cfg配置
#vi /usr/local/haproxy/etc/haproxy.cfg
在global域添加socket admin支持并重启Haproxy服务
#service haproxy restart
2、安装socat(在任意的两个socket管道之间建立一个通道,在该通道中交换两端的数据。)
注:disable OpenSSL FIPS support "--disable-fips",在没有安装fips包的情况下make时会提示:
3、禁用成员
#echo "disable server test.tianya.cn/192.168.100.78" | socat stdio /usr/local/haproxy/HaproxySocket

4、启用成员
#echo "enable server test.tianya.cn/192.168.100.78" | socat stdio /usr/local/haproxy/HaproxySocket

三、F5-LTM负载均衡器
原理
使用F5-iControl开发包Pycontrol对F5设备进行管理。
环境说明
Disable POOL:test.tianya.cn
Disable SERVER:192.168.100.42:80 192.168.100.43:80 192.168.100.44:80
实施步骤
1、部署运行环境
#mkdir -p /home/install;cd /home/install
安装python环境(略),要求py2.5或以上。
1.1、安装SUDS模块
1.2、安装PYCONTROL模块
1.3、校验安装结果
#python