heartbeat自带的断网切换功能-ipfail
一、我們一直以來用的heartbeat
大家用heartbeat做雙機熱備已經都做過很多次很熟悉了,而且配置起來其實也可以說是比較容易的.但是,說實話我們雙機配置起來以后能實現的功能其實比較簡單,只有在主服務器down掉或者主服務器的heartbeat服務停掉才可以切換,如果要想監控某個進程只有靠腳本。
二、遇到的問題
前一段時間給國電做雙機,國電說我們的雙機只有在主服務器down掉或者主服務器的heartbeat服務停掉才可以切換,功能太簡單了,他們需要在主服務器的網卡壞掉也可以切換,雖然國電的一直比較事多,但是這個要求也算在情理之中,當時我沒有答應他們,但是回來卻覺得這個功能heartbeat應該可以實現,但是問了技術部的兄弟們,說以前都沒有做過,只是通過自己寫shell腳本實現過。我相信寫腳本也可以很好的實現這個功能,但是我想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這個配置文件中配置即可,下面我把和ipfail相關,以及和斷網切換功能相關的配置文件行給列出:
#ping 10.10.10.254
#ping 172.16.103.254
#
# ? ? ? Treats 10.10.10.254 and 10.10.10.253 as a psuedo-cluster-member
# ? ? ? called group1. If either 10.10.10.254 or 10.10.10.253 are up
# ? ? ? then group1 is up
# ? ? ? Used together with ipfail below...
#
#ping_group group1 172.16.103.254 172.16.103.212
#ping_group group1 10.0.0.200 10.0.0.202 10.0.0.178
#ping_group group1 172.16.103.254 172.16.103.32
#
# ? ? ? Processes started and stopped with heartbeat. Restarted unless
# ? ? ? ? ? ? ? they exit with rc=100
#
#respawn userid /path/name/to/run
#respawn hacluster /usr/ha/lib/heartbeat/ipfail
#respawn hacluster ? ? /usr/local/lib/heartbeat/ipfail
#
# ? ? ? Access control for client api
# ? ? ? ? ? ? ? default is no access
#
#apiauth client-name gid=gidlist uid=uidlist
#apiauth ipfail gid=haclient uid=hacluster
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那行是注釋著的,否則會出問題的, 切換運行不正常。
轉載于:https://blog.51cto.com/lucifer119/1338212
總結
以上是生活随笔為你收集整理的heartbeat自带的断网切换功能-ipfail的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北京市工资交税情况
- 下一篇: zabbix 2.2自动安装脚本