Nginx負載均衡配置及演算法詳解

2022-09-11 18:09:10 字數 2681 閱讀 6689

筆記

專欄收錄該內容

36 篇文章1 訂閱

訂閱專欄

如果你的nginx伺服器給2臺web伺服器做**,負載均衡演算法採用輪詢,那麼當你的一台機器web程式關閉造成web不能訪問,那麼nginx伺服器分發請求還是會給這台不能訪問的web伺服器,如果這裡的響應連線時間過長,就會導致客戶端的頁面一直在等待響應,對使用者來說體驗就打打折扣,這裡我們怎麼避免這樣的情況發生呢。這裡我配張圖來說明下問題。

如果負載均衡中其中web2發生這樣的情況,nginx首先會去web1請求,但是nginx在配置不當的情況下會繼續分發請求到web2,然後等待web2響應,直到我們的響應時間超時,才會把請求重新分發給web1,這裡的響應時間如果過長,使用者等待的時間就會越長。

三颱裝有nginx的虛擬機器,一台做反向**伺服器,另外兩台做真實伺服器,模擬負載均衡。

192.168.13.129

#反向**伺服器

192.168.13.133

#真實伺服器

192.168.13.139 #真實伺服器

#我們在反向**伺服器上(192.168.13.139

)進行如下配置:

[root@real-server ~]# vim /etc/nginx/conf.d/default.conf

#清空並新增以下內容

upstream test_server

server

}[root@server ~]# nginx -t

[root@server ~]# nginx -s reload

第一台真實伺服器配置(192.168.13.133

):[root@real-server ~]# vim /etc/nginx/conf.d/default.conf

清空並新增以下內容

server

}[root@real-server ~]# nginx -t

[root@real-server ~]# nginx -s reload

#建立目錄和檔案並寫入測試資料

[root@real-server ~]# mkdir -p /usr/share/nginx/html/login

[root@real-server ~]# echo "this is first real-server" > /usr/share/nginx/html/login/index.html

第二台真實伺服器配置(192.168.13.139

):[root@real-server ~]# vim /etc/nginx/conf.d/default.conf

清空並新增以下內容

server

}[root@real-server ~]# nginx -t

[root@real-server ~]# nginx -s reload

#建立目錄和檔案並寫入測試資料

[root@real-server ~]# mkdir -p /usr/share/nginx/html/login

[root@real-server ~]# echo "this is second real-server" > /usr/share/nginx/html/login/index.html

測試:開啟網頁輸入反向**伺服器ip:

重新整理一下

upstream 支援4種負載均衡排程演算法:

a、輪詢(預設):每個請求按時間順序逐一分配到不同的後端伺服器;

b、ip_hash:每個請求按訪問ip的hash結果分配,同乙個ip客戶端固定訪問乙個後端伺服器。可以保證來自同一ip的請求被打到固定的機器上,可以解決session問題。

c、url_hash:按訪問url的hash結果來分配請求,使每個url定向到同乙個後端伺服器。後台伺服器為快取的時候效率。

配置例項

upstream test_server
然後再次訪問方向**伺服器ip

2.輪詢:nginx預設就是輪詢其權重都預設為1,伺服器的訪問順序就是第一台伺服器,第二台,第一台,第二台然後再次迴圈(因為預設是輪詢,所以不需要加任何引數)

3、加權輪詢:跟據配置的權重的大小而分發給不同伺服器不同數量的請求。如果不設定,則預設為1。

upstream test_server
4、ip_hash:nginx會讓相同的客戶端ip請求相同的伺服器。

upstream test_server
5、nginx負載均衡配置狀態引數

down,表示當前的server暫時不參與負載均衡。

backup,預留的備份機器。當其他所有的非backup機器出現故障或者忙的時候,才會請求backup機器,因此這台機器的壓力最輕。

max_fails,允許請求失敗的次數,預設為1。當超過最大次數時,返回錯誤。

fail_timeout,在經歷了max_fails次失敗後,暫停服務的時間單位秒。max_fails可以和fail_timeout一起使用。

upstream test_server

nginx負載均衡及配置

實現伺服器集群主要就是為了負載均衡 load balance 有兩台或者以上的伺服器或者站點提供服務,服務將來自客戶端的請求,靠某種演算法,去盡量平分請求到集群的機器中,從而避免一台伺服器因為負載太高而出現故障,而即使其中某個機器出現故障,負載均衡會自動規避選擇,使得使用者也能正常訪問服務。好處 減...

nginx安裝及負載均衡配置

nginx engine x 是乙個高效能的 http 和 反向 伺服器,也是乙個 imap pop3 smtp 伺服器。nginx 是由 igor sysoev 為俄羅斯訪問量第二的 rambler.ru 站點開發的,第乙個公開版本0.1.0發布於2004年10月4日。其將源 以類bsd許可證的形...

nginx負載均衡配置及測試

the remote server ip is the nginx server ip is 2 啟動兩個tomcat,進行訪問測試 宿主機中的 http localhost 8080 test.jsp ubuntu14.04中的 http localhost 8080 test.jsp 3 在ng...