虛擬機搭建LVS負載均衡DR直接路由模式

在公司閒了,研究研究自己喜歡的東西,哈哈,這兩天安裝部署了LVS負載均衡環境,搞了很久才配置成功,不容易啊。下面是我的環境:

虛擬機A:
IP:192.168.213.129
操作系統:CentOS 6.3

虛擬機B:
IP:192.168.213.128
操作系統:Ubuntu 12.04

虛擬IP設置爲:192.168.213.130

 

上面兩個虛擬機我這裏已經安裝了Nginx1.0+PHP5.3+MYSQL5.5(測試效果的時候用到),還沒安裝的請自行安裝。

由於只裝了兩個虛擬機,我這裏將虛擬機A作爲Directorserver,同時也作爲realServer,將虛擬機B作爲realServer,具體安裝步驟如下:

1:安裝依賴類庫:

>yum -y install popt-static kernel-devel lftp  libnl*   popt*

 

2:在虛擬機A中安裝LVS,即ipvsadm:

>wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
>tar -zxf ipvsadm-1.26.tar.gz
>cd ipvsadm-1.26
>make && make install

 

3:在虛擬機A創建lvsServer啓動腳本:

>cd /etc/rc.d/init.d/
>vi lvsServer
#添加如下內容:
#!/bin/sh
# description: start LVS   of  Directorserver
VIP=192.168.213.130
RIP1=192.168.213.128
RIP2=192.168.213.129

/etc/rc.d/init.d/functions

case "$1" in
    start)
        echo " start LVS  of DirectorServer"
 # set the Virtual  IP Address and sysctl parameter
 #虛擬網絡接口指的是爲一個網絡接口指定多個IP地址,虛擬接口是這樣的 eth0:0 、 eth0:1、eth0:2
 #其實用ifconfig 爲一個網卡配置多個IP地址
 /sbin/ifconfig eth1:0 $VIP broadcast $VIP netmask 255.255.255.255 up
 /sbin/route add -host $VIP dev eth1:0

 #echo "1" >/proc/sys/net/ipv4/ip_forward,通過該參數來啓用包轉發功能,從而使系統充當路由器。
 #參數值爲1時啓用ip轉發,爲0時禁止ip轉發。注意,我們可以在單網卡或雙網卡的主機上實現ip轉發
        echo "1" >/proc/sys/net/ipv4/ip_forward
        
 # Clear all iptables rules.
        /sbin/iptables -F
        # Reset iptables counters.
        /sbin/iptables -Z
        # Clear all ipvsadm rules/services.
 #清除內核虛擬服務器表中的所有記錄
        /sbin/ipvsadm -C


 #set LVS
 #-A 在內核的虛擬服務器表中添加一條新的虛擬服務器記錄。也就是增加一臺新的虛擬服務器
 #-t 說明虛擬服務器提供的是tcp 的服務
 #-s 使用的調度算法,有這樣幾個選項rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默認的調度算法是:wlc
 #-p 持久穩固的服務。這個選項的意思是來自同一個客戶的多次請求,將被同一臺真實的服務器處理。timeout 的默認值爲300 秒
 /sbin/ipvsadm -A -t $VIP:80 -s rr -p 30
 
 #-a 在內核虛擬服務器表的一條記錄裏添加一條新的真實服務器記錄。也就是在一個虛擬服務器中增加一臺新的真實服務器
 #-r 真實的服務器[Real-Server:port]
 #-g 指定LVS 的工作模式爲直接路由模式(也是LVS 默認的模式)
 /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 eth1:0 down
        ;;
    *)
        echo "Usage: $0 {start|stop}"  
        exit 1
esac



4:在虛擬機A創建realServer啓動腳本:

>cd /etc/rc.d/init.d/
>vi realServer
#內容如下:
#!/bin/bash
#description : start realserver 
VIP=192.168.213.130
/etc/rc.d/init.d/functions
case "$1" in
    start)
        echo " start LVS  of  REALServer"
	/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 
      ;;
    stop)
        /sbin/ifconfig lo:0 down
        echo "close LVS Directorserver"
        echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
        echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
        echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
        echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
        ;;
    *)
        echo "Usage: $0 {start|stop}"
        exit 1
esac


 5:在虛擬機A中設置ip地址轉發功能:

 >vi /etc/sysctl.conf    #修改net.ipv4.ip_forward = 1

 

6:在虛擬機B中設置如下:

>vi /etc/sysctl.conf
#修改如下
net.ipv4.ip_forward = 1 

net.ipv4.conf.lo.arp_ignore = 1 

net.ipv4.conf.lo.arp_announce = 2 

net.ipv4.conf.all.arp_ignore = 1 

net.ipv4.conf.all.arp_announce = 2 


7:在虛擬機A啓動lvsServer:

>cd /etc/rc.d/init.d/
>./lvsServer start


8:在虛擬機A啓動realServer

>cd /etc/rc.d/init.d/
>./realServer start

 

9:在虛擬機B創建realServer啓動腳本:

>cd /etc/init.d/
>vi realServer
#內容如下:
#!/bin/bash
#description : start realserver 
VIP=192.168.213.130
case "$1" in
    start)
        echo " start LVS  of  REALServer"
	/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 
      ;;
    stop)
        /sbin/ifconfig lo:0 down
        echo "close LVS Directorserver"
        echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
        echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
        echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
        echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
        ;;
    *)
        echo "Usage: $0 {start|stop}"
        exit 1
esac

10:在虛擬機B啓動realServer:

>cd /etc/init.d/
>./realServer start


11:分別在虛擬機A和B創建測試文件,在真實電腦裏用瀏覽器訪問192.168.213.130即可看到負載均衡效果。

12:在虛擬機A中查看負載狀態:

>ipvsadm -lcn
#顯示如下:
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:56  FIN_WAIT    192.168.213.1:60118 192.168.213.130:80 192.168.213.129:80
TCP 14:56  ESTABLISHED 192.168.213.1:60119 192.168.213.130:80 192.168.213.128:80



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章