1. 程式人生 > >Nginx + Tomcat 配置負載均衡集群簡單實例

Nginx + Tomcat 配置負載均衡集群簡單實例

hash weight 用戶 index 文件服務器 修改配置文件 ads 配置文件 ace

一、Hello world

1、前期環境準備

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

?技術分享圖片技術分享圖片

2、配置nginx

進入nginx-1.10.1\conf路徑,修改配置文件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;
    }
轉自https://my.oschina.net/bgq365/blog/870569

Nginx + Tomcat 配置負載均衡集群簡單實例