heartbeat高可用原理詳解(上)

1.heartbeat的做用
mysql

      經過heartbeat,能夠將資源(IP及程序服務等資源)從一臺已經故障的計算機快速轉移到另外一臺正常運轉的機器上繼續提供服務,通常稱之爲高可用服務。在實際生產中mkeepalived有不少相同之處。在生產實際的業務應用也是有區別的。sql

2.工做原理apache

       經過修改heartbeat軟件的配置文件,能夠指定那一臺heartbeat服務器做爲主服務器,則另外一臺將自動稱爲熱備服務器,而後在熱備服務器上配置heartbeat守護進程來監聽來自祝福個人心跳信息,若是熱備服務器在指定實踐內未監聽到來自住服務器的心跳,就會啓動故障轉移程序,並取得住服務器上的相關資源服務的全部權,接替住服務繼續不間斷的提供服務,從而達到資源及服務高可用性的目的。這是heartbeat主備的模式。緩存

       還能夠支持主主模式,這時它們之間會相互發送報文給對方主機監聽程序是否正常。服務器

在heartbeat進行主備切換的時候,是須要時間的,首先是判斷主宕機,而後從接替vip,啓動從服務上面的程序(備機上面的程序原本是沒有開啓的)。網絡


另外:和keepalived服務同樣,heartbeat高可用是服務器級別的,不是服務器級別的,若是主上面的apache,mysqld服務出現問題,是不會切換的,只有服務器宕機,heartbeat服務自己故障或者heartbeat主備之間的鏈接線路出現問題纔會發生切換。ide

因此要作處理,若是服務宕機了,就把heartbeat停掉。blog

心跳鏈接介紹:
進程

       實現高可用,這兩臺主機之間是如何作到互相通訊和互相監測的?ip

              1.串行電纜,所謂的串口(首先,缺點是距離不能太遠)

              2.一根以太網線兩網卡直連(推薦)

              3.以太網電纜,經過交換機等網絡設備是鏈接(次選)增長來交換機故障點,容易受其餘數據傳輸的影響,致使心跳報文發送失敗。


腦裂:

       因爲兩臺高可用服務器對之間在指定時間內,沒法檢測到對方心跳而各自啓動故障轉移功能,取得了資源及服務的全部權,而此時的兩臺高可用服務器對都還或者並在正常運行,這樣就會致使同一個IP或服務在兩端同時啓動而發生衝突的嚴重問題,最嚴重的是兩臺主機佔用同一個vip地址,當用戶寫入數據可能會分別寫入到兩端,這樣可能會致使服務器兩端的數據不一致或數據丟失,這樣狀況就被稱爲腦裂,也有的人成氣味分區集羣或大腦垂直分割。


防止腦裂:

       (推薦)同時使用串行電纜和以太網電纜鏈接,同時用兩條心跳線路,這樣一條線路壞了,另外一個仍是好的,依然能傳送心跳信息。

       (企業級別)*檢測到腦裂時強行關閉一個心跳節點。(這個功能許特殊設備支持,如stonith,fence),至關於程序上備節點發現心跳線路故障,發送關機命令到主節點。

       作好對腦裂的監控報警(如郵件及手機短信等),在問題發生時認爲第一時間介入仲裁,下降損失      

       增長仲裁機制:

              小心跳線徹底斷開的時候,兩個節點分別ping網關,那個ping不通就本身放棄。


關於fence設備

       fence是HA集羣環境下的術語,在硬件領域,fence設備其實就是一個智能電源管理設備(IPMI),不論是內部仍是外部fence,這些外部fence,這些設備都是帶有以太網口的,用來在HA切換觸發時經過網絡重啓提供資源服務的服務器。


heartbeat消息類型

heartbeat高可用軟件在工做過程當中,通常來講,有三種消息類型,具體爲:

       心跳消息 

       集羣轉換消息

       重傳請求


1.心跳消息

       心跳消息爲約150字節的數據包,可能爲單播,廣播或多播的方式,控制心跳頻率及出現故障要等待多久進行故障轉移。

2.集羣轉換消息

      ip-request和ip-request-resp

      當主服務器恢復在線狀態時,經過ip-request消息要求備機釋放主服務器失敗時備服務器取得的資源,而後備份服務器關閉釋放主服務器失敗時取得的資源及服務。

       備服務器釋放主服務器失敗時取得的資源及服務後,經過ip-request-resp消息通知主服務器它不在擁有該資源及服務,主服務器收到備節點的ip-request-resp消息通知後,啓動失敗時釋放的資源及服務,並開始提供正常的訪問服務。

3.重傳請求

        rexmit-request控制重傳心跳請求,次消息不過重要。

提示:以上心跳控制消息都使用UDP協議發送到/etc/ha.d/ha.cf文件指定的任意端口,或指定的多播地址。


heartbeat IP地址接管和故障轉移

       heartbeat是經過IP地址接管和ARP廣播進行故障轉移的。

       ARP廣播:在主服務器故障時,備用節點接管資源後,會當即強制更新全部客戶端本地的ARP表(即清除客戶端本地緩存的失敗服務器的Vip地址和mac地址的解析記錄)。確保客戶端和新的主服務器對話。


這個所說的客戶端是指的是在這個局域網內作ARP廣播,告訴局域網此時VIP對應的MAC地址。

image.png


VIP:

     綁定在網卡別名上的ip。


手工配置VIP的方法:

ifconfig eth0:1  10.0.0.4 netmask 255.255.255.224 up/down (ip別名)

 

ip addr  add/del 10.0.0.5/24 broadcast  10.0.0.255 dev eth1 輔助IP


提示:heartbeat3不在使用ip別名,而是使用輔助IP  

相關文章
相關標籤/搜索