HeartBeat+LVS+Ldirectord高可用負載均衡解決方案
1、通過Heartbeat來實現HA羣集,已達到實時監控主Director的運行狀態,一旦主狀態死掉,處於備份狀態的Director立即激活爲主狀態,實現高可用性。
2、通過了ldirectord實時監控Director後方的real server的運行狀態,一旦real server的相關服務死掉,或者網卡壞掉的話,Director將不會再將客戶的請求定向到該real server上。
3、LVS—DR
拓撲如下:
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地址的配置
修改Director的主機名
Hostname director1 及編輯/etc/sysconfig/network
hosts文件如下:
其他的略
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/
cd /etc/ha.d/
vim ldirectord.cf 修改如下:
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接口如下:
規則也已啓用
Director2上並沒有這些,因爲它是處於備份狀態的
假如後方的一個server的httpd服務停了,主Director就訪問不到.web.html這個頁面了,就會將刪除到該server的定向規則。
只是權重變爲了“0”,並沒有將這條規則刪除,需要將靜默模式改爲no如下:
vim ldirectord.cf
quiescent=no
重啓heartbeat 定向到停止httpd服務的規則被刪除了如下:
!!!