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上覆制過去,命令如下:
[root@lvs-master ha.d~] # scp ./ldirectord.cf ha.cf authkeys haresources [email protected]:/etc/ha.d/
三.Realserver1(Web)上的配置
添加以下腳本:
[root@localhost~] # vi lvs.sh
#!/bin/bash
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)上的配置
添加以下腳本:
[root@localhost~] # vi lvs.sh
#!/bin/bash
VIP="200.10.1.10"
/sbin/ifconfig eth0 200.10.1.4/24
/sbin/ifconfig lo:0 $VIP braodcast $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 Realserver2”> /var/www/html/index.html
[root@localhost~] # service httpd start
五.測試及驗證
分別在兩臺PC上打開瀏覽器,輸入“http://200.10.1.10”,如果看到的是不同的頁面,說明LVS配置成功!
 
 
IPVS-DR+heartbeat+ldirectord配置成功!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章