nginx負載均衡

2021-09-23 19:21:32 字數 2990 閱讀 5706

今天我們來學習下有關nginx的負載均衡配置。nginx的負載均衡是通過nginx的upstream模組和proxy_pass反向**來實現的。

說明:有三颱伺服器,前端的a伺服器使用nginx進行負載均衡配置。後端是兩台配置的相同伺服器,以訪問a.ilanni.com這個網域名稱為例。結構圖,如下:

a伺服器對外(公網)開放80埠,b、c伺服器就是兩台配置相同的伺服器。b伺服器開放8080埠,c伺服器開放8090埠。當客戶端訪問a.ilanni.com網域名稱時,a伺服器根據nginx的upstream模組相應策略進行分配客戶端訪問到b伺服器還是c伺服器。

注意b伺服器和c伺服器內容是相同的。但是在此,我們為了看到實驗效果,我在b、c伺服器配置了不同的內容。b伺服器的預設頁面現實的內容為:the server is web1_192.168.1.249:8080。c伺服器的預設頁面現實的內容為:the server is web2_192.168.1.249:8090。如下:

nginx負載均衡的預設是使用輪詢方式進行分配的,而且預設的權重為1,並且權重越大被訪問的機率越大。

我們先配置a伺服器的nginx,如下:

注意上圖中,標記出來的第一部分。其中upstream就是做負載均衡使用的。

;就是我們要訪問的網域名稱,通過proxy_pass反向**到upstream下的伺服器中。

第二部分就是我們要反向**的網域名稱,注意在此我們監聽的是80埠,而且這個server標籤中,我並沒有配置server_name。其實配置server_name也是可以的,不過最後的效果是一樣的,這個是經過測試的。

第三部分,在此我配置的就是乙個虛擬主機。監聽的是8080埠,並且在此我也配置了server_name。這個主要是為了做對比使用的。

我們現在先啟動a伺服器的nginx,並且訪問a.ilanni.com:8080。如下:

可以看到目前a伺服器的nginx已經可以正常訪問了。注意我們在此訪問的是

:8080

。現在開始配置b、c伺服器的nginx,配置內容如下:

b、c伺服器的nginx配置完畢後,我們現在來啟動各自的nginx服務並訪問,如下:

通過上圖,我們可以看到b、c伺服器的nginx已經正常訪問了。那麼我現在來訪問看看能不能達到我們所要的效果。如下:

可以看到我們現在訪問已經反向**到upstream下的b伺服器,並且現在顯示的是b伺服器的內容。

再次重新整理頁面,顯示如下:

重新整理頁面後,你會發現這次顯示的是c伺服器的內容。也說明已經反向**到c伺服器上。

你可以多次重新整理頁面,會發現顯示的內容是b、c伺服器交替出現。

為什麼會是這樣呢?

其實在文章前面,我已經介紹了nginx的upstream負載均衡,在沒有其他配置的情況預設使用的策略是輪詢方式的,而且預設的權重為1。

也就是說:upstream a.ilanni.com

中b、c伺服器的預設權重都是一樣為1。那麼在nginx輪詢時,所以b、c伺服器會交替出現。

如果我們現在把b伺服器的權重設定為5,c伺服器還是使用預設看看實際情況。配置如下:

再次訪問

,首先顯示的還是b伺服器的內容。然後重新整理,你會發現大約大約重新整理了5次左右,才會顯示c伺服器的內容。這就權重的作用,伺服器的權重數值越高,被分配到客戶端的請求次數越多。

注意以上實驗,我們是在a、b、c伺服器是在同乙個區域網,對公網來說只是開放了a伺服器的80埠。如果這三颱伺服器全部是公網ip的話,那就是我們下篇文章要介紹的內容了,有關nginx反向**的使用。

到此,有關nginx的負載均衡我們基本上介紹完畢後。下面在輔助介紹下,nginx的upstream目前支援以下幾種方式的分配:

1)、輪詢(預設) 每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。

2)、weight 指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的情況。設定伺服器的權重,權重數值越高,被分配到客戶端的請求次數越多,預設值為1。

3)、ip_hash 每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問乙個後端伺服器,可以解決session的問題。

4)、fair(第三方) 按後端伺服器的響應時間來分配請求,響應時間短的優先分配。

5)、url_hash(第三方)按訪問url的hash結果來分配請求,使每個url定向到同乙個後端伺服器,後端伺服器為快取時比較有效。

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...