本篇文章介紹Nginx實現負載均衡,本文使用Nginx和兩個SpringBoot簡單Web應用實現。nginx
結合本文場景,須要安裝Nginx和Java環境(運行SpringBoot項目)。算法
1.1 關於Linux系統安裝Nginx能夠參考個人文章---(傳送門)。後端
1.2 因爲只是測試,SpringBoot只是映射了根路徑,端口分別是10001和10002,分別返回demo1和demo2字符串做爲區分。bash
輪詢方式是Nginx負載默認的方式,顧名思義,全部請求都按照時間順序分配到不一樣的服務上,若是服務Down掉,能夠自動剔除,以下配置後輪訓10001服務和10002服務。服務器
upstream dalaoyang-server {
server localhost:10001;
server localhost:10002;
}
複製代碼
指定每一個服務的權重比例,weight和訪問比率成正比,一般用於後端服務機器性能不統一,將性能好的分配權重高來發揮服務器最大性能,以下配置後10002服務的訪問比率會是10001服務的二倍。負載均衡
upstream dalaoyang-server {
server localhost:10001 weight=1;
server localhost:10002 weight=2;
}
複製代碼
每一個請求都根據訪問ip的hash結果分配,通過這樣的處理,每一個訪客固定訪問一個後端服務,以下配置(ip_hash能夠和weight配合使用)。性能
upstream dalaoyang-server {
ip_hash;
server localhost:10001 weight=1;
server localhost:10002 weight=2;
}
複製代碼
將請求分配到鏈接數最少的服務上。測試
upstream dalaoyang-server {
least_conn;
server localhost:10001 weight=1;
server localhost:10002 weight=2;
}
複製代碼
按後端服務器的響應時間來分配請求,響應時間短的優先分配。spa
upstream dalaoyang-server {
server localhost:10001 weight=1;
server localhost:10002 weight=2;
fair;
}
複製代碼
以輪訓爲例,以下是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;
}
}
}
複製代碼
重啓nginx,第一次訪問http://localhost:10000如圖所示,
在次訪問如圖所示
若是要修改負載均衡算法修改對應upstream模塊便可。