1. 程式人生 > >Consul Gossip Protocol

Consul Gossip Protocol

Gossip Protocol

Consul使用gossip協議來管理成員資格並向群集廣播訊息。 所有這些都是通過使用Serf庫提供的。 Serf使用的gossip協議基於“SWIM:可擴充套件的弱一致感染風格的流程組成員協議”,並進行了一些小的修改。 這裡有關於Serf協議的更多細節。

 

Gossip in Consul(Consul中的Gossip)

Consul使用兩個不同的 gossip池。我們將每個池分別稱為LAN或WAN池。每個資料中心Consul都有一個LAN gossip池,包含資料中心的所有成員,包括客戶端和伺服器。 LAN池用於一些目的。成員資格資訊允許客戶端自動發現伺服器,減少所需的配置量。分散式故障檢測允許整個叢集共享故障檢測工作,而不是集中在少數伺服器上。最後,gossip池允許為領導者選舉等事件提供可靠和快速的事件廣播。

WAN池是全球唯一的,因為無論資料中心如何,所有伺服器都應該參與WAN池。 WAN池提供的成員資格資訊允許伺服器執行跨資料中心請求。整合故障檢測允許Consul優雅地處理丟失連線的整個資料中心,或者只處理遠端資料中心中的單個伺服器。

所有這些功能都是通過利用Serf提供的。它用作嵌入式庫以提供這些功能。從使用者的角度來看,這並不重要,因為抽象應該由Consul掩蓋。但是,作為開發人員,瞭解如何利用此庫非常有用。
 

Lifeguard Enhancements(救生員增強功能)

SWIM假設本地節點是健康的,因為可以對資料包進行軟實時處理。 但是,在本地節點遇到CPU或網路耗盡的情況下,可能會違反此假設。 結果是,serfHealth檢查狀態偶爾可以翻轉,導致錯誤的監視警報,增加遙測噪聲,並簡單地導致整個叢集浪費CPU和網路資源來診斷可能不存在的故障。

Lifeguard通過對SWIM的新穎增強完全解決了這個問題。

有關Lifeguard的更多詳細資訊,請參閱使用Lifeguard部落格文章檢視Making Gossip More Robust,該文章提供了HashiCorp Research救生員的高階概述:SWIM-ing with Situational Awareness。 Serf gossip協議指南還提供了有關gossip協議和Lifeguard的一些較低級別的詳細資訊。