1. 程式人生 > >Nginx之九 Upstream後端伺服器組

Nginx之九 Upstream後端伺服器組

後端伺服器組的配置

upstream指令是設定後端伺服器組的主要指令,如下所示,都是設定在upstream花括號內

指令 說明
upstream name {…} upstream指令是設定後端伺服器組的主要指令,請求按照輪叫排程(Round-Robin, RR)策略順序選擇伺服器處理,
  name是給後端伺服器組起的組名
  花括號 是包含其他的伺服器
server address [parameters]; server指令用於設定組內的伺服器:

address:
伺服器地址,可以包括埠號或者以”unix:”為字首的程序間通訊的Unix Domain Socket  

params: 為當前伺服器配置更多屬性,如下:
  1)weight=number,組內伺服器權重,權重高的優先處理請求(採用加權輪詢策略),組內所有的權重預設設定為1.
  2)max_fails=number,設定一個請求失敗的次數,在一定時間範圍內,當對組內伺服器請求失敗次數超過該變數時,認為該伺服器無效(404除外),請求失敗的各種情況和proxy_next_upstream指令的配置相匹配,預設值是1,如果設定為0,則不使用上面的辦法檢查伺服器是否有效
  3)fail_timeout=time,作用兩個,一是設定max_fails指令嘗試請求組內伺服器的時間(上面的一定時間)另一個作用是檢查伺服器是否有效,如果被認為是無效,這個這個時間是被認為無效的時間,而不是永久無效,預設值是10s
  4)backup,將伺服器標記為備用伺服器,當正常伺服器處於無效狀態或者繁忙狀態時才能被用來處理請求。
  5)down,標記伺服器永久失效
ip_hash;   ip_hash指令用於實現會話保持功能,將某個客戶端的多次請求定向到組內同一臺伺服器上,保證客戶端與伺服器之間建立穩定的會話。
  這個ip_hash技術主要對客戶端的IP地址做hash分配,這樣每個訪客固定訪問一個後端伺服器,可以解決session的問題,每次訪問由於自己本地的ip不變,所以訪問的伺服器也不容易變。
  注:ip_hash指令不能與weight變數一起使用,在整個系統中,Nginx伺服器必須處於最前端的伺服器,而且客戶端地址必須為C類地址
keepalive connections; keepalive指令用於控制網路連線保持功能 設定伺服器的每一個工作程序允許該伺服器組保持的空閒網路連線數的上限值
least_conn; least_conn指令用於配置Nginx伺服器使用負載均衡策略為網路連線分配伺服器組內的伺服器,將請求分配給當前網路連線最少的伺服器
以下表示三種方式訪問後端伺服器
   例一(輪詢):
   upstream backend {   #這裡沒有使用其他引數,表示通過輪詢的方式訪問下面的伺服器
        server www.viss.com;
        server www.vison.com;
   }
   例二(權重):
    upstream backend1{
    	server www.vison.com weight=5;         #權重最大優先訪問,其他預設都是1
    	server 127.0.0.1:8080 max_fails=3 fail_timout=30s;   #如果在30s內連續三次產生3次失敗,就認為這個伺服器在之後的30s是無效(down)狀態
    	server www.ss.com      backup;   #表示這個是一個備用伺服器
    }
    例三(ip_hash):
    upstream backend2 {
       ip_hash;          #表示通過客戶端的ip做hash訪問下面這兩個伺服器
       server www.vison.com;
       server www.ws.com;
   }