本篇文章介紹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子產品即可。