經過Nginx+tomcat+redis實現反向代理 、負載均衡及session同步

一直對於負載均衡比較陌生,今天嘗試着去了解了一下,並作了一個小的實驗,對於這個概念有一些認識,在此作一個簡單的總結html

什麼是負載均衡nginx

      負載均衡,英文 名稱爲Load Balance,指由多臺服務器以對稱的方式組成一個服務器集合,每臺服務器都具備等價的地位,均可以單獨對外提供服務而無須其餘服務器的輔助。經過某種 負載分擔技術,將外部發送來的請求均勻分配到對稱結構中的某一臺服務器上,而接收到請求的服務器獨立地迴應客戶的請求。負載均衡可以平均分配客戶請求到服 務器陣列,藉此提供快速獲取重要數據,解決大量併發訪問服務問題,這種集羣技術能夠用最少的投資得到接近於大型主機的性能。web

 

1.在本機準備2個tomcat 並修改端口號,避免啓動出現衝突redis

 

2.新建一個簡單的web項目,放到tomcat的webapps下瀏覽器

分別啓動兩個tomcats 能夠訪問到對應得Web服務,頁面內容有所區別 爲了區分不一樣的服務器tomcat

 

 

3.下載一個nginx服務器  http://www.pcre.org/服務器

直接解壓後 不須要安裝。接下去咱們打開cmd,進入nginx的目錄下,輸入start nginx。session

 

 

咱們能夠看到一個窗口一閃而過,這樣nginx就已經被開啓了,咱們在任務管理器中能夠找到它的進程。併發

如今咱們在瀏覽器中輸入localhost。能夠看到出現一個頁面。app

 

 

4.以前咱們是直接訪問tomcat服務器,如今我想經過nginx訪問tomcat,這個須要去修改nginx的核心配置文件,在其目錄下的conf文件夾下的nginx.conf文件

咱們就知道咱們須要修改的文件中的server部分,這是它原有的代碼,我刪除了它註釋部分。如今咱們就能明白爲何輸入localhost,

它訪問的是它歡迎頁面即index.html。

下面咱們對這段代碼進行一些小小修改。就是將請求轉向咱們定義的服務器。

 

 

隨後在cmd中輸入命令nginx -s reload便可重啓nginx。

 

如今咱們實現了nginx的反向代理!!!

 

 

 

接下了我嘗試着經過nginx實現負載均衡

 

重啓一下nginx 輸入對應的地址

 

反覆刷會出現兩個tomcat來回切,切換的頻率由weigth來決定

 

 

 5 session 不一樣步問題

作一個簡單的測試,在咱們寫好的web工程頁面作以下修改:

 

而後再訪問

發現session不同,session 丟失了,這他媽好扯淡,這樣的負載均衡有bug啊

而後查了一些資料後發現能夠配redis使用,解決這個問題,

redis就是一個大大的Map,在內存中維護的。

 

 5 用redis共享session

將以下幾個jar拷貝到${TOMCAT_HOME}/lib下

tomcat-redis-session-manager-VERSION.jar 
jedis-2.5.2.jar 
commons-pool2-2.2.jar

備註:jar已上傳到博客園中,有須要的點擊下載

配置tomcat
編輯${TOMCAT_HOME}/conf/context.xml,在context中加入

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
       host="localhost"
       port="6379"
       database="0"
       maxInactiveInterval="60" />

其中host和port爲redis的ip和端口

至此配置完成,tomcat會使用redis來託管session。

 

最後重啓tomcat 訪問驗證

 session 不一樣步的問題解決了!!!

 

至此完成了Nginx+tomcat+redis實現反向代理 、負載均衡及session同步,此文記錄下個人實踐過程,若有錯誤不足之處歡迎大神指點,不喜勿噴。

相關文章
相關標籤/搜索