Haproxy


常見的Web集群調度器:

  • 目前常見的Web集群調度器分為軟件和硬件
  • 軟件通常使用開源的LVS、Haproxy、Nginx

LVS性能最好,但是搭建相對復雜;Nginx的upstream模塊支持集群功能,但是對集群節點健康檢查功能不強,高並發性能沒有Haproxy好

  • 硬件一般使用比較多的是F5,也有很多人使用國內的一些產品,比如:梭子魚、綠盟等

Haproxy應用分析:

LVS在企業應用中抗負載能力很強,但是存在不足

  • LVS不支持正則處理,不能實現動靜分離
  • 對於大型網站,LVS的實施配置復雜,維護成本相對較高

Haproxy是一款可提供高可用、負載均衡、及基於TCP和HTTP應用的代理的軟件

  • 適用於負載大的Web站點
  • 運行在硬件上可支持數以萬計的並發連接的連接請求

LVS、Nginx和Haproxy的對比

Nginx的優點:

  • 工作在網絡的7層之上,可以針對http應用做一些分流的策略,比如針對域名、目錄結構。Nginx正則規則比HAProxy更為強大和靈活。
  • Nginx對網絡穩定性的依賴非常小,理論上能ping通就就能進行負載功能,LVS對網絡穩定性依賴比較大,穩定要求相對更高。
  • Nginx安裝和配置、測試比較簡單、方便,有清晰的日志用於排查和管理,LVS的配置、測試就要花比較長的時間了。
  • 可以承擔高負載壓力且穩定,一般能支撐幾萬次的並發量,負載度比LVS相對小些。
  • Nginx可以通過端口檢測到服務器內部的故障,比如根據服務器處理網頁返回的狀態碼、超時等等。
  • Nginx不僅僅是一款優秀的負載均衡器/反向代理軟件,它同時也是功能強大的Web應用服務器。
  • Nginx作為Web反向加速緩存越來越成熟了,速度比傳統的Squid服務器更快,很多場景下都將其作為反向代理加速器。
  • Nginx作為靜態網頁和圖片服務器,這方面的性能非常優秀,同時第三方模塊也很多。

Nginx的缺點:

  • Nginx僅能支持http、https和Email協議,這樣就在適用范圍上面小些。
  • 對后端服務器的健康檢查,只支持通過端口來檢測,不支持通過url來檢測。
  • 不支持Session的直接保持,需要通過ip_hash和cookie的引導來解決。

LVS的優點:

  • 抗負載能力強、是工作在網絡4層之上僅作分發之用,沒有流量的產生。因此負載均衡軟件里的性能最強的,對內存和cpu資源消耗比較低。
  • LVS工作穩定,因為其本身抗負載能力很強,自身有完整的雙機熱備方案。
  • 無流量,LVS只分發請求,而流量並不從它本身出去,這點保證了均衡器IO的性能不會收到大流量的影響。
  • 應用范圍較廣,因為LVS工作在4層,所以它幾乎可對所有應用做負載均衡,包括http、數據庫等。

LVS的缺點:

  • 軟件本身不支持正則表達式處理,不能做動靜分離。相對來說,Nginx/HAProxy+Keepalived則具有明顯的優勢。
  • 如果是網站應用比較龐大的話,LVS/DR+Keepalived實施起來就比較復雜了。相對來說,Nginx/HAProxy+Keepalived就簡單多了

HAProxy的優點:

  • HAProxy也是支持虛擬主機的。
  • HAProxy支持8種負載均衡策略。
  • HAProxy的優點能夠補充Nginx的一些缺點,比如支持Session的保持,Cookie的引導,同時支持通過獲取指定的url來檢測后端服務器的狀態。
  • HAProxy跟LVS類似,本身就只是一款負載均衡軟件,單純從效率上來講HAProxy會比Nginx有更出色的負載均衡速度,在並發處理上也是優於Nginx的。
  • HAProxy支持TCP協議的負載均衡轉發。

Haproxy負載均衡策略非常多,常見的有8種

  1. roundrobin:表示簡單的輪詢
  2. static-rr:表示根據權重
  3. leastconn:表示最少連接先處理
  4. source:表示根軍請求源IP
  5. uri:表示根據請求的URL,做cdn需使用
  6. url_param:表示根據請求的URL參數
  7. hdr(name):表示根據HTTP請求頭來鎖定每一次HTTP請求
  8. rdp-cookie(name):表示根據cookie(name)來鎖定並哈希每一次TCP請求

總結:

  • LVS基於Linux操作系統實現軟負載均衡,而Haproxy和Nginx是基於第三方應用實現的軟負載均衡
  • LVS是可實現4層的IP負載均衡技術,無法實現基於目錄、URL的轉發。而Haproxy和Nginx都可以實現4層和7層技術,Haproxy可提供TCP和HTTP應用的負載均衡綜合解決方案
  • LVS因為工作在ISO模型的第四層,其狀態監測功能單一,而Haproxy在狀態監測方面功能更豐富、強大,可支持端口、URL、腳本等多種狀態檢測方式
  • Haproxy功能強大,但整體性能低於4層模式的LVS負載均衡
  • Nginx主要用於Web服務器或緩存服務器。Nginx的upstream模塊雖然也支持集群功能,但是對集群節點健康檢查功能不強,性能沒有Haproxy好

Haproxy搭建Web集群

 1、關閉防火牆,傳軟件包

 

 2、編譯安裝Haproxy

 

 

 

 

 

 3、Haproxy服務器設置

 

 

 

 

 

 4、添加haproxy系統服務

 

 

 節點服務器部署

 

 

 

 

 

 

 

 

 

 

 

 

 日志定義

默認哈proxy的日志是輸出到系統的syslog中,查看起來不是非常方便,為了更好的管理haproxy的日志,我么在生產環境中一般單獨定義出來。需要haproxy的info及notice日志分別記錄到不同的日志文件中

 

 需要修改rsyslog配置,為了便於管理。將haproxy相關的配置獨立定義到haproxy.conf,並放到/etc/rsyslog.d/下,rsyslog啟動時會自動加載此目錄下的所有配置文件 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM