一、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,通常...