負載均衡之HAPorxy

jopen 10年前發布 | 15K 次閱讀 HAPorxy

HAProxy是一款提供高可用性、負載均衡以及基于TCP(第四層)和HTTP(第七層)應用的代理軟件,HAProxy是完全免費的、借助 HAProxy可以快速并且可靠的提供基于TCP和HTTP應用的代理解決方案。HAProxy穩定性也是非常好,可以與硬件級的F5相媲美,根據官方文 檔,HAProxy可以跑滿10Gbps-New benchmark of HAProxy at 10 Gbps using Myricom’s 10GbE NICs (Myri-10G PCI-Express),這個數值作為軟件級負載均衡器是相當驚人的。官方測試的性能情況如下圖:

 負載均衡之HAPorxy

HAProxy特別適用于那些負載特大的web站點, 這些站點通常又需要會話保持或七層處理。HAProxy運行在當前的硬件上,完全可以支持數以萬計的并發連接。并且它的運行模式使得它可以很簡單安全的整 合進您當前的架構中, 同時可以保護你的web服務器不被暴露到網絡上。

HAProxy性能特點

HAProxy借助于OS上幾種常見的技術來實現性能的最大化。

  • 單進程、事件驅動模型顯著降低了上下文切換的開銷及內存占用。
  • O(1)事件檢查器(event checker)允許其在高并發連接中對任何連接的任何事件實現即時探測。
  • 在任何可用的情況下,單緩沖(single buffering)機制能以不復制任何數據的方式完成讀寫操作,這會節約大量的CPU時鐘周期及內存帶寬;
  • 借助于Linux 2.6 (>= 2.6.27.19)上的splice()系統調用,HAProxy可以實現零復制轉發(Zero-copy forwarding),在Linux 3.5及以上的OS中還可以實現零復制啟動(zero-starting);
  • MRU內存分配器在固定大小的內存池中可實現即時內存分配,這能夠顯著減少創建一個會話的時長;
  • 樹型存儲:側重于使用作者多年前開發的彈性二叉樹,實現了以O(log(N))的低開銷來保持計時器命令、保持運行隊列命令及管理輪詢及最少連接隊列;
  • 優化的HTTP首部分析:優化的首部分析功能避免了在HTTP首部分析過程中重讀任何內存區域;
  • 精心地降低了昂貴的系統調用,大部分工作都在用戶空間完成,如時間讀取、緩沖聚合及文件描述符的啟用和禁用等;

所有的這些細微之處的優化實現了在中等規模負載之上依然有著相當低的CPU負載,甚至于在非常高的負載場景中,5%的用戶空間占用率和95%的系統 空間占用率也是非常普遍的現象,這意味著HAProxy進程消耗比系統空間消耗低20倍以上。因此,對OS進行性能調優是非常重要的。即使用戶空間的占用 率提高一倍,其CPU占用率也僅為10%,這也解釋了為何7層處理對性能影響有限這一現象。由此,在高端系統上HAProxy的7層性能可輕易超過硬件負 載均衡設備。

HAPorxy 1.3版本特性:

  • 內容交換(content switching):基于任何請求標準挑選服務器池
  • ACL:編寫內容交換規則
  • 負載均衡算法(load-balancing algorithms):更多的算法支持
  • 內容探測(content inspection):阻止非授權協議
  • 透明代理(transparent proxy):在Linux系統上允許使用客戶端IP直接連入服務器
  • 內核TCP拼接(kernel TCP splicing):無copy方式在客戶端和服務端之間轉發數據以實現數G級別的數據速率
  • 分層設計(layered design):分別實現套接字、TCP、HTTP處理以提供更好的健壯性、更快的處理機制及便捷的演進能力
  • 快速、公平調度器(fast and fair scheduler):為某些任務指定優先級可實現理好的QoS
  • 會話速率限制(session rate limiting):適用于托管環境

HAPorxy 1.4版本新增特性:

  • 客戶端的長連接(client-side keep-alive)
  • TCP加速(TCP speedups)
  • 響應池(response buffering)
  • RDP協議
  • 基于源的粘性(source-based stickiness)
  • 更好的統計數據接口(a much better stats interfaces)
  • 更詳細的健康狀態檢測機制(more verbose health checks)
  • 基于流量的健康評估機制(traffic-based health)
  • 支持HTTP認證
  • 服務器管理命令行接口(server management from the CLI)
  • 基于ACL的持久性(ACL-based persistence)
  • 日志分析器

HAPorxy 1.5版本新增特性:

  • 支持 SNI/NPN/ALPN 和 OCSP stapling 的原生 SSL;
  • 支持 IPv6 和 UNIX sockets;
  • full HTTP keep-alive for better support of NTLM and improved efficiency in static farms;
  • HTTP/1.1 壓縮支持(deflate, gzip)
  • PROXY protocol versions 1 and 2 on both sides;
  • data sampling on everything in request or response, including payload;
  • ACLs can use any matching method with any input sample maps and dynamic ACLs updatable from the CLI stick-tables support counters to track activity on any input sample custom format for logs, unique-id, header rewriting, and redirects;
  • 改進的健康檢查 (SSL, scripted TCP, check agent, …)
  • 更多的后臺可配置項

官方網站:http://www.haproxy.org/

引用地址:http://www.biaodianfu.com/haporxy.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!