class="21080">
;
這裡的heartbeat就是linux-ha項目,被許多高可用系統采用。heartbeat的配置信息非常復雜,但是最關鍵也就是那麼幾項。
1.准備環境
准備兩台Debian Linux,hostname和ip分別是ha(192.168.0.167),ha2(192.168.0.139)。
2.安裝heartbeat
通過apt-get install heartbeat給ha和ha2安裝heartbeat,能省去在別的Linux環境下需要先安裝依賴庫libnet等步驟,這裡都自動完成。
3.配置heartbeat
需要配置文件有三個:authkeys、haresources、ha.cf。這三個配置文件需要在/etc/ha.d目錄下面,但是默認是沒有這三個文件的,所以你可以自己創建,簡單配置很簡單:
在ha和ha2上配置相同的authkeys和haresources,如下:
#cat authkeys
--------------
auth 3
#1 crc
#2 sha1 HI!
3 md5 Hello!
--------------
1,2,3表示認證算法選擇,這裡選擇了md5算法
而且authkeys文件權限必須是0600,所以
#chmod 0600 authkeys
#cat haresources
--------------
ha 192.168.0.2/24/eth0 apache
--------------
ha是主節點名稱,192.168.0.2/24/eth0是對外虛擬服務IP/掩碼/網卡接口,apache表示資源名稱,用來啟動及停止apache服務的腳本,需要在resource.d目錄下創建apache這個腳本,支持start和stop操作。
ha.cf在兩個節點上稍有不一樣,
ha(192.168.0.167)配置如下:
#cat ha.cf
--------------
auto_failback off
#說明:主節點重啟成功後,資源是自動拿回到主節點還是等到副節點down調後拿回資源
node ha
node ha2
#說明:節點名稱,與uname –n保持一致。是否主節點與此位置的先後順序無關。而是在haresources裡指定
#bcast eth0
#說明:采用eth0的udp廣播用來發送心跳信息,建議在副節點不只一台時使用
ucast eth0 192.168.0.139
#說明:采用網卡eth0的udp單播來通知心跳,ip應為對方IP(未驗證)
#mcast eth0 225.0.0.1 694 1 0
#說明:采用udp多播播來通知心跳,建議在副節點不只一台時使用
#注:廣播,單播,多播,以上三種任選其一即可
--------------
ha2(192.168.0.139)配置如下:
#cat ha.cf
--------------
auto_failback off
#說明:主節點重啟成功後,資源是自動拿回到主節點還是等到副節點down調後拿回資源
node ha
node ha2
#說明:節點名稱,與uname –n保持一致。是否主節點與此位置的先後順序無關。而是在haresources裡指定
#bcast eth0
#說明:采用eth0的udp廣播用來發送心跳信息,建議在副節點不只一台時使用
ucast eth0 192.168.0.167
#說明:采用網卡eth0的udp單播來通知心跳,ip應為對方IP(未驗證)
#mcast eth0 225.0.0.1 694 1 0
#說明:采用udp多播播來通知心跳,建議在副節點不只一台時使用
#注:廣播,單播,多播,以上三種任選其一即可
--------------
4.驗證
啟動ha和ha2的heartbeat:
#/etc/init.d/heartbeat start
通過ifconfig查看eth0:0的192.168.0.2會在某台服務器上分配上了,說明這台目前是活動服務器,而另外一台沒有分配上。
當浏覽器訪問http://192.168.0.2時,是會返回目前活動服務器上的apache服務響應
5.常見的錯誤:
通過ifconfig發現兩台機器都分配上了eth0:0的192.168.0.2這個虛擬IP,並在/var/log/syslog中產生大量日志:
WARN: nodename ha uuid changed to ha2
ERROR: should_drop_message: attempted replay attack
可能原因:ha和ha2的uuid改變引起,可能ha2是通過VMware克隆復制方式產生的或hostname設置在安裝heartbeat之後
解決方案:讓uuid重新生成,可以先卸載heartbeat,刪除/var/lib/heartbeat目錄(uuid文件就在這個目錄下,該目錄在卸載時不被刪除,需手動刪除,如果不手動刪除,重新安裝還會使用原來uuid)