LVS集群有DR、TUN、NAT三種配置模式,可以對www服務、FTP服務、MAIL服務等做負載均衡,下面通過搭建www服務的負載均衡實例,講述基于DR模式的LVS集群配置。
一、 Director Server的配置
在Director Server上配置LVS負載均衡集群,有兩種方法:
a. 通過ipvsadm命令行進行配置
b. 通過Redhat提供的工具piranha來配置LVS
通過ipvsadm命令行方式配置LVS
安裝IPVS后,就可以配置LVS集群了,首先在Director Server上綁定一個虛擬IP(也叫VIP),此IP用于對外提供服務,執行如下命令:
復制代碼
代碼如下:
[root@localhost ~]#ifconfig eth0:0 192.168.60.200 broadcast 192.168.60.200 netmask 255.255.255.255 up
此處在eth0設備上綁定了一個虛擬設備eth0:0,同時設置了一個虛擬IP是192.168.60.200,也就是上面我們規劃的IP地址,然后指定廣播地址也為192.168.60.200,需要特別注意的是,這里的子網掩碼為255.255.255.255。
然后給設備eth0:0指定一條路由,執行如下指令:
代碼如下:
[root@localhost ~]#route add -host 192.168.60.200 dev eth0:0
接著啟用系統的包轉發功能,從而使系統充當路由器,執行如下指令:
代碼如下:
[root@localhost ~]#echo "1" >/proc/sys/net/ipv4/ip_forward
指令中,參數值為1時啟用ip轉發,為0時禁止ip轉發。其實在DR模式中,開啟系統的包轉發功能不是必須的,而在NAT模式下此操作是必須的。
然后開始配置ipvs,執行如下操作:
代碼如下:
[root@localhost ~]#ipvsadm -C
[root@localhost ~]#ipvsadm -A -t 192.168.60.200:80 -s rr -p 600
[root@localhost ~]#ipvsadm -a -t 192.168.60.200:80 -r 192.168.60.132:80 -g
[root@localhost ~]#ipvsadm -a -t 192.168.60.200:80 -r 192.168.60.144:80 -g
上面操作中,第一行是清除內核虛擬服務器列表中的所有記錄,第二行是添加一條新的虛擬IP記錄。這個新的IP是192.168.60.200,同時指定 持續服務時間為600秒。第三、四行是在新加虛擬IP記錄中添加兩條新的Real Server記錄,并且指定LVS 的工作模式為直接路由模式。
最后,啟動LVS服務,執行如下操作:
代碼如下:
[root@localhost ~]#ipvsadm
這樣,LVS在Director Server上的配置就完成了。
為了管理和配置的方便,可以將上面的操作寫出一個腳本文件,腳本內容如下:
代碼如下:
#!/bin/bash
VIP=192.168.60.200
RIP1=192.168.60.132
RIP2=192.168.60.144
GW=192.168.60.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
echo "1" >/proc/sys/net/ipv4/ip_forward
#Clear IPVS table
/sbin/ipvsadm -C
#set LVS
/sbin/ipvsadm -A -t $VIP:80 -s rr -p 600
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
#Run LVS
/sbin/ipvsadm
#end
也可以寫成可啟動與停止的服務腳本,腳本內容如下:
代碼如下:
#!/bin/sh
# description: Start LVS of Director server
VIP=192.168.60.200
RIP1=192.168.60.132
RIP2=192.168.60.144
./etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of Director Server"
# set the Virtual IP Address and sysctl parameter
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
echo "1" >/proc/sys/net/ipv4/ip_forward
#Clear IPVS table
/sbin/ipvsadm -C
#set LVS
/sbin/ipvsadm -A -t $VIP:80 -s rr -p 600
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
#Run LVS
/sbin/ipvsadm
;;
stop)
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth0:0 down
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
將此腳本命名為lvsDR文件,然后把文件放到/etc/init.d下,執行:
代碼如下:
[root@localhost ~]#chomd 755 /etc/init.d/lvsDR
最后可以通過下面命令啟動或停止LVS服務:
代碼如下:
service lvsDR {start|stop}
到此為止,命令行方式配置Director Server完畢。
二、Real server 的配置
在lvs的DR和TUn模式下,用戶的訪問請求到達真實服務器后,是直接返回給用戶的,而不再經過前端的Director Server,因此,就需要在每個Real server節點上增加虛擬的VIP地址,這樣數據才能直接返回給用戶,增加VIP地址的操作可以通過創建腳本的方式來實現,創建文件/etc /init.d/lvsrs,腳本內容如下:
代碼如下:
#!/bin/bash
VIP=192.168.60.200
/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