1. 程式人生 > >Nginx+Tomcat 配置負載均衡叢集

Nginx+Tomcat 配置負載均衡叢集

一、Hello world

1、前期環境準備

  1. 準備兩個解壓版tomcat,如何同時啟動兩個tomcat,請看我的另一篇文章《一臺機器同時啟動多個tomcat》
  2. nginx官網下載解壓版nginx。
  3. 建立一個簡單的web專案。為了直觀的區分訪問的哪個tomcat,在頁面寫上標記8081、8082。
  4. 分別部署到對應的tomcat下。如圖:

2、配置nginx

進入nginx-1.10.1conf路徑,修改配置檔案nginx.conf

1、配置伺服器組,在http{}節點之間新增upstream配置。(注意不要寫localhost,不然訪問速度會很慢

1234 upstreamnginxDemo{server127.0.0.1:8081;#伺服器地址1server127.0.0.1:8082;#伺服器地址2}

2、修改nginx監聽的埠號80,改為8080。

1234 server{listen8080
;......}

3、在location{}中,利用proxy_pass配置反向代理地址;此處“http://”不能少,後面的地址要和第一步upstream定義的名稱保持一致。

12345 location/{root   html;index  index.html index.htm;proxy_pass http://nginxDemo; #配置方向代理地址}

如下圖:

3、啟動nginx和tomcat,訪問

我是Windows系統,所以直接在nginx-1.10.1目錄下雙擊nginx.exe即可。

可在工作管理員中檢視

最後在瀏覽器輸入地址:http://localhost:8080/nginxDemo/index.jsp,每次訪問就會輪流訪問tomcat了(如果F5重新整理不管用,建議試試滑鼠指標放到位址列,點選Enter鍵)。

到這裡,一個非常簡單的負載均衡就配置完成了,是不是很簡單呢,O(∩_∩)O哈哈~

二、nginx負載均衡策略

1、輪詢(預設)

每個web請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。

1234 upstreamnginxDemo{server127.0.0.1:8081;server127.0.0.1:8082;}

2、最少連結

web請求會被轉發到連線數最少的伺服器上。

12345 upstreamnginxDemo{least_conn;server127.0.0.1:8081;server127.0.0.1:8082;}

3、weight 權重

指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況,weight預設是1。

12345 #伺服器A和伺服器B的訪問比例為:2-1;比如有3個請求,前兩個會訪問A,三個訪問B,其它規則和輪詢一樣。upstreamnginxDemo{server127.0.0.1:8081weight=2;#伺服器Aserver127.0.0.1:8082;#伺服器B}

4、ip_hash

每個請求按訪問ip的hash值分配,這樣同一客戶端連續的Web請求都會被分發到同一伺服器進行處理,可以解決session的問題。當後臺伺服器宕機時,會自動跳轉到其它伺服器。

12345 upstreamnginxDemo{ip_hash;server127.0.0.1:8081weight=2;#伺服器Aserver127.0.0.1:8082;#伺服器B}

基於weight的負載均衡和基於ip_hash的負載均衡可以組合在一起使用。

5、url_hash(第三方)

url_hash是nginx的第三方模組,nginx本身不支援,需要打補丁。

nginx按訪問url的hash結果來分配請求,使每個url定向到同一個後端伺服器,後端伺服器為快取伺服器、檔案伺服器、靜態伺服器時比較有效。缺點是當後端伺服器宕機的時候,url_hash不會自動跳轉的其他快取伺服器,而是返回給使用者一個503錯誤。

12345 upstreamnginxDemo{server127.0.0.1:8081;#伺服器Aserver127.0.0.1:8082;#伺服器Bhash$request_url;}

6、fair(第三方)

按後端伺服器的響應時間來分配請求,響應時間短的優先分配。

12345 upstreamnginxDemo{server127.0.0.1:8081;#伺服器Aserver127.0.0.1:8082;#伺服器Bfair;}

~未完待續~