基於heartbeat v2和ldirectord現實director高可用

本篇內容是基於上篇《LVS負載均衡集羣詳解》爲前提,所以一些基本的上篇文檔詳細介紹過的內容不再重複。

 
一、環境拓撲介紹
 

說明:前端兩臺調度服務器Director1和Director2,兩者之間可以實現故障轉移,例如當Director1節點出現故障時Director2節點可以自動接管調度服務器的資源,能夠繼續爲爲客戶端轉發請求到後端Real Server;而且當後臺的node1或着node2出現故障時能夠把故障節點自動踢出列表,當恢復正常時能夠自動加入。
注意
      1、設置各個節點間的時間同步
      2、基於hosts文件實現能夠互相用主機名訪問
      3、使用uname -n執行結果要和主機名相同
      4、確保ipvsadm服務和httpd服務關閉開機啓動
 
二、安裝相關軟件包
需要的軟件:
 ipvsadm
 heartbeat                                         
 heartbeat-ldirectord                  
 heartbeat-pils                                 
 heartbeat-stonith                    
 libnet           
 perl-MailTools                 
 libtool-ltdl                
 openhpi-libs             
 perl-Compress-Zlib              
 perl-HTML-Parser             
 perl-HTML-Tagset            
 perl-TimeDate    
 perl-libwww-perl 
 
三、配置Director節點之間高可用
1、複製配置文件樣例
[root@director1 ~]# cd /usr/share/doc/heartbeat-2.1.4/
[root@director1 heartbeat-2.1.4]# cp authkeys ha.cf haresources /etc/ha.d/
 
2、編輯配置文件
[root@director1 heartbeat-2.1.4]# cd /etc/ha.d/
[root@director1 ha.d]# vim ha.cf 
--------------------------添加如下行------------------------------------
bcast   eth1 //定義發送心跳信息的廣播接口,我這裏是eth1
node    director1 //定義節點
node    director2
-------------------------結束--------------------------------------------
 
編輯配置文件authkeys
[root@director1 ha.d]# vim authkeys    
-------------------------添加如下行---------------------------------
auth 1
1 md5 124hddhu56d8yd8 //後邊的爲隨機數值
--------------------------結束-------------------------------------
[root@director1 ha.d]# chmod 600 authkeys   //設置權限爲600 
 
編輯配置文件haresources
[root@director1 ha.d]# vim haresources    //編輯資源配置文件添加如下行
director1       192.168.56.200/32/eth1/192.168.56.200 ldirectord //定義資源VIP,ldirectord服務
 
編輯ldriectord配置文件
[root@director1 ha.d]# vim ldirectord.cf 
--------------------------------修改爲以下內容----------------------------
checktimeout=3    //檢測超時時間
checkinterval=1    //檢測間隔
autoreload=yes    //該配置文件修改後能夠自動重載
quiescent=yes
virtual=192.168.56.200:80 //定義VIP地址和端口
        real=192.168.56.103:80 gate //定義real server的IP和端口
        real=192.168.56.104:80 gate //定義第二個real server
        fallback=127.0.0.1:80 gate //如果所有後端節點不可用時請求連接的轉發位置,此處設置轉發給director自身的80端口
        service=http    //定義服務類型
        request=".test.html" //檢測後端節點時使用的頁面
        receive="ok"    //檢測的關鍵字,這裏的設置表示測試訪問.test.html頁面是否包含ok關鍵字,如果有則說明該節點正常,否則認定爲故障
        scheduler=wlc //指定算法
        protocol=tcp //定義協議爲tcp
        checktype=negotiate //檢測類型
        checkport=80    //檢測的端口
-----------------------------------結束------------------------------------------
 
3、把配置文件拷貝到director2節點
[root@director1 ha.d]# scp -p ha.cf authkeys ldirectord.cf haresources director2:/etc/ha.d/
 
 
四、配置後端服務節點
 
安裝apache配置測試主頁
[root@node1 ~]# yum -y install httpd
[root@node1 ~]# echo node1 > /var/www/html/index.html
[root@node1 ~]# echo ok > /var/www/html/.test.html
配置節點的其他參數請參看LVS的文檔介紹,這裏執行在LVS文檔中介紹的real server上執行的腳本(參見另外一篇博客:LVS負載均衡集羣詳解):
[root@node1 ~]# bash realserver.sh start
 
在node2上執行與node1節點相同的操作,爲了演示方便可以看出效果在node2節點上的index.html頁面輸入與node1不同的內容以示區分。
 
五、啓動heartbeat服務測試
[root@director1 ha.d]# service heartbeat start
[root@director1 ha.d]# ssh director2 'service heartbeat start' //director節點通過SSH啓動heartbeat服務
 
測試Director1節點故障
[root@director1 ha.d]# /usr/lib/heartbeat/hb_standby //該腳本爲heartbeat自帶的腳本可以使該節點轉爲備用節點。
 

 
測試node1節點故障
[root@node1 ~]# service httpd stop

在director2節點上使用ipvsadm -Ln命令可以看到已經自動把node1節點相關條目移除

 
測試node1和node2節點同時故障,由於在ldirectord配置文件中設置了當所有後端節點故障時請求轉發至director本身的80端口,所以這裏需要director也安裝httpd服務,或者修改該配置文件轉向其他Web服務器。
 
總結:至此一個高可用的Director調度服務器集羣已經完成,同時也要注意在現實環境中至少要2條線路來同時廣播節點心跳信息,避免因爲線路的故障造成節點間的資源爭奪。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章