Haproxy原理與配置講解

2021-09-14 04:17:00 字數 2744 閱讀 6987

一、haproxy概述:

一種高效、可靠、免費的高可用及負載均衡軟體,非常適合於高負載站點的七層資料請求。客戶端通過haproxy**伺服器獲得站點頁面,而**伺服器收到客戶請求後根據負載均衡的規則將請求資料**給後端真實伺服器

實現了一種事件驅動、單一程序模型,能支援非常大的併發連線數

同一客戶端訪問伺服器,haproxy保持回話的三種方案:

haproxy將客戶端ip進行hash計算並儲存,由此確保相同ip訪問時被**到同一真實伺服器上。

haproxy依靠真實伺服器傳送給客戶端的cookie資訊進行回話保持。

haproxy儲存真實伺服器的session及伺服器標識,實現會話保持功能。

二、haproxy**模式:

四層tcp**:haproxy僅在客戶端和伺服器之間雙向**流量,可用於郵件服務內部協議通訊伺服器、mysql服務等;

七層應用**:haproxy會分析應用層協議,並且能通過執行、拒絕、交換、增加、修改或者刪除請求(request)或者回應(reponse)裡指定內容來控制協議。可用於http**或https**。

無負載均衡

簡單的無負載均衡web應用環境, 使用者會直接接入web伺服器,即kevin.com且其中不存在負載均衡機制。如果單一web伺服器發生故障,使用者將無法接入該伺服器。另,若多位使用者同時訪問該伺服器,且其無法處理該負載,則會出現響應緩慢或者無法接入的情況

四層負載均衡

最為簡單的負載均衡方式,將網路流量引導至多台伺服器以使用四層(即傳輸層)負載均衡。這種方式會根據ip範圍與埠進行使用者流量**(例如:有請求指向

秋讀閣,則該流量將被**至backend,即將使用者請求**至後端伺服器的web-backend組。被選定的後端伺服器將直接響應使用者請求)

web-backend中的全部伺服器都應當擁有同樣的內容, 否則使用者可能會遭遇內容不一致問題

七層負載均衡

網路流量使用7層負載均衡意味著均衡器能夠根據使用者的請求內容將請求**至不同後端伺服器。這種方式允許在同一網域名稱及埠上執行多套web應用伺服器。例如:使用者向kevin.com/blog傳送請求,則會被**至blog後端,其包含一組執行有同一blog應用的伺服器。其它請求則會被**至web-backend,其負責執行其它應用。

總的來說,它可以根據「ip+埠」的方式進行負載分流,還可以根據**的url、訪問網域名稱、瀏覽器類別、語言等決定負載均衡的策略

三、nginx、lvs、haproxy對比

nginx(七層**)

lvs(四層**)

haproxy(四層、七層)

優勢1.跨平台性;

2.配置簡單,容易上手;

3.非阻塞、高併發連線;

4.事件驅動:通訊機制採用 epoll 模型,支援更大的併發連線

master/worker 結構;

5.記憶體消耗小;

6.內建的健康檢查功能;

7.支援 gzip 壓縮;

8.穩定性高:用於反向**,宕機的概率微乎其微;

9.會話保持:通過排程演算法實現;

10.動靜分離:基於location匹配正則;

韓先生,情謀已久 :

1.抗負載能力強,強大的四層**,媲美f5硬體的四層**;

2.對記憶體和 cpu 資源消耗比較低;

3.配置性比較低;

4.工作穩定,自身有完整的雙機熱備方案如 lvs+keepalived;

5.無流量,lvs 只分發請求,而流量並不從它本身出去,這點保證了均衡器 io 的效能不會受到大流量的影響。

6.會話保持;

1.支援 session 的保持,cookie 的引導;同時支援通過獲取指定的 url 來檢測後端伺服器的狀態。

2.基於tcp協議的負載效率高於nginx;

3.負載均衡策略非常多;

4.動靜分離:支援acl規則匹配;

5.高效穩定;

6.節點健康檢查:支援多種方式檢測,如埠、url;

劣勢1.適用性低:僅能支 持http、https 和 email 協議,這樣就在適用範圍上面小些;

2.對後端伺服器的健康檢查,只支援通過埠來檢測,不支援通過 ur l來檢測;

3.不支援 session 的直接保持,但能通過 ip_hash 來解決;

4.不適用於高負載量的併發集群;

1.健康檢查:無法檢查後端節點的健康情況;

2.動靜分離:不支援正則,無法區分請求;

3.實現比較麻煩;

4.網路環境依賴性較大;

1.擴充套件性差:新增新功能很費勁,對不斷擴充套件的新業務,haproxy很難應對;

2.在四層**時,僅支援tcp協議的**;

總結:大型**架構:對效能有嚴格要求的時候可以使用lvs或者硬體f5,單從負載均衡的角度來說,lvs也許會成為主流,更適合現在大型的網際網路公司;

中型**架構:對於頁面分離請求由明確規定,並且效能有嚴格要求時,可以使用haproxy

中小型**架構:比如日訪問量小於1000萬,需要進行高併發的**或者對網路不太嚴格的時候,可以使用nginx

haproxy配置檔案講解

global:全域性配置區域引數是程序級的,通常是和作業系統相關。這些引數一般只設定一次,如果配置無誤,就不需要再次進行修改

defaults:配置預設引數,這些引數可以被用到frontend,backend,listen元件

frontend:處理請求的虛擬節點,frontend可以將匹配到本地區域的請求交給下邊的backend

backend:後端服務集群的配置,是真實伺服器,乙個backend對應乙個或者多個實體伺服器;

配置檔案樣例:

HAproxy 配置詳解

haproxy介紹 haproxy提供高可用性 負載均衡以及基於tcp和http應用的 支援虛擬主機,它是免費 快速並且可靠的一種解決方案。haproxy特別適用於那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。haproxy執行在當前的硬體上,完全可以支援數以萬計的併發連線。並且它...

haproxy日誌配置

aproxy配置日誌策略 預設情況下,haproxy是沒有配置日誌的 在centos6.3下預設管理日誌的是rsyslog,可以實現udp日誌的接收,將日誌寫入檔案,寫入資料庫 先檢測rsyslog是否安裝 rpm q rsyslog 安後在 etc rsyslog.d 下建立haproxy.con...

理論 OSPF多區原理與配置 理論講解

二 鏈路狀態資料庫 三 ospf多區域配置 四 stub區域及配置 ospf 中劃分區域的目的就是在於控制鏈路狀態資訊lsa 泛洪的範圍 減小鏈路狀態資料庫lsdb的大小 改善網路的可擴充套件性 達到快速地收斂。當網路中包含多個區域時,ospf 協議有特殊的規定,即其中必須有乙個 area 0,通常...