HAproxy七層負載均衡介紹

2021-09-21 01:16:46 字數 2093 閱讀 8807

haproxy是乙個使用c語言編寫的自由及開放源**軟體[1],其提供高可用性、負載均衡,以及基於tcp和http的應用程式**。

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

haproxy實現了一種事件驅動, 單一程序模型,此模型支援非常大的併發連線數。多程序或多執行緒模型受記憶體限制 、系統排程器限制以及無處不在的鎖限制,很少能處理數千併發連線。事件驅動模型因為在有更好的資源和時間管理的使用者空間(user-space) 實現所有這些任務,所以沒有這些問題。此模型的弊端是,在多核系統上,這些程式通常擴充套件性較差。這就是為什麼他們必須進行優化以 使每個cpu時間片(cycle)做更多的工作。

包括 github、bitbucket[3]、stack overflow[4]、reddit、tumblr、twitter[5][6]和 tuenti[7]在內的知名**,及亞馬遜網路服務系統都使用了haproxy。

(1)**相關

正向**,反向**
這裡著重介紹一下正向**和反向**的區別

正向**:

正向**通過上面的圖理解其實就是使用者想從伺服器拿資源資料,但是只能通過proxy伺服器才能拿到,所以使用者a只能去訪問proxy伺服器然後通過proxy伺服器去伺服器b拿資料,這種情況使用者是明確知道你要訪問的是誰,在我們生活中最典型的案例就是「翻牆「了,也是通過訪問**伺服器最後訪問外網的。

反向**:

反向**其實就是客戶端去訪問伺服器時,他並不知道會訪問哪一台,感覺就是客戶端訪問了proxy一樣,而實則就是當proxy關口拿到使用者請求的時候會**到**伺服器中的隨機(演算法)某一台。而在使用者看來,他只是訪問了proxy伺服器而已,典型的例子就是負載均衡了。

**伺服器,可以提供快取功能加速客戶端訪問,同時可以對快取資料進行有效性檢查

內容路由:根據流量以及內容型別將請求**至特定的伺服器

轉碼器:支援壓縮功能,將資料以壓縮形式傳送給客戶端

(2)快取的作用

減少訪冗餘內容傳輸

節省頻寬,緩解網路瓶頸

降低了對原始伺服器的請求壓力

降低了傳輸延遲

(3)負載均衡集群:

四層:(前面講過)

lvs, nginx(stream),haproxy(mode tcp)

七層:http: nginx(http, ngx_http_upstream_module), haproxy(mode http), httpd, ats, perlbal, pound...

(4)haproxy功能

haproxy是tcp / http反向**伺服器,尤其適合於高可用性環境

可以針對http請求新增cookie,進行路由後端伺服器

可平衡負載至後端伺服器,並支援持久連線

支援基於cookie進行排程

支援所有主伺服器故障切換至備用伺服器

支援專用埠實現監控服務

支援不影響現有連線情況下停止接受新連線請求

可以在雙向新增,修改或刪除http報文首部

支援基於pattern實現連線請求的訪問控制

通過特定的uri為授權使用者提供詳細的狀態資訊

企業級七層負載均衡 Haproxy

haproxy是乙個特別適用於高可用性環境的tcp http開源的反向 和負載均衡軟體。在七層負載均衡方面的功能很強大 支援cookie track,header rewrite等等 支援雙機熱備,支援虛擬主機,支援健康檢查,同時還提供直觀的監控頁面,可以清晰的監控服務集群的執行狀況 haproxy...

四層負載均衡和七層負載均衡

第一,技術原理上的區別。所謂四層負載均衡,也就是主要通過報文中的目標位址和埠,再加上負載均衡裝置設定的伺服器選擇方式,決定最終選擇的內部伺服器。以常見的 tcp為例,負載均衡裝置 在接收到第乙個來自客戶端的 syn請求時 即通過上述方式選擇乙個最佳的伺服器,並對報文中目標 ip位址進行修改 改為後端...

四層負載均衡與七層負載均衡

1 四層負載均衡與七層負載均衡區別 個人理解 網路七層協議包括,應用層 第七層 表示層,會話層,傳輸成 第四層 網路層,資料鏈路層,物理層。所謂的七層和四層負載均衡就是指基於哪一層做的負載均衡。nginx反向 就是一種七層負載均衡,可以通過使用者的請求url來進行劃分 lvs就屬於四層負載均衡,是基...