本人于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负载均衡器
Memlink是天涯社区系统平台部近日推出的开源项目,项目托管地址:http://code.google.com/p/memlink/
为什么会有Memlink?
对于大型论坛服务,比如百度贴吧、天涯论坛,日均发帖量过百万或千万,日均PV过亿,日积月累下来的帖子数量可能几十亿到上百亿。这种超级论坛,其海量存储、海量访问都是一个非常有挑战性的技术难题。
中 小规模的论坛(Phpwind/discuz)通常使用mysql/sql server作为后端存储,当数据量膨胀时,比如一个版面有百万、千万级别主贴,一个主贴下有数百万回复,此时使用SQL语句select … order by … limit … 进行数据查询和展现,性能可想而知。