天天看點

IPVS-DR+heartbeat+ldirectord實作高可用負載均衡叢集

IPVS-DR+heartbeat+ldirectord高可用負載均衡叢集方案前端的負載排程器采用雙機熱備方式,兩台伺服器均安裝雙網卡,其中一個網卡用來連接配接叢集系統,另一個作為備援心跳線路連接配接雙機。主負載排程器和備份負載排程器同時安裝heartbeat及ldirectord,并同時運作heartbeat,互相監視“健康”狀況。一旦備份負載排程器監測到主負載排程器發生故障,備份負載排程器上的heartbeat通過運作腳本來啟動備份排程器上的LVS服務和ldirectord服務,完成虛拟IP故障轉移。一旦主負載排程器恢複正常工作,主負載排程器重新恢複對叢集的資源管理。heartbeat的核心功能包括兩個部分:心跳監測和資源接管,工作原理是心跳監測通過網絡鍊路或序列槽進行,主/備伺服器之間互相發送封包告訴自己目前的狀态,如果在指定的時間内未收到對方發送的封包,那麼就認為對方失敗,同時啟動資源接管子產品接管運作在對方上的資源。ldirectord工作原理是:ldirectord需要在真實伺服器内啟用web服務,然後ldirectord通過循環檢查web服務是否存活。如果真實伺服器不存活,則使用ipvsadm指令将其權重設為0,以確定客戶的連接配接不會導向失效的真實伺服器;如果真實伺服器修複上線,則又将其的權重設為1以使其能夠為用戶端連接配接提供服務。

系統平台:Redhat 5.4

網絡結構如下:

IP位址規劃如下:

需要安裝的軟體包:

1.heartbeat_2.1.4.tar.gz

2.libnet-1.1.2.1.tar.gz

3.MailTools-2.07.tar.gz

4.perl-libwww-perl-5.805-1.1.1.noarch.rpm

5.ipvsadm-1.24-10.i386.rpm

一.lvs-master上的配置

1.修改/etc/hosts檔案,增加以下兩行内容:

[root@localhost~]# vi /etc/hosts

200.10.1.1 lvs-master

200.10.1.2 lvs-backup

2.修改主機名,編輯/etc/sysconfig/network檔案:

HOSTNAME=lvs-master

3.配置eth0和eth1網卡IP(略)

4.設定VIP腳本:

[root@lvs-master~] # vi vip.sh

#!/bin/bash 

VIP=200.10.1.10 

/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up 

/sbin/route add -host $VIP dev eth0:0

5.給vip腳本設定可執行權限:

[root@lvs-master~] # chmod a+x vip.sh

運作vip腳本并設定為開機啟動:

[root@lvs-master~] # ./vip.sh

[root@lvs-master~] # echo “/root/vip.sh”>> /etc/rc.local

6.安裝perl-libwww-perl:

[root@lvs-master~]# rpm-ivh perl-libwww-perl-5.805-1.1.1.noarch.rpm

7.安裝ipvsadm:

[root@lvs-master~]# rpm –ivh ipvsadm-1.24-10.i386.rpm

8.編譯安裝libnet:

[root@lvs-master~]# tar zxf libnet-1.1.2.1.tar.gz

[root@lvs-master~]# cd libnet

[root@lvs-master libnet~]# ./configure

[root@lvs-master libnet~]# make && make install

9.編譯安裝MailTools:

[root@lvs-master~]# tar zxf MailTools-2.07.tar.gz

[root@lvs-master~]# cd MailTools-2.07

[root@lvs-master MailTools-2.07~]# perl Makefile.PL

[root@lvs-master MailTools-2.07~]# make && make install

10.編譯安裝Heartbeat:

[root@lvs-master~]# groupadd haclient //添加heartbeat運作需要的haclient組

[root@lvs-master~]# useradd hacluster –g haclient –s /sbin/nologin //添加heartbeat運作需要的hacluster使用者

[root@lvs-master~]# tar zxf heartbeat_2.1.4.tar.gz

[root@lvs-master heartbeat-2.1.4~]# ./ConfigureMe

[root@lvs-master heartbeat-2.1.4~]# ./ConfigureMe configure

[root@lvs-master heartbeat-2.1.4~]# ./ConfigureMe make

[root@lvs-master heartbeat-2.1.4~]# ./ConfigureMe install

将heartbeat設定成為開機自啟動

[root@lvs-master heartbeat-2.1.4~]# chkconfig –add heartbeat

[root@lvs-master heartbeat-2.1.4~]# chkconfig heartbeat on

11.配置ldirectord,複制ldirectord的配置檔案至/etc/ha.d目錄下:

[root@lvs-master heartbeat-2.1.4~]# cp ./ldirectord/ldirectord.cf /etc/ha.d/

修改ldirectord.cf檔案:

checktimeout=3

checkinterval=1

autoreload=yes

logfile=”/var/log/ldirectord.log”

quiescent=no

virtual=200.10.1.10:80

              real=200.10.1.3:80 gate

              real=200.10.1.4:80 gate

              service=http

              request=”index.html”

              receive=”Test Page”

              scheduler=rr

              persistent=600

              protocol=tcp

              checktype=negotiate

              checkport=80

12.配置heartbeat:

heartbeat的配置檔案有三個,分别是ha.cf、haresources、authkeys,需要複制樣本檔案到/etc/ha.d目錄下面:

[root@lvs-master heartbeat-2.1.4~]# cp ./doc/ha.cf ./doc/haresources ./doc/authkeys /etc/ha.d/

修改ha.cf檔案,将下列配置項前面的“#”去掉和添加相應配置:

[root@lvs-master heartbeat-2.1.4~]# vi /etc/ha.d/ha.cf

debugfile /var/log/ha-debug //調試日志檔案

logfile /var/log/ha-log //系統運作日志檔案

logfacility local0 //日志等級

keepalive 2 //心跳頻率

deadtime 30 //節點死亡時間閥值

warntime 10 //發出警告時間閥值

initdead 120 //指定heartbeat守護程序啟動後等待120秒再啟動資源

udpport 694 //指定心跳資訊傳遞使用的udp端口

bcast eth1 //在eth1上使用廣播方式發送心跳

auto_failback on //允許主節點重新開機成功後拿回資源

node lvs-master //主節點名稱,與uname -n保持一緻

node lvs-backup //備份節點名稱

respawn hacluster /usr/lib/heartbeat/ipfail

apiauth ipfail gid=haclient uid=hacluster

修改haresources檔案,定義heartbeat啟動,設定VIP,啟動ldirectord服務:

[root@lvs-master heartbeat-2.1.4~]# vi /etc/ha.d/haresources

lvs-master 200.10.1.10/32/eth0/200.10.1.255 ldirectord::ldirectord.cf LVSSynsDaemonSwap::master

[root@lvs-master heartbeat-2.1.4~]# service ldirectord start

修改authkeys檔案,指定使用認證的方式:

[root@lvs-master heartbeat-2.1.4~]# vi /etc/ha.d/authkeys

auth 1

1 crc

[root@lvs-master heartbeat-2.1.4~]# chmod 600 /etc/ha.d/authkeys //authkeys檔案權限必須為600

13.配置并啟動ipvsadm:

[root@lvs-master~] # ipvsadm –A –t 200.10.1.10:80 –s rr –p 600

[root@lvs-master~] # ipvsadm –a –t 200.10.1.10:80 –r 200.10.1.3:80 –g -w 1

[root@lvs-master~] # ipvsadm –a –t 200.10.1.10:80 –r 200.10.1.4:80 –g -w 1

[root@lvs-master~] # ipvsadm-save > /etc/sysconfig/ipvsadm

[root@lvs-master~] # service ipvsadm start

[root@lvs-master~] # service heartbeat start

二.lvs-backup上的配置

1.eth0和eth1網卡IP配置(略)

2.主機名和VIP腳本設定(同lvs-master一緻)

3.需要安裝的軟體同lvs-master一緻,ipvsadm配置一緻。

4.heartbeat和ldirectord配置檔案也同lvs-master一緻,可以直從lvs-master上複制過去,指令如下:

三.Realserver1(Web)上的配置

添加以下腳本:

[root@localhost~] # vi lvs.sh

VIP="200.10.1.10" 

/sbin/ifconfig eth0 200.10.1.3/24 

/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

給腳本增加可執行權限,然後啟動并設定為開機啟動:

[root@localhost~] # chmod a+x lvs.sh

[root@localhost~] # ./lvs.sh

[root@localhost~] # echo “/root/lvs.sh”>> /etc/rc.local

建立測試頁面并啟動web服務:

[root@localhost~] # echo “This is Realserver1”> /var/www/html/index.html

[root@localhost~] # service httpd start

四.Realserver2(Web)上的配置

/sbin/ifconfig eth0 200.10.1.4/24 

/sbin/ifconfig lo:0 $VIP braodcast $VIP netmask 255.255.255.255 up 

[root@localhost~] # echo “This is Realserver2”> /var/www/html/index.html

五.測試及驗證

分别在兩台PC上打開浏覽器,輸入“http://200.10.1.10”,如果看到的是不同的頁面,說明LVS配置成功!

IPVS-DR+heartbeat+ldirectord配置成功!

本文轉自 kk5234 51CTO部落格,原文連結:http://blog.51cto.com/kk5234/562621,如需轉載請自行聯系原作者

繼續閱讀