Nginx負載均衡配置說明

silent發表於2015-12-01

  WEB服務做負載均衡的方法有很多種,但使用Nginx做負載均衡部署毫無疑問是非常高效也是非常流行的一種。

  本人大多數做.NET開發,但部署負載卻一直用Nginx,對其他的負載方式研究不多,只測試過一次使用Server Farm做負載部署,沒有在實際專案中實戰,最近見同事使用Server Farm做負載配置,但對其效能等不甚瞭解,望知之者留言討論。

  廢話少說,請看步驟:

1、Nginx服務安裝部署

  請看上文《Nginx服務介紹

2、配置檔案編寫

  在Nginx安裝目錄下下開啟Vhost目錄(該目錄已經在Nginx.conf中被包含,如果只是針對某站點的某個目錄負載,可以將包含路徑修改一下即可),新建負載配置檔案testfz.conf,內容如下:

upstream backend 
{
   server 192.168.1.106:8001  weight=1;
   server 192.168.1.107:8001  weight=2;
   #ip_hash;
}

server 
{
    listen       80;
    server_name  www.test.com;
    location ~ ^/*
    {
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_buffering off;
      proxy_pass http://wwwbackend;     
    }
}

3、測試

./nginx –t
返回如下資訊表示引數配置無誤
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

4、重新載入配置檔案

/etc/init.d/nginx reload

如果重啟報PID錯誤,在安裝路徑下-C重新載入一下配置檔案即可。

5、關於Nginx配置的引數說明

  a、輪詢 每個請求根據Nginx配置檔案中的順序,依次分發到不同的後端伺服器,伺服器如果down掉會自動識別並剔除;
  b、weight Nginx根據weight配置把請求更多地分發到高配置的後端伺服器上,把相對較少的請求分發到低配伺服器。
  c、ip_hash 每個請求按訪問ip的hash結果分配,保證連線到固定的負載伺服器上,這種方式可以解決session問題;
  d、最少連線 可以將Web請求會被轉發到連線數最少的伺服器上。只要加least_conn節就可以。

  另外這每個負載伺服器上還可以做如下的配置:
  a、down : 當前的伺服器暫時不參與負載;
  b、max_fails: 允許請求失敗的次數預設為1,當超過最大次數時,返回proxy_next_upstream模組定義的錯誤;
  c、fail_timeout : max_fails次失敗後,暫停的時間;
  d、backup: 其它所有非backup機器down或者忙時候,才開始請求backup機器,可以用做故障轉移。

相關文章