1、工作在網路7層之上,可針對http應用做一些分流的策略,如針對網域名稱、目錄結構,它的正規規則比haproxy更為強大和靈活,所以,目前為止廣泛流行。
2、nginx對網路穩定性的依賴非常小,理論上能ping通就能進行負載功能。
3、nginx安裝與配置比較簡單,測試也比較方便,基本能把錯誤日誌列印出來。
4、可以承擔高負載壓力且穩定,硬體不差的情況下一般能支撐幾萬次的併發量,負載度比lvs小。
5、nginx可以通過埠檢測到伺服器內部的故障,如根據伺服器處理網頁返回的狀態碼、超時等,並會把返回錯誤的請求重新提交到另乙個節點。
6、不僅僅是優秀的負載均衡器/反向**軟體,同時也是強大的web應用伺服器。lnmp也是近些年非常流行的web架構,在高流量環境中穩定性也很好。
7、可作為中層反向**使用。
8、可作為靜態網頁和伺服器。
9、nginx社群活躍,第三方模組非常多,相關的資料在網上比比皆是。
nginx常規的和http請求和相應流程圖:
1、適應範圍較小,僅能支援http、https、email協議。
2、對後端伺服器的健康檢查,只支援通過埠檢測,不支援url來檢測。比如使用者正在上傳乙個檔案,而處理該上傳的節點剛好在上傳過程**現故障,nginx會把上傳切到另一台伺服器重新處理,而lvs就直接斷掉了,如果是上傳乙個很大的檔案或者很重要的檔案的話,使用者可能會因此而不滿。
1、抗負載能力強、是工作在網路4層之上僅作分發之用,沒有流量的產生,這個特點也決定了它在負載均衡軟體裡的效能最強的,對記憶體和cpu資源消耗比較低。
2、配置性比較低,這是乙個缺點也是乙個優點,因為沒有可太多配置的東西,所以並不需要太多接觸,大大減少了人為出錯的機率。
3、工作穩定,因為其本身抗負載能力很強,自身有完整的雙機熱備方案,如lvs+keepalived,不過我們在專案實施中用得最多的還是lvs/dr+keepalived。
4、無流量,lvs只分發請求,而流量並不從它本身出去,這點保證了均衡器io的效能不會收到大流量的影響。
lvs dr(direct routing)模式的網路流程圖:
1、軟體本身不支援正規表示式處理,不能做動靜分離;而現在許多**在這方面都有較強的需求,這個是nginx/haproxy+keepalived的優勢所在。
2、如果是**應用比較龐大的話,lvs/dr+keepalived實施起來就比較複雜了,特別後面有windows server的機器的話,如果實施及配置還有維護過程就比較複雜了,相對而言,nginx/haproxy+keepalived就簡單多了。
1、haproxy是支援虛擬主機的,可以工作在4、7層(支援多網段)
2、haproxy的優點能夠補充nginx的一些缺點,比如支援session的保持,cookie的引導;同時支援通過獲取指定的url來檢測後端伺服器的狀態。
3、haproxy跟lvs類似,本身就只是一款負載均衡軟體;單純從效率上來講haproxy會比nginx有更出色的負載均衡速度,在併發處理上也是優於nginx的。
4、haproxy支援tcp協議的負載均衡**,可以對mysql讀進行負載均衡,對後端的mysql節點進行檢測和負載均衡,大家可以用lvs+keepalived對mysql主從做負載均衡。
5、haproxy負載均衡策略非常多,haproxy的負載均衡演算法現在具體有如下8種
① roundrobin
表示簡單的輪詢,每個伺服器根據權重輪流使用,在伺服器的處理時間平均分配的情況下這是最流暢和公平的演算法。該演算法是動態的,對於例項啟動慢的伺服器權重會在執行中調整。最大支援4095個後端主機;
② leastconn
連線數最少的伺服器優先接收連線。leastconn建議用於長會話服務,例如ldap、sql、tse等,而不適合短會話協議。如http.該演算法是動態的,對於例項啟動慢的伺服器權重會在執行中調整。
③ static-rr
每個伺服器根據權重輪流使用,類似roundrobin,但它是靜態的,意味著執行時修改許可權是無效的。另外,它對伺服器的數量沒有限制。該演算法一般不用;
④ source
對請求源ip位址進行雜湊,用可用伺服器的權重總數除以雜湊值,根據結果進行分配。只要伺服器正常,同乙個客戶端ip位址總是訪問同乙個伺服器。如果雜湊的結果隨可用伺服器數量而變化,那麼客戶端會定向到不同的伺服器;該演算法一般用於不能插入cookie的tcp模式。它還可以用於廣域網上為拒絕使用會話cookie的客戶端提供最有效的粘連;該演算法預設是靜態的,所以執行時修改伺服器的權重是無效的,但是演算法會根據「hash-type」的變化做調整。
⑤ uri
表示根據請求的uri左端(問號之前)進行雜湊,用可用伺服器的權重總數除以雜湊值,根據結果進行分配。只要伺服器正常,同乙個uri位址總是訪問同乙個伺服器。一般用於**快取和反病毒**,以最大限度的提高快取的命中率。該演算法只能用於http後端;該演算法一般用於後端是快取伺服器;該演算法預設是靜態的,所以執行時修改伺服器的權重是無效的,但是演算法會根據「hash-type」的變化做調整。
⑥ url_param
在http get請求的查詢串中查詢中指定的url引數,基本上可以鎖定使用特製的url到特定的負載均衡器節點的要求;該演算法一般用於將同乙個使用者的資訊傳送到同乙個後端伺服器;該演算法預設是靜態的,所以執行時修改伺服器的權重是無效的,但是演算法會根據「hash-type」的變化做調整。
⑦ hdr(name)
在每個http請求中查詢http頭,http頭將被看作在每個http請求,並針對特定的節點;如果缺少頭或者頭沒有任何值,則用roundrobin代替;該演算法預設是靜態的,所以執行時修改伺服器的權重是無效的,但是演算法會根據「hash-type」的變化做調整。
⑧ rdp-cookie(name)
為每個進來的tcp請求查詢並雜湊rdp cookie;該機制用於退化的持久模式,可以使同乙個使用者或者同乙個會話id總是傳送給同一臺伺服器。如果沒有cookie,則使用roundrobin演算法代替;該演算法預設是靜態的,所以執行時修改伺服器的權重是無效的,但是演算法會根據「hash-type」的變化做調整。
haproxy的工作模型圖:
haporxy缺點:
不支援pop/smtp協議
不支援spdy協議
不支援http cache功能。現在不少開源的lb專案,都或多或少具備http cache功能。
過載配置的功能需要重啟程序,雖然也是soft restart,但沒有nginx的reaload更為平滑和友好。
nginx,haproxy,lvs負載均衡的比較
nginx的優點 效能好,可以負載超過1萬的併發。功能多,除了負載均衡,還能作web伺服器,而且可以通過geo模組來實現流量分配。社群活躍,第三方補丁和模組很多 支援gzip proxy 缺點 不支援session保持。對後端realserver的健康檢查功能效果不好。而且只支援通過埠來檢測,不支援...
Nginx HAProxy LVS三者的優缺點
一 nginx優點 1 工作在網路7層之上,可針對http應用做一些分流的策略,如針對網域名稱 目錄結構,它的正規規則比haproxy更為強大和靈活,所以,目前為止廣泛流行。2 nginx對網路穩定性的依賴非常小,理論上能ping通就能進行負載功能。3 nginx安裝與配置比較簡單,測試也比較方便,...
Nginx HAProxy LVS三者的優缺點
參考 一 nginx優點 1 工作在網路7層之上,可針對http應用做一些分流的策略,如針對網域名稱 目錄結構,它的正規規則比haproxy更為強大和靈活,所以,目前為止廣泛流行。2 nginx對網路穩定性的依賴非常小,理論上能ping通就能進行負載功能。3 nginx安裝與配置比較簡單,測試也比較...