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

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

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

    1.HAProxy簡介:
算法

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

                ■可靠性和穩定性很是好,能夠與硬件級的F5負載均衡設備相媲美。後端

                □最高能夠同時維護40000~50000個併發鏈接,單位時間內處理的最大請求數爲20000個,最大數據處理能力可達10Gbps。做爲軟件級別的負載均衡來講,HAProxy的性能強大可見一斑。瀏覽器

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

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

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

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

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

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

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

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

                1.png

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

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

                        2.png

            對比四層負載均衡器和七層負載均衡器運行的整個過程,能夠看出,在七層負載均衡模式下,負載均衡器與客戶端及後端的服務器會分別創建一次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

相關文章
相關標籤/搜索