詳解如何通過nginx進(jìn)行服務(wù)的負(fù)載均衡
簡單介紹
隨著互聯(lián)網(wǎng)的發(fā)展,業(yè)務(wù)流量越來越大并且業(yè)務(wù)邏輯也越來越復(fù)雜,單臺服務(wù)器的性能及單點(diǎn)故障問題就凸顯出來了,因此需要多臺服務(wù)器組成應(yīng)用集群,進(jìn)行性能的水平擴(kuò)展以及避免單點(diǎn)故障的出現(xiàn)。應(yīng)用集群是將同一應(yīng)用部署到多臺機(jī)器上,組成應(yīng)用集群,接收負(fù)載均衡器分發(fā)的請求,進(jìn)行業(yè)務(wù)處理并返回響應(yīng)數(shù)據(jù)。負(fù)載均衡器可以將用戶請求根據(jù)對應(yīng)的負(fù)載均衡算法分發(fā)到應(yīng)用集群中的一臺服務(wù)器進(jìn)行處理。
負(fù)載均衡器
我們可以通過nginx作為負(fù)載均衡器,實(shí)現(xiàn)負(fù)載均衡的功能
1.首先我們需要準(zhǔn)備Linux系統(tǒng),并啟動nginx服務(wù),并在服務(wù)器上啟動兩個java web的spring boot項(xiàng)目,其中一個web服務(wù)的端口是8080,另一個web服務(wù)的端口是8081,并將服務(wù)正常啟動




2.在nginx中配置負(fù)載均衡器
打開nginx的配置文件nginx.conf并增加如下配置信息
# upstream指令可以定義一組服務(wù)器
upstream study-balance-server {
server 192.168.xxx.xxx:8080;
server 192.168.xxx.xxx:8081;
}
server {
location /study-balance/ {
# 反向代理配置,將請求轉(zhuǎn)發(fā)到指定的服務(wù)
proxy_pass http://study-balance-server;
}
}
3.重新加載nginx配置文件
sudo ./nginx -t sudo ./nginx -s reload
4.瀏覽器測試訪問
訪問查看web項(xiàng)目的日志信息或者其他標(biāo)記可以區(qū)分當(dāng)前項(xiàng)目訪問的是那臺端口的服務(wù):http://服務(wù)器ip地址/study-balance/

本示例中通過訪問時日志的打印時間順序可以知道負(fù)載均衡已經(jīng)正常啟動
負(fù)載均衡的策略
1.nginx默認(rèn)策略是輪詢,詳細(xì)信息如下
| 名稱 | 說明 | 特點(diǎn) |
|---|---|---|
| 輪詢 | 默認(rèn)方式 | |
| weight | 權(quán)重方式 | 根據(jù)權(quán)重分發(fā)請求,權(quán)重大的分配到請求的概率大 |
| ip_hash | 依據(jù)ip分配方式 | 根據(jù)客戶端請求的IP地址計(jì)算hash值, 根據(jù)hash值來分發(fā)請求, 同一個IP發(fā)起的請求, 會發(fā)轉(zhuǎn)發(fā)到同一個服務(wù)器上 |
| least_conn | 依據(jù)最少連接方式 | 哪個服務(wù)器當(dāng)前處理的連接少, 請求優(yōu)先轉(zhuǎn)發(fā)到這臺服務(wù)器 |
| url_hash | 依據(jù)url分配方式 | 根據(jù)客戶端請求url的hash值,來分發(fā)請求, 同一個url請求, 會發(fā)轉(zhuǎn)發(fā)到同一個服務(wù)器上 |
| fair | 依據(jù)響應(yīng)時間方式 | 優(yōu)先把請求分發(fā)給處理請求時間短的服務(wù)器 |
2.示例權(quán)重配置
# upstream指令可以定義一組服務(wù)器
upstream study-balance-server {
server 192.168.xxx.xxx:8080 weight=10;
server 192.168.xxx.xxx:8081 weight=5;
}配置的weight權(quán)重是相對的,在上述的配置中,效果就是在大數(shù)據(jù)量的請求下,最終8080接收的請求數(shù)是8081的兩倍
3.示例依據(jù)ip分配方式
# upstream指令可以定義一組服務(wù)器
upstream study-balance-server {
ip_hash;
server 192.168.xxx.xxx:8080;
server 192.168.xxx.xxx:8081;
}指定負(fù)載均衡器按照基于客戶端IP的分配方式,這個方法確保了相同的客戶端的請求一直發(fā)送到相同的服務(wù)器,以保證session會話。這樣每個訪客都固定訪問一個后端服務(wù)器,可以解決session不能跨服務(wù)器的問題
以上就是詳解如何通過nginx進(jìn)行服務(wù)的負(fù)載均衡的詳細(xì)內(nèi)容,更多關(guān)于nginx負(fù)載均衡的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
ConfigMap掛載與Subpath在Nginx容器中的應(yīng)用小結(jié)
configmap可以通過ENV環(huán)境變量和文件兩種方式掛載到容器中,修改configmap后容器中對應(yīng)的ENV環(huán)境變量不會更新,將配置文件nginx.conf以configmap文件的方式掛載到容器中,本文介紹ConfigMap掛載與Subpath在Nginx容器中的應(yīng)用小結(jié),感興趣的朋友一起看看吧2024-03-03
Docker Nginx容器和Tomcat容器實(shí)現(xiàn)負(fù)載均衡與動靜分離操作
這篇文章主要介紹了Docker Nginx容器和Tomcat容器實(shí)現(xiàn)負(fù)載均衡與動靜分離操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
基于nginx的靜態(tài)網(wǎng)頁部署的實(shí)現(xiàn)
這篇文章主要介紹了基于nginx的靜態(tài)網(wǎng)頁部署的實(shí)現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06
Nginx 解決WebApi跨域二次請求以及Vue單頁面的問題
下面小編就為大家分享一篇Nginx 解決WebApi跨域二次請求以及Vue單頁面的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
配置Nginx出現(xiàn)403(Forbidden)靜態(tài)文件加載不出來的解決方法
本文主要介紹了配置Nginx出現(xiàn)403(Forbidden)靜態(tài)文件加載不出來的解決方法,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12

