詳解如何通過nginx進(jìn)行服務(wù)的負(fù)載均衡
簡單介紹
隨著互聯(lián)網(wǎng)的發(fā)展,業(yè)務(wù)流量越來越大并且業(yè)務(wù)邏輯也越來越復(fù)雜,單臺(tái)服務(wù)器的性能及單點(diǎn)故障問題就凸顯出來了,因此需要多臺(tái)服務(wù)器組成應(yīng)用集群,進(jìn)行性能的水平擴(kuò)展以及避免單點(diǎn)故障的出現(xiàn)。應(yīng)用集群是將同一應(yīng)用部署到多臺(tái)機(jī)器上,組成應(yīng)用集群,接收負(fù)載均衡器分發(fā)的請求,進(jìn)行業(yè)務(wù)處理并返回響應(yīng)數(shù)據(jù)。負(fù)載均衡器可以將用戶請求根據(jù)對應(yīng)的負(fù)載均衡算法分發(fā)到應(yīng)用集群中的一臺(tái)服務(wù)器進(jìn)行處理。
負(fù)載均衡器
我們可以通過nginx作為負(fù)載均衡器,實(shí)現(xiàn)負(fù)載均衡的功能
1.首先我們需要準(zhǔn)備Linux系統(tǒng),并啟動(dòng)nginx服務(wù),并在服務(wù)器上啟動(dòng)兩個(gè)java web的spring boot項(xiàng)目,其中一個(gè)web服務(wù)的端口是8080,另一個(gè)web服務(wù)的端口是8081,并將服務(wù)正常啟動(dòng)
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)目訪問的是那臺(tái)端口的服務(wù):http://服務(wù)器ip地址/study-balance/
本示例中通過訪問時(shí)日志的打印時(shí)間順序可以知道負(fù)載均衡已經(jīng)正常啟動(dò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ā)請求, 同一個(gè)IP發(fā)起的請求, 會(huì)發(fā)轉(zhuǎn)發(fā)到同一個(gè)服務(wù)器上 |
least_conn | 依據(jù)最少連接方式 | 哪個(gè)服務(wù)器當(dāng)前處理的連接少, 請求優(yōu)先轉(zhuǎn)發(fā)到這臺(tái)服務(wù)器 |
url_hash | 依據(jù)url分配方式 | 根據(jù)客戶端請求url的hash值,來分發(fā)請求, 同一個(gè)url請求, 會(huì)發(fā)轉(zhuǎn)發(fā)到同一個(gè)服務(wù)器上 |
fair | 依據(jù)響應(yīng)時(shí)間方式 | 優(yōu)先把請求分發(fā)給處理請求時(shí)間短的服務(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的分配方式,這個(gè)方法確保了相同的客戶端的請求一直發(fā)送到相同的服務(wù)器,以保證session會(huì)話。這樣每個(gè)訪客都固定訪問一個(gè)后端服務(wù)器,可以解決session不能跨服務(wù)器的問題
以上就是詳解如何通過nginx進(jìn)行服務(wù)的負(fù)載均衡的詳細(xì)內(nèi)容,更多關(guān)于nginx負(fù)載均衡的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Nginx 出現(xiàn) 403 Forbidden 最終解決方法
這篇文章給大家介紹了Nginx 出現(xiàn) 403 Forbidden 最終解決方法,下面分步驟給大家介紹的非常詳細(xì),感興趣的的朋友一起看看吧2017-08-08關(guān)于使用Keepalived實(shí)現(xiàn)Nginx的自動(dòng)重啟及雙主熱備高可用問題
這篇文章主要介紹了使用Keepalived實(shí)現(xiàn)Nginx的自動(dòng)重啟及雙主熱備高可用,本文通過幾個(gè)問題解析幫助大家學(xué)習(xí)Keepalived實(shí)現(xiàn)Nginx的自動(dòng)重啟的相關(guān)知識(shí),需要的朋友可以參考下2021-09-09Nginx反向代理一個(gè)80端口下配置多個(gè)微信項(xiàng)目詳解
這篇文章主要介紹了Nginx反向代理一個(gè)80端口下配置多個(gè)微信項(xiàng)目詳解的相關(guān)資料,需要的朋友可以參考下2017-02-02