輕便式 LVS 集群架設攻略(原創)
很多人在架設LVS Load Balancing 都要重新編譯內核,打補丁,十分麻煩而且容易出錯.我在這里給出一個十分簡易的方法去架設LVS.這里以直接路由DR方式為例子.
在負責調度的主機LB上安裝一個內核版本2.6.10或以上的Linux發行版,這里我用的是Mandriva2006.由于2.6.10以上的內核已經集成IPVS,缺省編譯為module,所以不需重新編譯內核.我們可以用modprobe -l 命令查看系統中有哪些module可用.IPVS module在 /lib/modules/2.6.12-12mdksmp/kernel/net/ipv4/ipvs中.
如果我們要手動挂載IPVS,只需要用modprobe <module name>命令就可以,不過我們無須手動挂載.下載ipvsadm管里程序,安裝.在安裝ipvsadm后會自動加入到系統的啟動服務項目中,到系統服務中查看ipvsadm是否已經加入. 點擊啟動后,ipvsadm會自動挂載IPVS module,可以用lsmod查看系統當前所有挂載的module.
設置VIP,然后設置調度算法,算法模塊也會自動加載.加入所有真實服務器IP.以下是我用的腳本(假設用內網IP):
#!/bin/bash
VIP=192.168.0.100
RIP1=192.168.0.11
RIP2=192.168.0.12
RIP3=192.168.0.13
GW=192.168.0.1
# set the Virtual IP Address
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:0
#Clear IPVS table
/sbin/ipvsadm –C
#set LVS
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -g
#Run LVS
/sbin/ipvsadm
#end
有多少台真實服務器主機請自行添加, 並且要安裝web服務器.使用哪種調度算請按情況配置.所有真實服務器主機都要忽略ARP回應,做法是直接修改內核參數,以下是真實服務器上運行的腳本:
#!/bin/bash
VIP=192.168.0.100
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
#end
現在可以測試LVS.找幾台電腦用瀏灠器訪問VIP,看看所出的主頁是否正常.如果用一台電腦訪問的話,訪問完后要清除緩存.先把主頁都做到不同式樣,根據輪轉調度法,每次訪問的請求都會按次序分到真實服器上,所以應該可以依次序看到真實服務器上的主頁.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
我上周就用RHAS3做的LB 通过测试。。。
RS 的KERNEL版本低一点没关系的。
还有注意一点就是WIN2000做RS需要安装:
引用论坛上看到的 “VS/DR方式下,支持WindowsNT/2K做为RealServer,提是你必须安装了MS Loopback Adapter。如果你没有在NT/2K上安装MS Loopback Adapter Driver,你可以选择添加新硬件,添加网络适配器,选择Microsoft,选择Loopback Adapter. 你可能会需要NT的安装盘。然后添加VIP (Virtual IP) 地址在 MS Loopback Adapter上, 不要输入网关gateway IP地址。子网掩码 255.255.255.255 在MS NT/2K会被认为是无效的。。。
解决的办法
可以通过修改注册表设置子网掩码为255.255.255.255, 这在我的DR系统中工作良好。而且这比每次启动时删除外部路由的方法要方便的多。
在Windows 2000,中 网络界面(interfaces)在:
HKEY_LOCAL_MACHINESystemCurrentControlSetServicesTcpipParametersInterfaces
找到适当的网络界面IP地址,修改它的子网掩码,(注意修改方式)不需要重启,只需重新激活该网络界面即可。
不然APACHE里用Listen 加入虚拟IP之后 服务也启动不了
一点心得,呵呵,说的不对的地方请指教
redhat-as3直接安装个rpm包也能这么做
session同步应该由后端的web server集群实现。
DR模式下所有的进出流量都经过负载均衡服务器,好处是与后端集群无关,架设起来自然是最简单的,但同时对负载均衡路由器提出了很高的要求,这一点不可忽略。
http persistent在哪里设置的,带session的系统现在很多了,现在就面临这个问题
lvs只是做网络的转发,保持session同步时不可能的,但是针对ftp,他有一个 ip_vs_ftp的转发策略;针对http,你可以加上persistent的选项来在一定的时间内保证固定的客户端访问固定的服务器。这个策略能保证session同步。
有个疑问,这样的load balancing 是否能够保证session的同步?
顶.
楼主可否描述的更详细些。
最好列出每步的详细命令。
方便大家实践。
谢谢!
你的real server kernel是多少呀?