Nginx + Tomcat 配置負載均衡集群
1、前期環境準備
準備兩個解壓版tomcat,如何同時啟動兩個tomcat,請看我的另一篇文章《一臺機器同時啟動多個tomcat》。
nginx官網下載解壓版nginx。
創建一個簡單的web項目。為了直觀的區分訪問的哪個tomcat,在頁面寫上標記8081、8082。
分別部署到對應的tomcat下。如圖:
2、配置nginx
進入nginx-1.10.1conf路徑,修改配置文件nginx.conf。
1、配置服務器組,在http{}節點之間添加upstream配置。(註意不要寫localhost,不然訪問速度會很慢)
upstream nginxDemo {
server 127.0.0.1:8081; #服務器地址1 server 127.0.0.1:8082; #服務器地址2
}
2、修改nginx監聽的端口號80,改為8080。
server {
listen 8080;
......
}
3、在location{}中,利用proxy_pass配置反向代理地址;此處“http://”不能少,後面的地址要和第一步upstream定義的名稱保持一致。
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掉,能自動剔除。
upstream nginxDemo {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
2、最少鏈接
web請求會被轉發到連接數最少的服務器上。
upstream nginxDemo {
least_conn;
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
3、weight 權重
指定輪詢幾率,weight和訪問比率成正比,用於後端服務器性能不均的情況,weight默認是1。
#服務器A和服務器B的訪問比例為:2-1;比如有3個請求,前兩個會訪問A,三個訪問B,其它規則和輪詢一樣。
upstream nginxDemo {
server 127.0.0.1:8081 weight=2; #服務器A
server 127.0.0.1:8082; #服務器B
}
4、ip_hash
每個請求按訪問ip的hash值分配,這樣同一客戶端連續的Web請求都會被分發到同一服務器進行處理,可以解決session的問題。當後臺服務器宕機時,會自動跳轉到其它服務器。
upstream nginxDemo {
ip_hash;
server 127.0.0.1:8081 weight=2; #服務器A
server 127.0.0.1:8082; #服務器B
}
基於weight的負載均衡和基於ip_hash的負載均衡可以組合在一起使用。
5、url_hash(第三方)
url_hash是nginx的第三方模塊,nginx本身不支持,需要打補丁。
nginx按訪問url的hash結果來分配請求,使每個url定向到同一個後端服務器,後端服務器為緩存服務器、文件服務器、靜態服務器時比較有效。缺點是當後端服務器宕機的時候,url_hash不會自動跳轉的其他緩存服務器,而是返回給用戶一個503錯誤。
upstream nginxDemo {
server 127.0.0.1:8081; #服務器A
server 127.0.0.1:8082; #服務器B
hash $request_url;
}
6、fair(第三方)
按後端服務器的響應時間來分配請求,響應時間短的優先分配。
upstream nginxDemo {
server 127.0.0.1:8081; #服務器A
server 127.0.0.1:8082; #服務器B
fair;
}
Nginx + Tomcat 配置負載均衡集群