001.HAProxy簡介
一 HAProxy簡介
HAProxy是可提供高可用性、負載均衡以及基於TCP(從而可以反向代理mysql等應用)和HTTP應用的代理,支持虛擬主機,它是免費、快速並且可靠的一種解決方案。HAProxy非常適用於並發大(並發達1w以上)web站點,這些站點通常又需要會話保持或七層處理。HAProxy的運行模式使得它可以很簡單安全的整合至當前的架構中,同時可以保護web服務器不被暴露到網絡上。
HAProxy實現了一種事件驅動、單一進程模型,此模型支持非常大的並發連接數。多進程或多線程模型受內存限制 、系統調度器限制以及無處不在的鎖限制,很少能處理數千並發連接。事件驅動模型因為基於更好的資源和時間管理的用戶端(User-Space) 實現所有這些任務,因此沒有這些諸類頸瓶。此模型的弊端是,在多核系統上,這些程序通常擴展性較差。這就是為什麽他們必須進行優化以使每個CPU時間片(Cycle)做更多的工作。
二 HAProxy特性
- 可靠性和穩定性非常好,可以與硬件級的F5負載均衡設備相媲美;
- 最高可以同時維護40000-50000個並發連接,單位時間內處理的最大請求數為20000個,最大處理能力可達10Git/s;
- 支持多達8種負載均衡算法,同時也支持會話保持;
- 支持虛機主機功能,從而實現web負載均衡更加靈活;
- 支持連接拒絕、全透明代理等獨特的功能;
- 擁有強大的ACL支持,用於訪問控制;
- 其獨特的彈性二叉樹數據結構,使數據結構的復雜性上升到了0(1),即數據的查尋速度不會隨著數據條目的增加而速度有所下降;
- 支持客戶端的keepalive功能,減少客戶端與haproxy的多次三次握手導致資源浪費,讓多個請求在一個tcp連接中完成;
- 支持TCP加速,零復制功能,類似於mmap機制;
- 支持響應池(response buffering);
- 支持RDP協議;
- 基於源的粘性,類似nginx的ip_hash功能,把來自同一客戶端的請求在一定時間內始終調度到上遊的同一服務器;
- 更好統計數據接口,其web接口顯示後端集群中各個服務器的接收、發送、拒絕、錯誤等數據的統計信息;
- 詳細的健康狀態檢測,web接口中有關於對上遊服務器的健康檢測狀態,並提供了一定的管理功能;
- 基於流量的健康評估機制;
- 基於http認證;
- 基於命令行的管理接口;
- 日誌分析器,可對日誌進行分析。
三 對比區別
3.1 四層和七層區別
四層負載均衡器也成為4層交換機,主要通過分析IP層及TCP/UDP層的流量實現基於IP加端口的負載均衡,如常見的LVS、F5等;
四層負載均衡器也成為7層交換機,位於OSI的最高層,即應用層,此負載均衡器支持多種協議,如HTTP、FTP、SMTP等。7層負載均衡器可根據報文內容,配合一定的負載均衡算法來選擇後端服務器,即“內容交換器”。如常見的HAProxy、Nginx。
3.2 HAProxy與LVS的異同
兩者都是軟件負載均衡產品,但LVS基於Linux操作系統實現軟負載均衡,而HAProxy是基於第三方應用實現的軟負載均衡;
LVS是基於4層的IP負載均衡技術,而HAProxy是基於4層和7層技術,HAProxy可提供TCP和HTTP應用的負載均衡綜合解決方案;
LVS因為工作在ISO模型的第四層,其狀態監測功能單一,而HAProxy在狀監測方面功能更豐富、強大,可支持端口、URL、腳本等多種狀態檢測方式;
HAProxy功能強大,但整體性能低於4層模式的LVS負載均衡。
001.HAProxy簡介