負載均衡 HAProxy 與 Nginx

2021-06-10 08:36:50 字數 1265 閱讀 8122

另一種更重要的衡量尺度是它可以攜帶的同時連線。這是需要進行大量的遠距離連線保持的大型站點的關鍵。我們的haproxy上最多有250,000的同時連線,遠遠超出了nginx或任何其他的前端軟體系統。

haproxy的配置系統是非常強大的,可以配置很多的前端監聽「伺服器」,和後端的伺服器池,所有的前後端都可以使用各種規則來混合匹配。這是有著許多ip/埠/主機監聽組合的大型**,在**變更、遷移和公升級的時候,在後端伺服器之間靈活移動負載的方法。

haproxy後端的監控和控制也是非常強大的,可以進行各種各樣的複雜配置,怎麼樣來監控什麼項,如何確定某個具體後端的可用性,如何快速加大負載,等等。它甚至可以為所有伺服器都掉線的主池配置備用伺服器池,這在有故障切換和維護需求的大型系統上是非常有用的。haproxy還可以通過套接字來實現池的動態變化,刪除伺服器,等等(儘管我們不得不編寫一些工具來使它更易於使用)。

所有這些當中,最棒的部分是haproxy自己的監控,它通過http提供了乙個非常有用的gui介面(也可以通過socket呼叫),來查詢和控制負載均衡系統。每個前端和後端的池,以及每台伺服器都有約15個不同的資料值和狀態,包括請求率、連線數、錯誤的不同型別、當前狀態的時間,最大的連線數和連線率,等等。

haproxy還可以實現四層負載均衡的功能,這對於分散mysql從庫的讀操作最有用,但也可以工作在任何的tcp/ip連線上,包括xmpp、node.js、遊戲,或其他基於套接字的系統。

最後,haproxy具有非常強大的日誌功能,無論是格式、資訊級別和配置上,都可以進行完全地自定義配置。其中,詳細狀態是最有用的,它可以告訴你每個連線中具體的資訊細節,這在故障排除中是非常有用的。

那麼,haproxy有什麼弱點嗎? 有,包括兩樣: ssl和多核的支援。

haproxy不支援ssl。所以如果你需要處理加密的請求,那麼就需要乙個額外的前端來處理它;我們常常為此使用nginx。這意味著乙個典型的負載均衡伺服器往往由nginx來監聽443埠,然後把解密後的資料發往haproxy上的80或者81埠再執行真正的負載均衡。這有點複雜,但是很好用,可擴充套件性性也很強。

此外,haproxy和nginx一樣,是個單執行緒事件驅動系統,這讓它速度飛快,並且容易擴充套件。但同時也限制了它最終只能在乙個核心上擴充套件。雖然haproxy也支援多核系統,可以得到2倍、3倍、4倍,甚至更高的效能,但是擴充套件性較差,而且監控依然是基於單個程序的,這就使得事情變得複雜了。不過,這個問題很少遇到,因為它只有在非常高的效能級別才需要考慮,譬如每秒鐘有數以萬計的請求進來,同時存在數十萬的連線。

不過,即使有這些問題,haproxy依然是壓倒性的最佳負載均衡軟體,幾乎所有的新系統上都應該採用它來做負載均衡。

Haproxy負載均衡部署

haproxy安裝 useradd haproxy wget tar zxvf haproxy 1.4.25.tar.gz cd haproxy 1.4.25 make target linux26 prefix usr local haproxy arch x86 64 make install ...

ha proxy負載均衡架構

屬於7層 haproxy 提供高可用性 負載均衡以及基於 tcp 和 http 應用的 支援虛擬主機,它是免費 快速並且可靠的一種解決方案。根據官方資料,其最高極限支援 10g 的併發。haproxy 特別適用於那些負載特大的 web 站點,這些站點通常又需要會話保持或七層處理。haproxy 執行...

haproxy負載均衡演算法

haproxy負載均衡演算法 1 roundrobin 表示簡單的輪詢,每個伺服器根據權重輪流使用,在伺服器的處理時間平均分配的情況下這是最流暢和公平的演算法。該演算法是動態的,對於例項啟動慢的伺服器權重會在執行中調整。2 leastconn 連線數最少的伺服器優先接收連線。leastconn建議用...