譯 Consul負載均衡策略

2021-09-24 07:55:59 字數 2613 閱讀 3938

consul是乙個免費的開源工具, 它提供服務發現、健康檢查、負載均衡和全域性分布的鍵值儲存。此外, 它還提供了一組用於構建業務流程工作流和工具的基礎元素。在微服務體系結構中, 應用程式通常跨越多個ip位址執行, 並繫結到各種埠。服務發現有助於查詢這些不同的服務, 而不管它們位於何處。

由於同乙個服務的多個例項通常同時執行在微服務體系結構中, 因此在例項健康變化時,例項數量變化時,以及集群狀態變化時,我們需要一種策略去平等地均衡所有到健康例項的流量。這就是負載均衡層的工作。本文討論了在微服務體系結構中與consul進行負載均衡的幾種常用策略。

對consul進行負載均衡的一種方法是使用consul的內建負載均衡功能。consul將健康檢查與服務發現結合在一起。這意味著不健康的主機永遠不會通過查詢返回到服務發現層。在這種模式下, 每次應用程式和服務希望在資料中心查詢其他服務時,他們直接與consul進行對話。

services: 

backend: 10.2.5.391

複製**

通常情況下,對於ip位址進行硬編碼(尤其是在微服務體系結構中),被認為是一種不好的做法。隨著應用程式在整個系統中執行, 將此配置檔案保持為最新, 尤其是在計算機集群上,變得非常困難。相反, 更好的方法是利用consul的dns發現層。

services: 

backend: backend.service.consul

複製**

就像"www.hashicorp.com"是乙個web位址, "backend.service.consul"也是。這裡,tld 或域字尾(domain suffix)是可配置的, 但預設值為.consul。任何以該tld結尾的請求都將被解析到consul。這裡.service命名空間告訴consul查詢服務 (而不是機器的節點),. backend是要查詢的服務的名稱。對 "backend.service.consul"的請求被解析到一組ip位址, 就像"www.hashicorp.com"被解析為一組ip位址一樣。然而, 對於consul, 該解析發生在服務發現層,並整合了健康檢查機制。

每次應用程式或核心解析該dns條目時, 它都會收到乙個與集群中的健康服務對應的 ip 位址列表的隨機迴圈(round-robin)響應。dns介面基本上提供了零配置(zero-touch)服務發現,並能整合到任何應用程式中。

優點:

缺點:

fabio是乙個開源工具, 它為consul管理的服務提供快速、現代、零配置的負載均衡http(s)和tcp路由器。使用者在consul註冊服務,並提供健康檢查,fabio將自動把流量路由到他們。不需要額外配置。

使用者註冊一項服務, 採用以urlprefix-開頭的tag, 如:

urlprefix-/my-service

複製**

在本示例中, 當在/my-service上,對fabio發出請求時, fabio將自動將流量路由到集群中的健康服務上。fabio還支援更高階的路由配置。

優點:

缺點:

server }:}}}

複製**

server 10.2.5.60:13845

server 10.6.96.234:45033

server 10.10.20.123:18677

}複製**

必須指出, 在這種模式下, nginx 和 haproxy 都不知道consul的存在;它們只是讀取它們的配置, 就好像這些值是由操作員或配置管理工具硬編碼的一樣。

優點:

缺點:

最近, 我開始嘗試移除consul template, 但保持經過時間考驗的靈活性和熟悉度的nginx。社會上有一些非常有趣和創新的做法, 即:

最終, 這些方法要麼涉及太多的移動部件, 要麼包括consul的基本服務發現之外的擴充套件功能。因此, 我寫的 ngx_http_consul_backend_module, 對於每個導向nginx的請求,動態選擇upstream。

它看起來這樣:

}}複製**

對於每個請求, consul關鍵字告訴 nginx 委託給自定義模組並選擇乙個隨機的健康後端服務, 然後將請求**到該後端服務。肯定有改進的地方, 但是這個概念驗證表明, 沒有中介工具,也 可能直接連線 nginx 和consul。

優點:

缺點:

haproxy 1.8 (當前在撰寫本篇文章時發布的候選版本) 在不使用第三方工具或模組的情況下, 通過 dns 新增了服務發現的內建功能。haproxy 已經內建 dns 解決方案有一段時間了, 但 haproxy 1.8 通過 srv 記錄和支援 edns 為埠帶來了解決方案, 使其與consul完美配對。

優點:

缺點:

對於採用consul的應用,有許多負載均衡的策略和技術。這篇文章詳細介紹了一些最常見的技術, 並希望激發靈感, 以新的,振奮人心的方式整合行業標準的負載均衡工具和consul。無論您是直接使用consul, 彌合與consul模板的差距, 編譯自己的nginx定製版本, 或嘗試haproxy 1.8候選發布版本, 我們期待聽到您如何負載均衡您的微服務應用。

負載策略 CMC負載均衡策略

負載均衡技術是一種用在多個網路連線 計算機 計算機集群 cpu 磁碟驅動器或其他資源中,進行負載分配,以達到最優化資源使用 最大化吞吐率 最小化響應時間 同時避免過載的技術。就例如在火車站 商場等較擁擠的地方,會設定多個出入口,管理人員把客戶分散到各個出入口,能大大縮短出入時間。負載均衡也一樣,cm...

負載均衡策略

1,對balancecode 乙個隨機數 簡單的取模,select balancecode m m為伺服器的數量 2,這時候,假如校驗select到的伺服器不可用。那麼。second balancecode m 1 select second select second second 1 效果就是把...

負載均衡策略

負載均衡裝置作為縱跨網路2 7層協議的裝置,往往放置在網路裝置和應用裝置的連線處,對工程師在網路和應用基本知識方面的要求遠高於其他裝置,所以我們要在基本功能的理解上下更多的功夫。負載均衡裝置還有另外乙個稱呼 4 7層交換機,但它首先是個2 3層交換機,這要求我們首先掌握2 3層的基本知識,然後才是本...