Nginx負載均衡

2021-08-07 17:13:27 字數 1167 閱讀 4898

一、nginx的反向**

在沒有反向**時,當我有多個ip擁有相同的服務時,訪問相同的服務我需要明確指出我要訪問的ip以及埠。

例如:我分別在192.168.0.1:8001、192.168.0.1:8002、192.168.0.2:8001、192.168.0.2:8002上部署了/login

當我需要呼叫login服務時,我需要明確寫明

這樣的方式對於使用者訪問login服務會十分不友好。

於是,nginx的反向**就好像乙個使用者與目標之間的**,當使用者訪問目標位址時,輸入nginx的ip以及埠(預設80)/login後,nginx則會指向其中的一台伺服器的login服務

二、nginx的負載均衡

負載均衡是在反向**的基礎上加了一些策略,通俗來講就是當我的nginx可以指向多個伺服器的時候,nginx該指向哪個伺服器。

負載均衡的目的在於解決某個伺服器壓力過大,對使用者訪問所帶來的負載進行分流,將請求**給乙個相對空閒的伺服器上。

三、nginx的分配策略

(1)輪詢方式(預設):每個請求按照時間順序逐個分配給伺服器,當某一伺服器掛了會從nginx的分配列表裡自動剔除

(2)指定權重:在nginx.conf中配置每個server的weight,weight值越大,分配到該server的可能性越大

(3)ip繫結:每個請求按照ip的hash結果進行分配,ip所訪問的伺服器是固定。(注:這種方式可以解決使用者訪問伺服器session丟失問題)

四、缺陷

場景(非ip繫結策略):使用者a通過nginx訪問了1號伺服器,所有的session都存入了1號伺服器,當使用者a再次通過nginx訪問時,nginx可能會將使用者a分配給2號伺服器上,這時使用者a在2號伺服器上沒有之前訪問的session,導致session丟失。

場景(ip繫結策略):由於根據ip進行分配,當某乙個使用者量集中於某一類ip時,會導致某個伺服器負載過重。

五、session丟失解決方案

(1)session複製:將新增的session複製到其他各個伺服器上

(2)會話保持

(3)session共享:將伺服器獲得的session存入redis快取資料庫中,各伺服器可通過redis資料庫獲取session

實戰內容詳見:例項——session共享解決方案(docker+nginx+spring boot+spring session + redis)

nginx 負載均衡 Nginx負載均衡策略

nginx提供的負載均衡策略有2種 內建策略和擴充套件策略。內建策略為輪詢 預設 加權輪詢,ip hash,第三方。upstream mysvr1 輪詢 每個請求按照時間順序逐一的分配到每乙個後台伺服器上。如果某台伺服器宕機了,將會自動的剔除宕機的服務。nginx預設就是輪詢其權重都預設為1,伺服器...

nginx負載均衡

nginx 的 upstream目前支援 4 種方式的分配 1 輪詢 預設 每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。2 weight 指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。3 ip hash 每個請求按訪問ip的hash...

nginx負載均衡

nginx s stop quick exit nginx s quit graceful quit nginx s reload changing configuration,starting a new worker,quitting an old worker gracefully nginx...