HeartBeat+LVS+Ldirectord高可用負載均衡解決方案
1、通過Heartbeat來實作HA群集,已達到實時監控主Director的運作狀态,一旦主狀态死掉,處于備份狀态的Director立即激活為主狀态,實作高可用性。
2、通過了ldirectord實時監控Director後方的real server的運作狀态,一旦real server的相關服務死掉,或者網卡壞掉的話,Director将不會再将客戶的請求定向到該real server上。
3、LVS—DR
拓撲如下:
<a href="http://blog.51cto.com/attachment/201301/192314326.png" target="_blank"></a>
Server1的ip為192.168.2.100 接口lo:0的vip為192.168.2.1
Server2的ip為192.168.2.200 接口lo:0的vip為192.168.2.1
主Director的eth0的ip為192.168.2.10
Eth1的ip為192.168.3.1
備Director的eth0的ip為192.168.2.20
Eth1的ip為192.168.3.2
Vip 為192.168.2.1
Director1的配置
1、分别配置ip位址及主機名
Lo:0接口ip位址的配置
<a href="http://blog.51cto.com/attachment/201301/192323813.png" target="_blank"></a>
修改Director的主機名
Hostname director1 及編輯/etc/sysconfig/network
hosts檔案如下:
<a href="http://blog.51cto.com/attachment/201301/192331751.png" target="_blank"></a>
其他的略
2、安裝heartbeat所需的軟體以實作HA如下:
heartbeat-2.1.4-9.el5.i386.rpm
heartbeat-ldirectord-2.1.4-9.el5.i386.rpm
heartbeat-pils-2.1.4-10.el5.i386.rpm
heartbeat-stonith-2.1.4-10.el5.i386.rpm
libnet-1.1.4-3.el5.i386.rpm
perl-MailTools-1.77-1.el5.noarch.rpm --nogpgcheck
yum localinstall -y heartbeat-2.1.4-9.el5.i386.rpm heartbeat-ldirectord-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm --nogpgcheck
3、将authkeys haresources ha.cf這三個檔案拷貝到/etc/ha.d/目錄下,并依次編輯如下:
cd /usr/share/doc/heartbeat-2.1.4/
cp authkeys haresources ha.cf /etc/ha.d/
cd /etc/ha.d/
vim ha.cf
bcast eth1 ---指明心跳探測接口
node Director1
node Director2
vim authkeys
auth 3
3 md5 0b8e3683637d469bd73abc7e19e2156c --md5驗證 (後邊的md5密文随意隻要兩個Director的一樣)
chmod 600 authkeys
vim haresources
Director1 192.168.2.1/24/eth0 ldirectord::ldirectord.cf --Director1 是指明處于主狀态的director,192.168.2.1 即vip ,ldirectord是heartbeat控制的服務 ,ldirectord.cf 是ldirectord要調用的參數。
4、将ldirectord.cf拷貝到/etc/ha.d/目錄下
cd /usr/share/doc/heartbeat-ldirectord-2.1.4/
cp ldirectord.cf /etc/ha.d/
vim ldirectord.cf 修改如下:
<a href="http://blog.51cto.com/attachment/201301/192342127.png" target="_blank"></a>
Fallback=127.0.0.1:80 --當real server都死掉的話,vip指向本機
persistent=600 ---這個是持久連接配接
checktype=negotiate --檢測類型 negotiate,表示DR發送請求,realserver恢複特定字元串才表示服務正常;connect,表示DR能夠連線realserver即正常。
Ldirectord通過通路含有”OK”内容的.web.html這個web頁面來達到監測後方的real server 的,當後方的server死掉或這是web服務停止,自然就就通路不到.web.html這個頁面了。
5、確定ipvsadm沒有規則,并處于stop狀态和開機不啟動
ipvsadm -C
service ipvsadm save
service ipvsadm stop
chkconfig ipvsadm off
如果是才按裝ipvsadm執行一下service ipvsadm save就可以了
Director2的配置(2--5步)完全相同,(略)
Real server1的配置
1、安裝httpd,配置好web服務
2、在/var/www/html/目錄下建立上述的.web.html檔案
cd /var/www/html/
touch .web.html
echo "OK" >.web.html
3、配置arp_ignore、arp_announce參數禁用arp廣播響應
echo "net.ipv4.conf.eth0.arp_ignore = 1" >>/etc/sysctl.conf
echo "net.ipv4.conf.eth0.arp_announce = 2" >>/etc/sysctl.conf
sysctl -p
4、配置路由
route add -host 192.168.2.1 dev eth0
5、開啟httpd服務
Real server2的配置與Real server1的配置一樣
在director上依次啟動heartbeat,
在Director1上增加了eth0:0接口如下:
<a href="http://blog.51cto.com/attachment/201301/192352308.png" target="_blank"></a>
規則也已啟用
<a href="http://blog.51cto.com/attachment/201301/192403867.png" target="_blank"></a>
Director2上并沒有這些,因為它是處于備份狀态的
假如後方的一個server的httpd服務停了,主Director就通路不到.web.html這個頁面了,就會将删除到該server的定向規則。
<a href="http://blog.51cto.com/attachment/201301/192426977.png" target="_blank"></a>
隻是權重變為了“0”,并沒有将這條規則删除,需要将靜默模式改為no如下:
vim ldirectord.cf
quiescent=no
重新開機heartbeat 定向到停止httpd服務的規則被删除了如下:
<a href="http://blog.51cto.com/attachment/201301/192441306.png" target="_blank"></a>
!!!
本文轉自 abc16810 51CTO部落格,原文連結:http://blog.51cto.com/abc16810/1107946