本文轉自Rancher Labs
在Kubernetes中,Ingress物件定義了一些路由規則,這些規則規定如何將一個客戶端請求路由到指定服務,該服務運行在你的集群中,這些規則可以考慮到輸入的HTTP訊息的獨特方面,包括其Host請求頭和URL路徑,這將允許你在請求中使用資料發現將流量從一個服務發送到另一個服務,那意味著你能夠使用Ingress物件來為許多不同的應用程式定義路由,
雖然Ingress物件定義路由,但Ingress Controller是驅動它們的引擎,Ingress Controller是一個位于客戶端和服務之間的代理,其作用是正確地傳遞訊息,目前市面上已經有幾個專案實作了Ingress Controller規范,每個專案都有其優勢,Rancher提供了一個基于NGINX的默認controller,但你并不需要局限于此,Rancher已經和HAProxy達成合作,因此你也可以選擇使用HAProxy Ingress Controller,我們傾向于把HAProxy Ingress Controller看作是一個完美的Kubernetes的渦輪增壓引擎,能夠充分提升Kubernetes的使用效率,

HAProxy Ingress Controller的特性
你可以在Rancher應用商店中找到HAProxy,此外你還可以在HAProxy的官方檔案(https://www.haproxy.com/documentation/hapee/latest/installation/rancher/ )中找到HAProxy的安裝細節,設定完成之后,HAProxy將會自動監聽和實作Ingress規則,此時,你可以選擇禁用NGINX Ingress Controller或保持兩個Ingress controller都運行并通過名稱指定其中一個,

HAProxy的功能特性包括以下內容:
零宕機多載
包括NGINX Ingress Controller在內的許多代理型別,多載都會導致短暫的時間視窗,此時后端服務不可用,在許多情況下,當HAProxy需要重繪其配置時,它可以完全避免重新加載,
它的Runtime API允許完全在記憶體中實作更改,然而,由于HAProxy的無中斷多載,需要多載的更改不會導致停機,這意味著,無論你何時從Ingress規則中添加或洗掉路徑、更新Secret或更改注釋都不會對流量產生影響,
增壓性能
由于HAProxy對性能的關注,你會發現每秒可處理的請求數會立即受到影響——明顯增加,此外,通過彈性二進制樹等獨特的演算法,HAProxy比其他controller使用更少的資源,
可觀察性
使用Stats頁面、Runtime API和raw configuration,你可以輕松查看配置好的Pod以及相關聯的后端和它們的健康狀態,默認的Ingress controller會要求你安裝krew以查看這一資訊,
HAProxy提供大量有關流向你的集群的流量指標,在HAProxy Stats頁面上,你將找到用于跟蹤請求率、回應時間、活動連接、成功和錯誤回應以及通過的資料量的統計資料,這篇文章(https://www.haproxy.com/blog/exploring-the-haproxy-stats-page/ )介紹了所有提供的指標,這些指標也是通過Prometheus端點暴露的,

HAProxy會發布詳細的日志,其中包含請求時間資料,可以讓你精確地指出請求中的慢速,斷開代碼將顯示請求終止的方式和原因,以及顯示整個集群中的活躍連接數,
可調整的負載均衡
與其他Ingress Controller相比,HAProxy提供了更多的負載均衡演算法,包括輪詢法(Round Robin)、最小連接和基于哈希的演算法,這種選擇很重要,因為不同型別的服務在不同型別的負載分布中表現出色,例如,保持連接時間較長的服務在使用最小連接演算法時表現更好,該演算法在向服務器發送新客戶端之前檢查服務器的繁忙程度,你可以在你的Ingress物件中通過添加一個名為haproxy.org/load-balance 的注釋來定義,使用均衡檔案中列出的值(https://www.haproxy.com/documentation/hapee/latest/onepage/#balance ),
一旦你啟用HTTPS,HAProxy就會自動啟用端到端的HTTP/2,NGINX在客戶端支持HTTP/2,同時HAProxy也支持通過HTTP/2連接到你的pods,此外,HAProxy還支持gRPC服務的端到端streaming,
增強的安全性
諸如白名單IP地址以及強制速率限制等安全功能形成了一個重要的保護層,使用HAProxy,這些功能都能夠立刻實作并且你可以使用注釋調整它們,當你的集群托管多個服務時,速率限制是至關重要的,因為你一定不會希望一個服務占用所有的帶寬,
過載保護佇列
HAProxy的連接佇列提供了對流量峰值的保護,通過在Kubernetes服務上設定pod-maxconn注釋,一組pod會獲得最大并發連接數限制,額外的連接數會被排隊,從而防止pod超載,
結 論
本文介紹了HAProxy的6個主要特性,可以幫助你更清晰地了解HAProxy Ingress Controller的優勢,如果你還想更深入地了解HAProxy,你也可以通過Rancher應用商店輕松部署它,并根據官方檔案(https://www.haproxy.com/documentation )的指引進行嘗試才能對其有更深入的了解和體會,也能幫助你選出合適自己的Ingress Controller,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/79610.html
標籤:其他
