首頁  >  文章  >  後端開發  >  lvs、nginx、haproxy中轉模式總結

lvs、nginx、haproxy中轉模式總結

WBOY
WBOY原創
2016-08-08 09:21:471335瀏覽

lvs、nginx、haproxy是最常見的三種高可用性負載平衡軟體。由於lvs和haproxy在目前的公司的現網環境中並未用到,雖然之前簡單的了解和搭建過,現在也已經忘的差不多了,而及於nginx的負載平衡雖然公司在用,不過一配置文件都是ctrl+c、ctrl+v,對轉發的理論性的東西也都忘的差不多了。隱約腦中現在只有upstream、dr 、ip_hash這幾個字了。現對三者的轉發方式做下總結。

一、LVS轉發模式

LVS是章文嵩博士寫的一個工作於四層的高可能性軟體。不像後兩者支援七層轉發,不過也因為其簡單,所以其是最穩定的。其共有三種IP負載平衡技術:VS/NAT(Virtual Server via Network Address Translation)、VS/TUN(Virtual Server via IP Tunneling)和VS/DR(Direct Routing),三者之間的具體比較請見下表

lvs、nginx、haproxy中轉模式總結

二、nginx負載模式

nginx有五種負載演算法模式,分別是:輪詢、weight(權重)、ip_hash、fair、url_hash 。現逐一說明:

  1. 輪詢(預設): 每個請求依時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。
  2. weight :指定輪詢幾率,weight和存取比率成正比,用於後端伺服器效能不均的情況。配置為:
    1. upstream bakend {
    2. server 192.168.0.192.1681 ;server 192.168
    3. .
    4. 0.15 weight=10;}
    5. ip_hash:每個請求按訪問配置為:
    6. upstream bakend 
  3. {
    1. ip_hash;
    2. server. :88
    3. ;
    4. server 192.168. 0.15:80
    5. ;
    6. }fair請求 upstream backend {
    7. server server1
    8. ;
    1. }
    2. url_hash:按訪問url的hash結果來分配請求,使每個url定向到同一個後端伺服器,後端伺服器為快取時比較有效。配置如: upstream backend 
    3. {
    4. server squid1
    5. :
    6. 3128 8;
    7. hash $request_uri
    ;
    1. hash_method crc32;
    2. }注:第五種模式下,需要注意關於methodfoded的hash演算法。 server後面常接的參數有以下幾個:
    3. down 表示單前的server暫時不參與負載 weight 預設為1.weight越大,負載的權重越大。 
    4. max_fails :允許請求失敗的次數預設為1.超過最大次數時,返回proxy_next_upstream 模組定義的錯誤 fail_timeout:max_fails次失敗後,暫停的時間。 
    5. backup: 其它所有的非backup機器down或忙碌的時候,請求backup機器。所以這台機器壓力會最輕。
    6. 三、haproxyhaproxy是三者之間負載演算法最多的,有八種,因此其應用場景也是最多,配置也是最靈活的,具體8種演算法為:
  4. ①roundrobin,表示簡單的輪詢,這個是負載平衡基本上都具備的; 

②static-rr,表示根據權重,和nginx的weight演算法類似; 

③leastconn,表示最少連接者先處理,有點類似於nginx的fair,不過fair是根據回應時間; 

    ④source,表示根據請求來源IP,這個跟Nginx的IP_hash機制類似,我們用其作為解決session問題的一種方法,建議關注; 
  • ⑤ri,表示根據請求的URI,類似於nginx的url_hash; 
  • ⑥rl_param,表示根據請求的URl參數'balance url_param' requires an URL parameter name; 
  • ⑦hdr(name),表示根據HTTP請求頭來鎖定每一次

    ⑧rdp-cookie(name),表示根據據cookie(name)來鎖定並哈希每一次TCP請求。

    四、總結

    具體現網應用可以根據據體的實際情況選擇最好的負載方式。三者中,lvs穩定性最好,可配置性最少;nginx針對域名、目錄結構進行正則匹配是最強的,同時其對網絡依賴比較小,不過性能上和lvs和haproxy相比稍差一點點;haproxy支援虛擬主機,尤其在session保持方面做的最好,其有三種演算法可以實現session共享-—— ip辨識(source)、cookie辨識、session辨識三種,除此之外在對mysql做HA方案時也常會用到該軟體。

    以上就介紹了lvs、nginx、haproxy中轉模式總結,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn