1. 程式人生 > >HAProxy詳解(一):HAProxy介紹【轉】

HAProxy詳解(一):HAProxy介紹【轉】

監測 對比 內容交換 發送 持久連接 shadow 虛擬 font ros

一.高性能負載均衡軟件HAProxy介紹:

隨著互聯網業務的迅猛發展,大型電商平臺和門戶網站對系統的可用性和可靠性要求越來越高,高可用集群、負載均衡集群成為一種熱門的系統架構解決方案。在眾多的負載均衡集群解決方案中,有基於硬件的負載均衡設備,例如F5、Big-IP等,也有基於軟件的負載均衡產品,例如HAProxy、LVS、Nginx等。在軟件的負載均衡產品中,又分為兩種實現方式,分別是基於操作系統的軟負載實現和基於第三方應用的軟負載實現。LVS就是基於Linux操作系統實現的一種軟負載均衡,而HAProxy就是基於第三應用實現的軟負載均衡。

1.HAProxy簡介:


HAProxy是一個開源的、高性能的、基於TCP(第四層)和HTTP(第七層)應用的負載均衡軟件,借助HAProxy可以快速、可靠的提供基於TCP和HTTP應用的負載均衡解決方案。HAProxy作為一個專業的負載均衡軟件,它的顯著優點如下:

■可靠性和穩定性非常好,可以與硬件級的F5負載均衡設備相媲美。

□最高可以同時維護40000~50000個並發連接,單位時間內處理的最大請求數為20000個,最大數據處理能力可達10Gbps。作為軟件級別的負載均衡來說,HAProxy的性能強大可見一斑。

■支持多於8種的負載均衡算法,同時也支持session保持。

□支持虛擬主機功能,這樣實現web負載均衡更加靈活。

■從HAProxy1.3版本後開始支持連接拒絕、全透明代理等功能,這些功能是其他負載均衡器所不具備的。

□HAProxy擁有功能強大的ACL支持,能給使用帶來很大方便。

HAProxy是借助於操作系統的技術特性來實現性能最大化的,因此,在使用HAProxy時,對操作系統進行性能調優是非常重要的。在業務系統方面,HAProxy非常適用於那些並發量特別大且需要持久連接或四層和七層處理機制的web系統,例如門戶網站或電商網站等。另外,HAProxy也可用於MySQL數據庫(讀操作)的負載均衡。

2.四層和七層負載均衡的區別:

所謂的四層就是ISO參考模型中的第四層。四層負載均衡器也稱為四層交換機,它主要是通過分析IP層及TCP/UDP層的流量實現的基於“IP+端口”的負載均衡。常見的基於四層的負載均衡器有LVS、F5等。

以常見的TCP應用為例,負載均衡器在接收到第一個來自客戶端的SYN請求時,會通過設定的負載均衡算法選擇一臺最佳的後端服務器,同時將報文中目標IP地址修改為後端服務器IP,然後直接轉發給後端服務器,這樣一個負載均衡請求就完成了。從這個過程來看,一個TCP連接是客戶端和服務器直接建立的,而負載均衡器只不過完成了一個類似路由器的轉發動作。在某些負載均衡策略中,為保證後端服務器返回的報文可以正確傳遞給負載均衡器,在轉發報文的同時可能還會對報文原來的源地址進行修改。過程如圖:

技術分享圖片

技術分享圖片 同理,七層負載均衡器也稱為七層交換機,位於ISO的最高層,即應用層,此時負載均衡器支持多種應用協議,常見的有HTTP、FTP、SMTP等。七層負載均衡器可以根據報文內容,再配合負載均衡算法來選擇後端服務器,因此也稱為“內容交換器”。比如,對於web服務器的負載均衡,七層負載均衡器不但可以根據“IP+端口”的方式進行負載分流,還可以根據網站的URL、訪問域名、瀏覽器類別、語言等決定負載均衡的策略。例如,有兩臺web服務器分別對應中英文兩個網站,兩個域名分別是A、B,要實現訪問A域名時進入中文網站,訪問B域名時進入英文網站,這在四層負載均衡器中幾乎是無法實現的,而七層負載均衡器可以根據客戶端訪問域名的不同選擇對應的網頁進行負載均衡處理。常見的七層負載均衡器有HAProxy、Nginx等。

這裏仍以常見的TCP應用為例,由於負載均衡器要獲取到報文的內容,因此只能先代替後端服務器和客戶端建立連接,接著,才能收到客戶端發送過來的報文內容,然後在根據該報文中特定字段加上負載均衡器中設置的負載均衡器算法來決定最終選擇的內部服務器。縱觀整個過程,七層負載均衡器在這種情況下類似於一個代理服務器。如圖:

技術分享圖片

技術分享圖片 對比四層負載均衡器和七層負載均衡器運行的整個過程,可以看出,在七層負載均衡模式下,負載均衡器與客戶端及後端的服務器會分別建立一次TCP連接,而在四層負載均衡模式下,僅建立一次TCP連接。由此可知,七層負載均衡對負載均衡設備的要求更高,而七層負載均衡的處理能力也必然低於四層模式的負載均衡。

3.HAProxy與LVS的異同:

1)兩者都是軟件負載均衡產品,但是LVS是基於linux操作系統實現的一種軟負載均衡,而HAProxy是基於第三應用實現的軟負載均衡。

2)LVS是基於四層的IP負載均衡技術,而HAProxy是基於四層和七層技術、可提供TCP和HTTP應用的負載均衡綜合解決方案。

3)LVS工作在ISO模型的第四層,因此其狀態監測功能單一,而HAProxy在狀態監測方面功能強大,可支持端口、URL、腳本等多種狀態檢測方式。

4)雖然HAProxy功能強大,但是它的整體處理性低於四層負載均衡模式的LVS,而LVS擁有接近硬件設備的網絡吞吐和連接負載能力。

轉自

HAProxy詳解(一)-閆利朋的博客-51CTO博客

http://blog.51cto.com/6284444/2136770

HAProxy詳解(一):HAProxy介紹【轉】