本篇文章介紹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模組即可。