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