天天看點

Nginx實作負載均衡1.準備工作。2.Nginx負載均衡的集中方式介紹3.Nginx配置4.測試

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

1.準備工作。

結合本文場景,需要安裝Nginx和Java環境(運作SpringBoot項目)。

1.1 關于Linux系統安裝Nginx可以參考我的文章---(

傳送門

)。

1.2 由于隻是測試,SpringBoot隻是映射了根路徑,端口分别是10001和10002,分别傳回demo1和demo2字元串作為區分。

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

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

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

3.Nginx配置

以輪訓為例,如下是nginx.conf完整代碼。

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子產品即可。

繼續閱讀