Nginx負載均衡

2021-09-16 19:11:53 字數 3689 閱讀 7430

5、然後修改上面兩個tomcat的預設頁面(為了區分下面到底訪問的是那一台tomcat,隨便改一下即可): 

改完以後,進行訪問,如下圖: 

6、ok,現在我們可以開始配置nginx來實現負載均衡了,其實非常的簡單,只需要配置好nginx的配置檔案即可: 

配置如下(這裡只進行了簡單的配置,實際生產環境可以進行更詳細完善配置):

worker_processes 1;#工作程序的個數,一般與計算機的cpu核數一致

events

keepalive_timeout 65; #長連線超時時間,單位是秒

gzip on;#啟用gizp壓縮

#伺服器的集群

upstream netitcast.com

#當前的nginx的配置

server

error_page 500 502 503 504 /50x.html;

location = /50x.html

}

}核心配置如下: 

到此配置完成,下面開始演示負載均衡。

7、首先,我們啟動nginx: 

8、然後我們即可輸入:localhost/index.jsp檢視執行狀況了

第一次訪問,發現訪問的是tomcat2上的程式: 

然後重新整理,訪問的還是tomcat2上的程式: 

再重新整理,發現變為了tomcat1上的程式: 

再重新整理,發現又變為了tomcat2上的程式: 

到此,我們利用nginx已經實現了負載均衡的tomcat集群。我們不斷的重新整理,發現訪問tomcat2的概率大概是tomcat1的2倍,這是因為我們在nginx中配置的兩台tomcat的權重起的作用,如下圖:

一、內建負載策略

nginx負載均衡是通過upstream模組來實現的,內建實現了三種負載策略,配置還是比較簡單的。官網負載均衡配置說明:

輪循(預設)

nginx根據請求次數,將每個請求均勻分配到每台伺服器

最少連線

將請求分配給連線數最少的伺服器。nginx會統計哪些伺服器的連線數最少。

ip hash

繫結處理請求的伺服器。第一次請求時,根據該客戶端的ip算出乙個hash值,將請求分配到集群中的某一台伺服器上。後面該客戶端的所有請求,都將通過hash演算法,找到之前處理這台客戶端請求的伺服器,然後將請求交給它來處理。

1> 輪循

}# ... 省略其它配置}

proxy_pass http://tomcats:表示將所有請求**到tomcats伺服器組中配置的某一台伺服器上。

upstream模組:配置反向**伺服器組,nginx會根據配置,將請求分發給組裡的某一台伺服器。tomcats是伺服器組的名稱。

upstream模組下的server指令:配置處理請求的伺服器ip或網域名稱,埠可選,不配置預設使用80埠。通過上面的配置,nginx預設將請求依次分配給100,101,102來處理,可以通過修改下面這些引數來改變預設的分配策略:

weight

預設為1,將請求平均分配給每台server

upstream tomcats

上例配置,表示6次請求中,100分配2次,101分配3次,102分配1次

max_fails

預設為1。某台server允許請求失敗的次數,超過最大次數後,在fail_timeout時間內,新的請求將不會分配給這台機器。如果設定為0,nginx會將這台server置為永久無效狀態,然後將請求發給定義了proxy_next_upstream, fastcgi_next_upstream, uwsgi_next_upstream, scgi_next_upstream, and memcached_next_upstream指令來處理這次錯誤的請求。

fail_timeout

預設為10秒。某台server達到max_fails次失敗請求後,在fail_timeout期間內,nginx會認為這台server暫時不可用,不會將請求分配給它

upstream tomcats

192.168.0.100這台機器,如果有3次請求失敗,nginx在15秒內,不會將新的請求分配給它。

backup

備份機,所有伺服器掛了之後才會生效

upstream tomcats

在100和101都掛了之前,102為不可用狀態,不會將請求分配給它。只有當100和101都掛了,102才會被啟用。

down

標識某一台server不可用。可能能通過某些引數動態的啟用它吧,要不真沒啥用。

upstream tomcats

表示101這台server為無效狀態,不會將請求分配給它。

max_conns

限制分配給某台server處理的最大連線數量,超過這個數量,將不會分配新的連線給它。預設為0,表示不限制。注意:1.5.9之後的版本才有這個配置

upstream tomcats

表示最多給100這台server分配1000個請求,如果這台server正在處理1000個請求,nginx將不會分配新的請求給到它。假如有乙個請求處理完了,還剩下999個請求在處理,這時nginx也會將新的請求分配給它。

resolve

將server指令配置的網域名稱,指定網域名稱解析伺服器。需要在http模組下配置resolver指令,指定網域名稱解析服務

表示example.com網域名稱,由10.0.0.1伺服器來負責解析。

upstream模組server指令的其它引數和詳細配置說明,請參考官方文件。

二、第三方負載策略

1> fair

根據伺服器的響應時間來分配請求,響應時間短的優先分配,即負載壓力小的優先會分配。

由於fair模組是第三方提供的,所以在編譯nginx原始碼的時候,需要將fair新增到nginx模組中。

假設我的nginx是通過原始碼安裝的,安裝在/opt/nginx目錄下,而且安裝時沒有新增fair模組

cd /opt

wget

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