本篇文章介紹Nginx實(shí)現(xiàn)負(fù)載均衡,本文使用Nginx和兩個(gè)SpringBoot簡單Web應(yīng)用實(shí)現(xiàn)。
1.準(zhǔn)備工作。
結(jié)合本文場景,需要安裝Nginx和Java環(huán)境(運(yùn)行SpringBoot項(xiàng)目)。
1.1 關(guān)于Linux系統(tǒng)安裝Nginx可以參考我的文章---(傳送門)。
1.2 由于只是測試,SpringBoot只是映射了根路徑,端口分別是10001和10002,分別返回demo1和demo2字符串作為區(qū)分。
2.Nginx負(fù)載均衡的集中方式介紹
2.1 輪詢
輪詢方式是Nginx負(fù)載默認(rèn)的方式,顧名思義,所有請(qǐng)求都按照時(shí)間順序分配到不同的服務(wù)上,如果服務(wù)Down掉,可以自動(dòng)剔除,如下配置后輪訓(xùn)10001服務(wù)和10002服務(wù)。
upstream dalaoyang-server {
server localhost:10001;
server localhost:10002;
}
2.2 權(quán)重
指定每個(gè)服務(wù)的權(quán)重比例,weight和訪問比率成正比,通常用于后端服務(wù)機(jī)器性能不統(tǒng)一,將性能好的分配權(quán)重高來發(fā)揮服務(wù)器最大性能,如下配置后10002服務(wù)的訪問比率會(huì)是10001服務(wù)的二倍。
upstream dalaoyang-server {
server localhost:10001 weight=1;
server localhost:10002 weight=2;
}
2.3 iphash
每個(gè)請(qǐng)求都根據(jù)訪問ip的hash結(jié)果分配,經(jīng)過這樣的處理,每個(gè)訪客固定訪問一個(gè)后端服務(wù),如下配置(ip_hash可以和weight配合使用)。
upstream dalaoyang-server {
ip_hash;
server localhost:10001 weight=1;
server localhost:10002 weight=2;
}
2.4 最少連接
將請(qǐng)求分配到連接數(shù)最少的服務(wù)上。
upstream dalaoyang-server {
least_conn;
server localhost:10001 weight=1;
server localhost:10002 weight=2;
}
2.5 fair
按后端服務(wù)器的響應(yīng)時(shí)間來分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配。
upstream dalaoyang-server {
server localhost:10001 weight=1;
server localhost:10002 weight=2;
fair;
}
3.Nginx配置
以輪訓(xùn)為例,如下是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如圖所示,
在次訪問如圖所示
如果要修改負(fù)載均衡算法修改對(duì)應(yīng)upstream模塊即可。