Keepalive工作原理

2022-05-26 16:54:12 字數 1842 閱讀 3668

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配置

keepalived高可用服務之間的故障切換轉移,是通過vrrp(虛擬路由冗餘協議)來實現的。

在keepalived服務正常工作時,主master節點會不斷的向備節點傳送心跳資訊,用來告訴備backup節點自己還活著,當主master節點發生故障時候,就無法傳送心跳資訊了,備節點也就因此無法繼續檢測到來自主 master節點的心跳了,於是呼叫自身的接管程式,接管主master節點的 ip資源及服務。而當主 master節點恢復時,備backup節點又會釋放主節點故障時自身接管的ip資源及服務,恢復到原來的備用角色。

vrrp作用

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

keepalived高可用是通過vrrp協議通訊的,vrrp是通過競選機制決定主備,住的優先順序高於被伺服器的,所以在工作時主會優先獲取所有的資源,備節點處於準備狀態,當主節點宕機時候,備節點會接管主節點的資源,然後頂替主節點對外提供服務。

在 keepalived服務對之間,只有作為主的伺服器會一直傳送 vrrp廣播包,告訴備它還活著,此時備不會槍佔主,當主不可用時,即備監聽不到主傳送的廣播包時,就會啟動相關服務接管資源,保證業務的連續性.接管速度最快;

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

高可用伺服器對之間心跳線鏈路發生故障,導致無法正常通訊。

心跳線壞了(包括斷了,老化)。

網絡卡及相關驅動壞了,ip配置及衝突問題(網絡卡直連)。

心跳線間連線的裝置故障(網絡卡及交換機)。

仲裁的機器出問題(採用仲裁的方案)。

高可用伺服器上開啟了 iptables防火牆阻擋了心跳訊息傳輸。

高可用伺服器上心跳網絡卡位址等資訊配置不正確,導致傳送心跳失敗。

其他服務配置不當等原因,如心跳方式不同,心跳廣插衝突、軟體bug等。

keepalived配置裡vrrp例項如果 virtual_router_id兩端引數配置不一致也會導致裂腦問題發生。

1.5如何解決腦裂

①同時使用序列電纜和乙太網電纜連線,同時用兩條心跳線路,這樣一條線路壞了,另乙個還是好的,依然能傳送心跳訊息。

②當檢測到裂腦時強行關閉乙個心跳節點(這個功能需特殊裝置支援,如stonith、feyce)。相當於備節點接收不到心跳消患,通過單獨的線路傳送關機命令關閉主節點的電源。

③做好對裂腦的監控報警(如郵件及手機簡訊等或值班).在問題發生時人為第一時間介入仲裁,降低損失。

管理員可以通過手機回覆對應數字或簡單的字串操作返回給伺服器.讓伺服器根據指令自動處理相應故障這樣解決故障的時間更短。

keep alive實現原理

二 keep alive介紹與應用 2.1 keep alive是什麼 keep alive是乙個抽象元件 它自身不會渲染乙個dom元素,也不會出現在父元件鏈中 使用keep alive包裹動態元件時,會快取不活動的元件例項,而不是銷毀它們。乙個場景 使用者在某個列表頁面選擇篩選條件過濾出乙份資料列...

keep alive的原理及使用

內建元件keep alive 主要用於保留元件狀態或避免重新渲染。keep alive生命週期鉤子函式 activated deactivated,每次進入離開過程都呼叫一次 comp1 頁面跳轉至 home頁面,home頁面不重新整理 comp2 頁面跳轉至 home頁面,home頁面重新整理 配...

得物技術 Keep alive原理及業務解決方案

背景 在 b 端系統中,為了使用方便我們會在頁面設計中加上標籤頁類似瀏覽器上方標籤頁的功能,為了使用體驗更加接近瀏覽器標籤頁,我們需要針對路由進行快取。本文主要介紹 vue 專案針對不同業務場景如何利用 keep alive 來實現標籤頁動態快取。keep alive 是乙個抽象元件,不會和子元件建...