1. 程式人生 > >Nginx 和 LVS 的各種優缺點

Nginx 和 LVS 的各種優缺點

LVS 的負載能力強,因為其工作方式邏輯非常簡單,僅進行請求分發,而且工作在網路的第 4 層,沒有流量,所以其效率不需要有過多的憂慮。

LVS 基本能支援所有應用,因為工作在第 4 層,所以 LVS 可以對幾乎所有應用進行負載均衡,包括 Web、資料庫等。

註意:LVS 並不能完全判別節點故障,比如在 WLC 規則下,如果叢集裡有一個節點沒有配置 VIP,將會導致整個叢集不能使用。還有一些其他問題,目前尚需進一步測試。

Nginx 工作在網路第 7 層,所以可以對 HTTP 應用實施分流策略,比如域名、結構等。相比之下,LVS 並不具備這樣的功能,所以 Nginx 可使用的場合遠多於 LVS。並且 Nginx 對網路的依賴比較小,理論上只要 Ping 得通,網頁訪問正常就能連通。LVS 比較依賴網路環境。只有使用 DR 模式且伺服器在同一網段內分流,效果才能得到保證。

Nginx 可以通過伺服器處理網頁返回的狀態嗎、超時等來檢測伺服器內部的故障,並會把返回錯誤的請求重新傳送到另一個節點。目前 LVS 和 LDirectd 也支援對伺服器內部情況的監控,但不能重新傳送請求。

比如使用者正在上傳一個檔案,而處理該上傳資訊的節點剛好出現故障,則 Nginx 會把上傳請求重新傳送到另一臺伺服器,而 LVS 在這種情況下會直接斷掉。Nginx 還能支援 HTTP 和 Email(Email 功能很少有人使用),LVS 所支援的應用在這個電商比 Nginx 更多。

Nginx 同樣能承受很高負載並且能穩定執行,由於處理流量受限於機器 I/O 等配置,所以負載能力相對較差。

Nginx 安裝、配置及測試相對來說比較簡單,因為有相應的錯誤日誌進行提示。LVS 的安裝、配置及測試所花的時間比較長,因為 LVS 對網路以來比較大,很多時候有可能因為網路問題而配置不能成功,出現問題時,解決的難度也相對較大。Nginx 本身沒有現成的熱備方案,所以在單機上執行風險較大,建議 KeepAlived 配合使用。另外,Nginx 可以作為 LVS 的節點機器使用,充分利用 Nginx 的功能和效能。當然這種情況也可以直接使用 Squid 等其他具備分發功能的軟體。

具體應用具體分析。如果是比較小型的網站(每日 PV 小於 100 萬),使用者 Nginx 就完全可以應對,如果機器也不少,可以用 DNS 輪詢。LVS 後用的機器較多,在構建大型網站或者提供重要服務且機器較多時,可多加考慮利用 LVS。

來源: http://www.blog.ituac.com

論:Nginx 和 LVS 的各種優缺點