Heartbeat中ipfail的使用

http://blog.sina.com.cn/s/blog_5fc3a8b60100x0h9.html

一、我們一直以來用的heartbeat


大家用heartbeat做雙機熱備已經都做過很多次很熟悉了,而且配置起來其實也可以說是比較容易的.但是,說實話我們雙機配置起來以後能實現的功能其實比較簡單,只有在主服務器down掉或者主服務器的heartbeat服務停掉纔可以切換,如果要想監控某個進程只有靠腳本。

二、遇到的問題

heartbeat自帶的斷網切換的工具-ipfail

三、ipfail斷網切換的原理

   關於ipfail這個斷網切換的原理很簡單,首先heartbeat要判斷自己的網絡是否正常其實就是通過ping某個ip,如果可以ping的通,說明網絡是通的,如果ping不通了,說明是網絡斷了,或者是主服務器的網卡壞了,然後執行切換的動作。

但是如果是被ping的那個ip的網卡出問題了怎麼辦呢,那豈不是也造成了誤切換?所幸heartbeat想到了這種情況,而提供了ping group的功能,就是讓heartbeat同時ping兩個或者兩個以上的ip,如果所有的都ping不通了,ipfail才認爲是主服務器的網絡斷了,或是網卡壞了。

   然而在大多數的一般情況下我們ping一個ip也是可以的,因爲我們可以把這個ip設置成我們這個網絡中default gateway(默認網關)的ip,因爲如果是默認網關的網卡壞了,即便是誤切換也無所謂了,默認網關壞了那麼我們的服務是怎麼也不可能被訪問到了。

下邊我會對 ping 一個ip和ping group的功能及配置方法一一介紹。

四、ipfail的配置與使用

我們要使用ipfail這個斷網切換的功能,只要在ha.cf這個配置文件中配置即可:



1.配置文件中有很多英文的解釋以及示例被#號註釋,供參考,我們使用ipfail時只要去掉相應的#號即可,下面寫出ping一個ip的ipfail配置:

ping 172.16.103.254

respawn hacluster     /usr/local/lib/heartbeat/ipfail

apiauth ipfail gid=haclient uid=hacluster

只有這3行,非常簡單,只要寫在ha.cf重啓動heartbeat服務就可以生效了,我來解釋一下這3行配置文件的意思:

ping 172.16.103.254

一般是ping網關,告訴ipfail網絡是否暢通。

respawn hacluster     /usr/local/lib/heartbeat/ipfail

這句就是指定斷網切換的程序文件路徑,我們一定要給出正確的路徑,一般情況下,這個ipfail文件會在heartbeat安裝目錄下的lib/heartbeat/子文件夾下,確認好以後我們給出正確的路徑, 其中hacluster是一個uid,是以hacluster這個用戶身份運行ipfail。

apiauth ipfail gid=haclient uid=hacluster

是指定對ipfail有權限的用戶和組

2.ping一個group的ipfail配置:

ping_group group1 172.16.103.254 172.16.103.212

respawn hacluster     /usr/local/lib/heartbeat/ipfail

apiauth ipfail gid=haclient uid=hacluster

ping_group group1 172.16.103.254 172.16.103.212

這個就是同時ping多個ip,只有所有的ip都無法ping通時,ipfail纔會執行切換的動作,保證了不會是因爲被ping的ip出了問題而產生誤切換。

後邊兩句前面說過了,不再解釋了。

最後需要注意的是不要把ping 和ping group 這兩行同時寫出來,寫ping的內容時,要保證ping group是註釋的,寫ping group時,要保證ping那行是註釋着的,否則會出問題的, 切換運行不正常。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章