HTTP/TCP平衡器HAProxy 2.0發布

發表 負載平衡器發布 高可用性代理 2.0,它允許您在一組伺服器之間分配 HTTP 流量和任意 TCP 請求,考慮到許多因素(例如,它檢查伺服器的可用性、評估負載等級、具有 DDoS 對策)並執行初級資料過濾(例如,您可以解析HTTP 標頭、過濾傳輸不正確的查詢參數、阻止SQL 和XSS 替換、連接內容處理代理)。 HAProxy還可以 申請 協調基於微服務架構的系統中組件的交互作用。 專案程式碼是用C語言寫的 提供 根據 GPLv2 許可。 該專案已在許多大型網站上使用,包括 Airbnb、阿里巴巴、GitHub、Imgur、Instagram、Reddit、StackOverflow、Tumblr、Twitter 和 Vimeo。

主要發布功能:

  • 推出新 API 流量套餐,它允許您透過 REST Web API 動態管理 HAProxy 設定。 包括,您可以動態新增和刪除後端和伺服器、建立 ACL、變更請求路由、變更與 IP 的處理程序綁定;
  • 新增了 nbthread 指令,它允許您配置 HAProxy 中使用的執行緒數以優化多核心 CPU 的效能。 預設情況下,工作執行緒數會根據目前環境中可用的 CPU 核心數進行選擇,在雲端環境中預設為 XNUMX 個執行緒。 為了設定硬限制,新增了彙編選項 MAX_THREADS 和 MAX_PROCS,限制執行緒和進程數量的上限;
  • 用於將處理程序綁定到網路位址的綁定指令的使用已簡化。 設定時,不再需要定義進程參數 - 預設情況下,連線將根據活動連線的數量在執行緒之間分配。
  • 在隔離容器中執行時設定日誌已簡化 - 日誌現在可以傳送到 stdout 和 stderr,以及任何現有的檔案描述子(例如,「log fd@1 local0」);
  • 預設啟用對 HTX(本機 HTTP 表示)的支持,允許在使用端對端 HTTP/2、第 7 層重試和 gRPC 等高級功能時進行平衡。 HTX 不會就地替換標頭,而是將修改操作減少為刪除並在列表末尾添加新標頭,這允許您操作 HTTP 協定的任何擴展變體,保留標頭的原始語義並允許您在將HTTP /2 轉換為HTTP/1.1 時實現更高的效能,反之亦然;
  • 新增了對端對端 HTTP/2 模式的官方支援(處理 HTTP/2 中的所有階段,包括對後端的調用,而不僅僅是代理和客戶端之間的交互);
  • 已實現對 gRPC 協定雙向代理的全面支持,能夠解析 gRPC 流、突出顯示單一訊息、在日誌中反映 gRPC 流量以及使用 ACL 過濾訊息。 gRPC 可讓您使用各種程式語言組織微服務的工作,這些語言使用通用 API 相互互動。 gRPC 中的網路通訊是在 HTTP/2 協定之上實現的,並且基於使用 Protocol Buffer 進行資料序列化。
  • 新增了對「第 7 層重試」模式的支持,該模式允許您在出現與建立網路連線問題無關的軟體故障時發送重複的 HTTP 請求(例如,如果沒有回應或對空回應) POST 請求)。 若要停用該模式,「http-request」選項中新增了「disable-l7-retry」標誌,並且新增了「retry-on」選項以在預設、監聽和後端部分進行微調。 以下標誌可用於重發:all-retryable-errors、none、conn-failure、empty-response、junk-response、response-timeout、0rtt-rejected,以及綁定到回傳狀態碼(404 等) ;
  • 已經實作了一個新的進程管理器,它允許您使用 HAProxy 的處理程序配置來呼叫外部執行檔。
    例如,Data Plan API(/usr/sbin/dataplaneapi),以及各種Offload流處理引擎,都是以這樣的外部處理程序的形式實現的;

  • 新增了對 .NET Core、Go、Lua 和 Python 的綁定,用於開發 SPOE(流處理卸載引擎)和 SPOP(流處理卸載協定)擴充。 此前,擴展開發僅支援 C 語言;
  • 新增了外部 spoa-mirror 處理程序 (/usr/sbin/spoa-mirror),將請求鏡像到單獨的伺服器(例如,複製部分生產流量以在實際負載下測試實驗環境);
  • 介紹 HAProxy Kubernetes 入口控制器 確保與 Kubernetes 平台整合;
  • 新增了將統計資料匯出到監控系統的內建支持 普羅米修斯;
  • 用於與運行 HAProxy 的其他節點交換資訊的對等協定已擴展。 包括增加了對Heartbeat和加密資料傳輸的支援;
  • 「log」指令中新增了「sample」參數,讓您只將部分請求轉儲到日誌中,例如十分之一,以形成分析樣本;
  • 新增了自動分析模式(profiling.tasks指令,可以取值auto、on和off)。 如果平均延遲超過 1000 毫秒,則會啟用自動分析。 若要查看分析數據,「show profiling」命令已新增至執行時間 API 中,或可以將統計資料重設為日誌中;
  • 新增支援使用SOCKS4協定存取後端伺服器;
  • 新增了對快速開啟TCP 連線的機制的端對端支援(TFO - TCP Fast Open,RFC 7413),它允許您透過將第一個請求合併為一個請求和第二個步驟來減少連線建立步驟的數量。經典的三步驟連接協商過程,使得在建立連接的初始階段發送數據成為可能;
  • 新增了新動作:
    • 「http-request Replace-uri」使用正規表示式取代URL;
    • “tcp-request content do-resolve”和“http-request do-resolve”用於解析主機名稱;
    • “tcp-request content set-dst”和“tcp-request content set-dst-port”取代目標IP位址和連接埠。
  • 新增了新的轉換模組:
    • aes_gcm_dev 用於使用 AES128-GCM、AES192-GCM 和 AES256-GCM 演算法解密串流;
    • protobuf 從 Protocol Buffers 訊息中提取欄位;
    • ungrpc 從 gRPC 訊息中提取欄位。

    來源: opennet.ru

添加評論