Chinaunix

标题: 輕便式 LVS 集群架設攻略(原創) [打印本页]

作者: jjstephen    时间: 2006-03-28 01:09
标题: 輕便式 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,看看所出的主頁是否正常.如果用一台電腦訪問的話,訪問完后要清除緩存.先把主頁都做到不同式樣,根據輪轉調度法,每次訪問的請求都會按次序分到真實服器上,所以應該可以依次序看到真實服務器上的主頁.
作者: jackylau    时间: 2006-03-28 08:44
你的real server kernel是多少呀?
作者: JonZhao    时间: 2006-03-28 14:05
楼主可否描述的更详细些。
最好列出每步的详细命令。
方便大家实践。
谢谢!
作者: 秋风No.1    时间: 2006-03-28 16:36
原帖由 jjstephen 于 2006-3-28 01:09 发表
很多人在架設LVS Load Balancing 都要重新編譯內核,打補丁,十分麻煩而且容易出錯.我在這里給出一個十分簡易的方法去架設LVS.這里以直接路由DR方式為例子.

在負責調度的主機LB上安裝一個內核版本2.6.10或以上的 ...

有个疑问,这样的load balancing 是否能够保证session的同步?
作者: ljhb    时间: 2006-03-29 00:57
原帖由 秋风No.1 于 2006-3-28 16:36 发表

有个疑问,这样的load balancing 是否能够保证session的同步?



lvs只是做网络的转发,保持session同步时不可能的,但是针对ftp,他有一个 ip_vs_ftp的转发策略;针对http,你可以加上persistent的选项来在一定的时间内保证固定的客户端访问固定的服务器。这个策略能保证session同步。
作者: sniper    时间: 2006-04-05 13:36
session同步应该由后端的web server集群实现。
DR模式下所有的进出流量都经过负载均衡服务器,好处是与后端集群无关,架设起来自然是最简单的,但同时对负载均衡路由器提出了很高的要求,这一点不可忽略。
作者: mel    时间: 2006-04-26 17:09
原帖由 ljhb 于 2006-3-29 00:57 发表



lvs只是做网络的转发,保持session同步时不可能的,但是针对ftp,他有一个 ip_vs_ftp的转发策略;针对http,你可以加上persistent的选项来在一定的时间内保证固定的客户端访问固定的服务器。这个策略能保证 ...


http persistent在哪里设置的,带session的系统现在很多了,现在就面临这个问题
作者: haohaoo    时间: 2006-04-26 18:12
redhat-as3直接安装个rpm包也能这么做
作者: hrz520520    时间: 2010-06-17 10:47
哈哈,可惜只做的80跳转。如果能做到整个机器跳转就好了。所有的数据负载平衡




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2