1. 程式人生 > >配置基於DR模式Lvs叢集

配置基於DR模式Lvs叢集

基本術語:
Director
:前端負載均衡器,執行lvs,目前只能為Linux,針對FreeBSD剛剛出來,效能不是很好。可以針對webftpcachemms甚至mysql等服務做load balancesRealServer:後端需要負載均衡的伺服器,可以為各類系統,LinuxSolarisAixBSDWindows都可,甚至Director本身也可以作為RealServer使用.
lvs( Linux Virtual Server),Linux下的負載均衡器,支援LVS-NAT LVS-DRLVS-TUNL三種不同的方式,nat用的不是很多,主要用的是DRTUNL方式。DR

方式適合所有的RealServer同一網段下,即接在同一個交換機上.
TUNL方式就對於RealServer的位置可以任意了,完全可以跨地域、空間,只要系統支援Tunnel就可以.方便以後擴充的話直接Tunl方式即可.

由此可知,配置叢集分以下幾種情況:一、配置基於DR模式Lvs叢集二、配置基於隧道模式Lvs叢集三、配置基於高可用Lvs+heartbeat
四、此種配置方式可以加強LVS的主節點的高安全性前提下(主節點簡稱DR,備份主節點DRbak),考慮充分利用資源可以將DRbak做為realserver集群系統基本構架:

071210175436.jpg



Load Balancer(負載均衡器)

Load Balancer
是整個集群系統的前端,負責把客戶請求轉發到

Real Server上。

Backup
是備份Load Balancer,當Load Balancer不可用時接替它,成為實際的Load Balancer

Load Balancer
通過Ldirectord監測各Real Server的健康狀況。在Real Server不可用時把它從群中剔除,恢復時重新加入。
 
Server Array(
伺服器群)
Server Array
是一組執行實際應用服務的機器,比如WEB, Mail, FTP, DNS, Media等等。在實際應用中,Load BalancerBackup也可以兼任Real Server的角色。以下的測試就是一臺伺服器既擔任了LVSserver,
同時也是realserver節點.

Shared Storage(
共享儲存)
Shared Storage
為所有Real Server提供共享儲存空間和一致的資料內容。這一部分在這裡下面將詳述.

LVS
的安裝部署

LVS+DR
模式的部署準備工作:

1. VMware server
採用vmware GSX server3.2,然後在虛擬機器上安裝了2CENTOS4.4,安裝CENTOS的原因是它完全是免費的,且可以升級,是穩定的redhat版本.

2. 
作業系統:

CENTOS 4.4
下載
下載 1,2,3,4 .iso 就可以了。

3. IPVS
管理軟體可以到下載原始碼編譯檔案ipvsadm-1.24.tar.gz
也可以直接在下載類似ipvsadm-1.24-6.i386.rpm ,piranha-0.8.2-1.i386.rpmrpm包進行安裝.

4:
地址規劃:

LB
真實地址:192.168.60.132
VIP
地址(vistual IP,也就是你的URL需要解析到的地址或者說是提供對外http 服務的ip192.168.60.200
Realserver1:192.168.60.132
Realserver2:192.168.60.144
192.168.60.132LVSserver,也是realserver.

開始安裝:

1. 
安裝 CENT OS 4.4 vmware我在選擇安裝包時選擇了 xwindows system, GNOME desktop environment,
KDE K DESKTOP environment, development tools, x software development,
gnome software development, kde software development.
2. 
安裝完成後,copy 作業系統生成第二個.

3. 三個作業系統的ip 分別:
(lvs server) 192.168.60.132
255.255.255.0
192.168.60.1 (gw)
(real server) 192.168.60.132
255.255.255.0
192.168.60.1 (gw)
(real server) 192.168.60.144
255.255.255.0
192.168.60.1 (gw)
192.168.60.132
既是LVS server,又是real server.

4:
LVSserver上安裝IPVS管理軟體

IPVS
安裝主要包括三方面:Load Banlancer上安裝IPVS核心補丁Load Banlancer上安裝IPVS管理軟體Real Server上安裝ARP hidden核心補丁我採用的是rpm安裝方式,其它的realserver節點不用安裝這些東西.
Rpm –ivh ipvsadm-1.24-6.i386.rpm
Rpm –ivh  piranha-0.8.2-1.i386.rpm
# ipvsadm --help 
如果看到提示幫助就表成功。

5. 
進入192.168.60.132 檢查kernel 是否已經包含 ipvs 模組
modprobe -l |grep ipvs
如果看到如下,就可以了,如果沒有還要重編核心,選ipvs 模組。
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_wlc.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_dh.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_sed.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_wrr.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_lc.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_rr.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_nq.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_lblcr.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_ftp.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_sh.ko
/lib/modules/2.6.9-42.EL/kernel/net/ipv4/ipvs/ip_vs_lblc.ko
6:
配置啟動指令碼

 LvsServer
上的指令碼:
#!/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
/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
說明:
echo "1" >/proc/sys/net/ipv4/ip_forward,
通過該引數來啟用包轉發功能,從而使系統充當路由器。引數值為1時啟用ip轉發,為0時禁止ip轉發。注意,我們可以在單網絡卡或雙網絡卡的主機上實現ip轉發.

也可以寫成這樣的服務指令碼:
#!/bin/sh
# description: start LVS   of  Directorserver
VIP=192.168.60.132
RIP1=192.168.60.132
RIP2=192.168.60.144
 
./etc/rc.d/init.d/functions
 
case "$1" in
    start)
        echo " start LVS  of DirectorServer"

# 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
/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
       ;
    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

把此檔案放到/etc/init.d/lvsdr
chomd 755 /etc/init.d/lvsdr
service lvsdr start
Realserver
上的指令碼:
192.168.60.132上也配置這個指令碼.
#!/bin/bash
VIP=192.168.25.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

上面指令碼也可以寫成服務:
vi /etc/init.d/lvsrs
#!/bin/bash
#description : start realserver 
VIP=192.168.60.200
./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
        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
然後:
chomd 755 /etc/init.d/lvsrs
service lvsrs start

RS上必須對VIP忽略ARP響應對於2.4以下低版本,Real Server上要安裝ARP hidden核心補丁,幸運的是,2.6核心中通過調整核心引數即可忽略ARP廣播迴應。真好!上面指令碼就是實現這些功能.

7:
配置lvs檔案

Lvs
安裝完畢後,會產生/etc/sysconfig/ha/lvs.cf檔案,編輯此檔案,內容類似如下:
[root@rac1 ~]# more /etc/sysconfig/ha/lvs.cf
serial_no = 18
primary = 192.168.60.132
service = lvs
network = direct
debug_level = NONE
virtual www.gaojf.com {
active = 1
address = 192.168.60.200 eth0:0
port = 80
send = "GET / HTTP/1.0/r/n/r/n"
expect = "HTTP"
use_regex = 0
load_monitor = none
scheduler = rr
protocol = tcp
timeout = 6
reentry = 15
quiesce_server = 0

server RS1 {
address = 192.168.60.132
active = 1
weight = 1
}
server RS2 {
address = 192.168.60.144
active = 1
weight = 1
}
}
編輯完成,然後啟動pulse服務,即啟動lvs服務
Service pulse start