Keepalive工作原理


Keepalive工作原理

1.1軟件介紹

Keepalived軟件起初是專為LVS負載均衡軟件設計的,用來管理並監控LVS集群系統中各個服務節點的狀態,后來又加入了可以實現高可用的VRRP功能。因此,Keepalived除了能夠管理LVS軟件外,還可以作為其他服務(例如:Nginx、Haproxy、MySQL等)的高可用解決方案軟件。

Keepalived采用模塊化設計,不同模塊實現不同的功能

Keepalivd主要有三個模塊,分別是core,check,vrrp

core:是Keepalived的核心,負責主進程的啟動和維護,全局配置文件的加載解析等
check:負責healthchecker(健康檢查)
vrpp:VRRPD子進程,VRRPD子進程就是來實現VRRP協議的

 Keepalived配置文件:

Keepalived配置文件為:keepalived.conf;
主要有三個配置區域,分別是:全局配置(Global Configuration)、VRRPD配置、LVS配置 
全局配置又包括兩個子配置: 全局定義(global definition) 靜態IP地址/路由配置(static ipaddress/routes)

 1.2Keepalived高可用原理

Keepalived高可用服務之間的故障切換轉移,是通過VRRP(虛擬路由冗余協議)來實現的。
在Keepalived服務正常工作時,主master節點會不斷的向備節點發送心跳信息,用來告訴備Backup節點自己還活着,當主master節點發生故障時候,就無法發送心跳信息了,備節點也就因此無法繼續檢測到來自主 Master節點的心跳了,於是調用自身的接管程序,接管主Master節點的 IP資源及服務。而當主 Master節點恢復時,備Backup節點又會釋放主節點故障時自身接管的IP資源及服務,恢復到原來的備用角色。

 VRRP作用

vrrp是虛擬路由冗余協議,就是當出現單點故障問題通過競選方式決定vip走向的一種機制

 1.3Keepalived服務vrrp的工作原理

Keepalived高可用是通過vrrp協議通信的,vrrp是通過競選機制決定主備,住的優先級高於被服務器的,所以在工作時主會優先獲取所有的資源,備節點處於准備狀態,當主節點宕機時候,備節點會接管主節點的資源,然后頂替主節點對外提供服務。
在 Keepalived服務對之間,只有作為主的服務器會一直發送 VRRP廣播包,告訴備它還活着,此時備不會槍占主,當主不可用時,即備監聽不到主發送的廣播包時,就會啟動相關服務接管資源,保證業務的連續性.接管速度最快;

 1.4出現腦裂的原因

一般來說,腦裂的發生有以下幾種原因:

高可用服務器對之間心跳線鏈路發生故障,導致無法正常通信。
心跳線壞了(包括斷了,老化)。
網卡及相關驅動壞了,ip配置及沖突問題(網卡直連)。
心跳線間連接的設備故障(網卡及交換機)。
仲裁的機器出問題(采用仲裁的方案)。
高可用服務器上開啟了 iptables防火牆阻擋了心跳消息傳輸。
高可用服務器上心跳網卡地址等信息配置不正確,導致發送心跳失敗。
其他服務配置不當等原因,如心跳方式不同,心跳廣插沖突、軟件Bug等。
Keepalived配置里VRRP實例如果 virtual_router_id兩端參數配置不一致也會導致裂腦問題發生。 

1.5如何解決腦裂

①同時使用串行電纜和以太網電纜連接,同時用兩條心跳線路,這樣一條線路壞了,另一個還是好的,依然能傳送心跳消息。
②當檢測到裂腦時強行關閉一個心跳節點(這個功能需特殊設備支持,如Stonith、feyce)。相當於備節點接收不到心跳消患,通過單獨的線路發送關機命令關閉主節點的電源。
③做好對裂腦的監控報警(如郵件及手機短信等或值班).在問題發生時人為第一時間介入仲裁,降低損失。
管理員可以通過手機回復對應數字或簡單的字符串操作返回給服務器.讓服務器根據指令自動處理相應故障這樣解決故障的時間更短。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM