目錄(?)[+]
一般2.6.10以上內核版本都已經自帶了ipvsadm,故不需要安裝。
Ipvs 1.25編譯
ipvsadm-1.25編譯不過
- 去掉netlink庫的依賴:去掉libipvs/Makefile的CFLAGS += -DLIBIPVS_USE_NL,去掉Makefile的LIBS += -lnl。
- 需要popt庫解析命令行,在這里下載并安裝http://freshmeat.net/projects/popt/.。
?
DR方式的LB
配置LVS主節點
1.修改proc參數
#vi /etc/sysctl.conf
net.ipv4.ip_forward = 1?
net.ipv4.conf.all.send_redirects = 0?
net.ipv4.conf.default.send_redirects = 0?
net.ipv4.conf.eth0.send_redirects = 0?
net.ipv4.conf.eth1.send_redirects = 0
#sysctl –p
2. 添加負載均衡規則
#cat > /etc/sysconfig/ipvsadm
ipvsadm -A -t 192.168.100.20:80 -s rr?
ipvsadm -a -t 192.168.100.20:80 -r 192.168.100.116:80 -g -p60?
ipvsadm -a -t 192.168.100.20:80 -r 192.168.100.117:80 -g -p60
如果添加realserver時設置了-p 60參數,則同一個客戶端每次刷新頁面時,連接的是同一個real server,否則會輪流更替,但我加了-p 參數會報錯。?
設置連接保持(-p)參數是為了確保ftp、ssl等連接的穩定和可靠性。
?
3.添加虛擬IP地址
(比較郁悶的是,下面這個設置在機器上不生效,需要手動執行: ifconfig eth0:1 192.168.100.20 broadcast 192.168.100.255 netmask 255.255.255.0 )
#vi /etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE=eth0:0?
BROADCAST=192.168.100.255?
IPADDR=192.168.100.20?
NETMASK=255.255.255.0?
ONBOOT=yes?
TYPE=Ethernet
#service network restart
4. 保存規則并設置服務狀態
#ipvsadm-save > /etc/sysconfig/ipvsadm?
#chkconfig --level 35 ipvsadm on?
#service ipvsadm start
配置各Real Server節點
1. 修改proc參數
#vi /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1?
net.ipv4.conf.all.arp_announce = 2?
net.ipv4.conf.lo.arp_ignore = 1?
net.ipv4.conf.lo.arp_announce = 2#sysctl –p
2.添加虛擬地址及路由記錄
#vi /opt/add_vip.sh
#!/bin/bash?
ifconfig lo:0 192.168.100.20 netmask 255.255.255.255 up?
route add -host 192.168.100.20 dev lo:0
#chmod +x /opt/add_vip.sh?
#/opt/add_vip.sh?
#echo "/opt/add_vip.sh"? >> /etc/rc.local
NAT方式的LB
在同一個網段內設置,沒有成功,網上說需要設置iptables-nat,但同一個網段需要么?
?
驗證LVS
在LVS主節點上執行
ipvsadm -L -n
LVS源碼分析
LVS源碼在下面網站中有詳細分析,寫得非常不錯,如果想深入研究的,建議看一下。
http://www.yubo.org/ipvs/index.php
這兒有張netfilter的框架圖,也值得看看
http://zh.linuxvirtualserver.org/files/linux2.6.32.2netfilter.JPG