本人于2009年12月迁移至独立BLOG。
1、欢迎光临运维进行时,希望认识更多志向相同的朋友!
2、本站部分资源来源于网络,如有侵权请及时与我联系!
3、强烈建议使用Firefox、Opera、Safari及IE7以上的浏览器访问,以获得最佳浏览质量!
4、请勿发表与中华人民共和国法律、法规相抵触的言论,谢谢合作!
5、本人发布的文章与评论内容仅代表本人观点。
1、欢迎光临运维进行时,希望认识更多志向相同的朋友!
2、本站部分资源来源于网络,如有侵权请及时与我联系!
3、强烈建议使用Firefox、Opera、Safari及IE7以上的浏览器访问,以获得最佳浏览质量!
4、请勿发表与中华人民共和国法律、法规相抵触的言论,谢谢合作!
5、本人发布的文章与评论内容仅代表本人观点。
在我们日常运维工作中,经常会碰到负载均衡器后端应用代码更新、临时剔除后端服务器、排查一主机应用故障等,往往我们会选择比较粗鲁的做法,直接停止或重启应用服务,让负载均衡器探测服务不可用将其剔除。这样带来的坏处是用户与服务器已经建立的连接会被中止,开发人员无法对已经停止服务的主机进行调试。现介绍一种较为温柔的做法,即通过禁用/启用成员的方式来达到目的。本文针对目前最为流行的负载均衡器逐一进行介绍。包括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
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.100.11:80 rr persistent 60
-> 192.168.100.74:80 Route 3 462 464
-> 192.168.100.75:80 Route 3 420 440
-> 192.168.100.76:80 Route 3 431 400
-> 192.168.100.77:80 Route 3 430 432
-> 192.168.100.78:80 Route 3 435 438
2、禁用成员
[devuser@lvsserver ~]# ipvsadm -d -t 192.168.100.11:80 -r 192.168.100.78
3、当前状态
[devuser@lvsserver ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.100.11:80 rr persistent 60
-> 192.168.100.74:80 Route 3 462 464
-> 192.168.100.75:80 Route 3 420 440
-> 192.168.100.76:80 Route 3 431 400
-> 192.168.100.77:80 Route 3 430 432
4、启用成员
[devuser@lvsserver ~]#ipvsadm -a -t 192.168.100.11:80 -r 192.168.100.78
5、当前状态
[devuser@lvsserver ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.100.11:80 rr persistent 60
-> 192.168.100.74:80 Route 3 462 464
-> 192.168.100.75:80 Route 3 420 440
-> 192.168.100.76:80 Route 3 431 400
-> 192.168.100.77:80 Route 3 430 432
-> 192.168.100.78:80 Route 3 435 438
二、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服务
global
... ...
stats socket /usr/local/haproxy/HaproxySocket level admin
... ...
#service haproxy restart
2、安装socat(在任意的两个socket管道之间建立一个通道,在该通道中交换两端的数据。)
wget http://www.dest-unreach.org/socat/download/socat-2.0.0-b3.tar.gz
./configure --disable-fips
make;make install
注:disable OpenSSL FIPS support "--disable-fips",在没有安装fips包的情况下make时会提示:
FIPSLD_CC=gcc fipsld -O -D_GNU_SOURCE -Wall -Wno-parentheses -DHAVE_CONFIG_H -I. -I. -c -o socat.o socat.c
/bin/sh: fipsld: command not found
make: *** [socat.o] Error 127
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负载均衡器
一、LVS负载均衡器
原理
使用LVS自带的管理工具来实现。
环境说明
Disable VIP:192.168.100.11:80
Disable REAL SERVER:192.168.100.78
实施步骤
1、初始状态
[devuser@lvsserver ~]# ipvsadm -Ln
引用
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.100.11:80 rr persistent 60
-> 192.168.100.74:80 Route 3 462 464
-> 192.168.100.75:80 Route 3 420 440
-> 192.168.100.76:80 Route 3 431 400
-> 192.168.100.77:80 Route 3 430 432
-> 192.168.100.78:80 Route 3 435 438
2、禁用成员
[devuser@lvsserver ~]# ipvsadm -d -t 192.168.100.11:80 -r 192.168.100.78
3、当前状态
[devuser@lvsserver ~]# ipvsadm -Ln
引用
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.100.11:80 rr persistent 60
-> 192.168.100.74:80 Route 3 462 464
-> 192.168.100.75:80 Route 3 420 440
-> 192.168.100.76:80 Route 3 431 400
-> 192.168.100.77:80 Route 3 430 432
4、启用成员
[devuser@lvsserver ~]#ipvsadm -a -t 192.168.100.11:80 -r 192.168.100.78
5、当前状态
[devuser@lvsserver ~]# ipvsadm -Ln
引用
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.100.11:80 rr persistent 60
-> 192.168.100.74:80 Route 3 462 464
-> 192.168.100.75:80 Route 3 420 440
-> 192.168.100.76:80 Route 3 431 400
-> 192.168.100.77:80 Route 3 430 432
-> 192.168.100.78:80 Route 3 435 438
二、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服务
引用
global
... ...
stats socket /usr/local/haproxy/HaproxySocket level admin
... ...
2、安装socat(在任意的两个socket管道之间建立一个通道,在该通道中交换两端的数据。)
引用
wget http://www.dest-unreach.org/socat/download/socat-2.0.0-b3.tar.gz
./configure --disable-fips
make;make install
注:disable OpenSSL FIPS support "--disable-fips",在没有安装fips包的情况下make时会提示:
引用
FIPSLD_CC=gcc fipsld -O -D_GNU_SOURCE -Wall -Wno-parentheses -DHAVE_CONFIG_H -I. -I. -c -o socat.o socat.c
/bin/sh: fipsld: command not found
make: *** [socat.o] Error 127
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负载均衡器
一、部署LAMP/LNMP+CodeIgniter框架(略)
二、安装rrdtool
三、下载管理平台包
wget http://tianyalvs.googlecode.com/files/TianyaLVS.tar.gz
cd "web root"
tar -zxvf TianyaLVS.tar.gz
注意事项
1、要求webroot/TianyaLVS/LVS、webroot/TianyaLVS/images/LVS目录可写。
2、系统需.htaccess支持,除rewrite支持外apache还需添加:
修改项
cd TianyaLVS/TianyaLVSsystem/application/config
vi config.php
//访问URL
$config['base_url'] = "http://localhost/";
//站点目录位置
$config['webroot'] = '/www/TianyaLVS';
//管理端应用程序位置
$config['adminroot'] = '/home/LVS';
二、安装rrdtool
三、下载管理平台包
wget http://tianyalvs.googlecode.com/files/TianyaLVS.tar.gz
cd "web root"
tar -zxvf TianyaLVS.tar.gz
注意事项
1、要求webroot/TianyaLVS/LVS、webroot/TianyaLVS/images/LVS目录可写。
2、系统需.htaccess支持,除rewrite支持外apache还需添加:
修改项
cd TianyaLVS/TianyaLVSsystem/application/config
vi config.php
引用
//访问URL
$config['base_url'] = "http://localhost/";
//站点目录位置
$config['webroot'] = '/www/TianyaLVS';
//管理端应用程序位置
$config['adminroot'] = '/home/LVS';