Nginx實現負載均衡

本篇文章介紹Nginx實現負載均衡,本文使用Nginx和兩個SpringBoot簡單Web應用實現。nginx

1.準備工做。

結合本文場景,須要安裝Nginx和Java環境(運行SpringBoot項目)。算法

1.1 關於Linux系統安裝Nginx能夠參考個人文章---(傳送門)。後端

1.2 因爲只是測試,SpringBoot只是映射了根路徑,端口分別是10001和10002,分別返回demo1和demo2字符串做爲區分。bash

2.Nginx負載均衡的集中方式介紹

2.1 輪詢

輪詢方式是Nginx負載默認的方式,顧名思義,全部請求都按照時間順序分配到不一樣的服務上,若是服務Down掉,能夠自動剔除,以下配置後輪訓10001服務和10002服務。服務器

upstream  dalaoyang-server {
       server    localhost:10001;
       server    localhost:10002;
}
複製代碼

2.2 權重

指定每一個服務的權重比例,weight和訪問比率成正比,一般用於後端服務機器性能不統一,將性能好的分配權重高來發揮服務器最大性能,以下配置後10002服務的訪問比率會是10001服務的二倍。負載均衡

upstream  dalaoyang-server {
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
}
複製代碼

2.3 iphash

每一個請求都根據訪問ip的hash結果分配,通過這樣的處理,每一個訪客固定訪問一個後端服務,以下配置(ip_hash能夠和weight配合使用)。性能

upstream  dalaoyang-server {
       ip_hash; 
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
}
複製代碼

2.4 最少鏈接

將請求分配到鏈接數最少的服務上。測試

upstream  dalaoyang-server {
       least_conn;
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
}
複製代碼

2.5 fair

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

upstream  dalaoyang-server {
       server    localhost:10001 weight=1;
       server    localhost:10002 weight=2;
       fair;  
}
複製代碼

3.Nginx配置

以輪訓爲例,以下是nginx.conf完整代碼。code

worker_processes  1;

events {
    worker_connections  1024;
}


http {
   upstream  dalaoyang-server {
       server    localhost:10001;
       server    localhost:10002;
   }

   server {
       listen       10000;
       server_name  localhost;

       location / {
        proxy_pass http://dalaoyang-server;
        proxy_redirect default;
      }

    }

}
複製代碼

4.測試

重啓nginx,第一次訪問http://localhost:10000如圖所示,

在次訪問如圖所示

若是要修改負載均衡算法修改對應upstream模塊便可。

相關文章
相關標籤/搜索