heartbeat自带的断网切换功能-ipfail
一、我們一直以來用的heartbeat
大家用heartbeat做雙機(jī)熱備已經(jīng)都做過很多次很熟悉了,而且配置起來其實(shí)也可以說是比較容易的.但是,說實(shí)話我們雙機(jī)配置起來以后能實(shí)現(xiàn)的功能其實(shí)比較簡單,只有在主服務(wù)器down掉或者主服務(wù)器的heartbeat服務(wù)停掉才可以切換,如果要想監(jiān)控某個(gè)進(jìn)程只有靠腳本。
二、遇到的問題
前一段時(shí)間給國電做雙機(jī),國電說我們的雙機(jī)只有在主服務(wù)器down掉或者主服務(wù)器的heartbeat服務(wù)停掉才可以切換,功能太簡單了,他們需要在主服務(wù)器的網(wǎng)卡壞掉也可以切換,雖然國電的一直比較事多,但是這個(gè)要求也算在情理之中,當(dāng)時(shí)我沒有答應(yīng)他們,但是回來卻覺得這個(gè)功能heartbeat應(yīng)該可以實(shí)現(xiàn),但是問了技術(shù)部的兄弟們,說以前都沒有做過,只是通過自己寫shell腳本實(shí)現(xiàn)過。我相信寫腳本也可以很好的實(shí)現(xiàn)這個(gè)功能,但是我想heartbeat這么一個(gè)大名鼎鼎的開原雙機(jī)熱備的軟件怎么會(huì)沒有這個(gè)簡單,而不可缺少的功能呢?于是經(jīng)過我查找資料,以及試驗(yàn),終于找到了heartbeat自帶的斷網(wǎng)切換的工具-ipfail。我就把具體的實(shí)現(xiàn)方法寫給大家,希望大家以后可以用的到。
三、ipfail斷網(wǎng)切換的原理
? 關(guān)于ipfail這個(gè)斷網(wǎng)切換的原理很簡單,首先heartbeat要判斷自己的網(wǎng)絡(luò)是否正常其實(shí)就是通過ping某個(gè)ip,如果可以ping的通,說明網(wǎng)絡(luò)是通的,如果ping不通了,說明是網(wǎng)絡(luò)斷了,或者是主服務(wù)器的網(wǎng)卡壞了,然后執(zhí)行切換的動(dòng)作。
但是如果是被ping的那個(gè)ip的網(wǎng)卡出問題了怎么辦呢,那豈不是也造成了誤切換?所幸heartbeat想到了這種情況,而提供了ping group的功能,就是讓heartbeat同時(shí)ping兩個(gè)或者兩個(gè)以上的ip,如果所有的都ping不通了,ipfail才認(rèn)為是主服務(wù)器的網(wǎng)絡(luò)斷了,或是網(wǎng)卡壞了。
? 然而在大多數(shù)的一般情況下我們ping一個(gè)ip也是可以的,因?yàn)槲覀兛梢园堰@個(gè)ip設(shè)置成我們這個(gè)網(wǎng)絡(luò)中default gateway(默認(rèn)網(wǎng)關(guān))的ip,因?yàn)槿绻悄J(rèn)網(wǎng)關(guān)的網(wǎng)卡壞了,即便是誤切換也無所謂了,默認(rèn)網(wǎng)關(guān)壞了那么我們的服務(wù)是怎么也不可能被訪問到了。
下邊我會(huì)對 ping 一個(gè)ip和ping group的功能及配置方法一一介紹。
四、ipfail的配置與使用
我們要使用ipfail這個(gè)斷網(wǎng)切換的功能,只要在ha.cf這個(gè)配置文件中配置即可,下面我把和ipfail相關(guān),以及和斷網(wǎng)切換功能相關(guān)的配置文件行給列出:
#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時(shí)只要去掉相應(yīng)的#號即可,下面寫出ping一個(gè)ip的ipfail配置:
ping 172.16.103.254
respawn hacluster ? ? /usr/local/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
只有這3行,非常簡單,只要寫在ha.cf重啟動(dòng)heartbeat服務(wù)就可以生效了,我來解釋一下這3行配置文件的意思:
ping 172.16.103.254
一般是ping網(wǎng)關(guān),告訴ipfail網(wǎng)絡(luò)是否暢通。
respawn hacluster ? ? /usr/local/lib/heartbeat/ipfail
這句就是指定斷網(wǎng)切換的程序文件路徑,我們一定要給出正確的路徑,一般情況下,這個(gè)ipfail文件會(huì)在heartbeat安裝目錄下的lib/heartbeat/子文件夾下,確認(rèn)好以后我們給出正確的路徑, 其中hacluster是一個(gè)uid,是以hacluster這個(gè)用戶身份運(yùn)行ipfail。
apiauth ipfail gid=haclient uid=hacluster
是指定對ipfail有權(quán)限的用戶和組
2.ping一個(gè)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
這個(gè)就是同時(shí)ping多個(gè)ip,只有所有的ip都無法ping通時(shí),ipfail才會(huì)執(zhí)行切換的動(dòng)作,保證了不會(huì)是因?yàn)楸籶ing的ip出了問題而產(chǎn)生誤切換。
后邊兩句前面說過了,不再解釋了。
最后需要注意的是不要把ping 和ping group 這兩行同時(shí)寫出來,寫ping的內(nèi)容時(shí),要保證ping group是注釋的,寫ping group時(shí),要保證ping那行是注釋著的,否則會(huì)出問題的, 切換運(yùn)行不正常。
轉(zhuǎn)載于:https://blog.51cto.com/lucifer119/1338212
總結(jié)
以上是生活随笔為你收集整理的heartbeat自带的断网切换功能-ipfail的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北京市工资交税情况
- 下一篇: zabbix 2.2自动安装脚本