使用nginx加載多個tomcat實現session共享(負載均衡)


需要用到:

  nginx 官網地址:http://nginx.org/ 來做反向代理  Windows版本下載地址:http://nginx.org/en/download.html

  tomcat 官網:http://tomcat.apache.org/ 

  memcached 官網:http://memcached.org/ 用memcached實現session共享

  •  tomcat集群

    以我的為例,我用的tomcat版本是 apache-tomcat-7.0.68

  1. 現將tomcat文件夾復制成多份(ps:命名為apache-tomcat-7.0.68_1、apache-tomcat-7.0.68_2……)
  2. 修改端口號,修改conf文件夾下的server.xml配置文件(以apache-tomcat-7.0.68_1為例)

    (1)、第一處端口修改

<!--  修改port端口:18888 兩個tomcat不能重復,端口隨意,別太小-->
<Server port="18888" shutdown="SHUTDOWN">
View Code

          (2)、第二處端口修改

<!-- port="28888" tomcat監聽端口,隨意設置,別太小 -->
<Connector port="28888" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
View Code

    (3)、第三處端口修改

<Connector port="8888" protocol="AJP/1.3" redirectPort="8443" />
View Code

  其他tomcat配置一樣, 不同的tomcat的端口別重復,這樣能保證啟動起來。

  • nginx的安裝與配置

  1、解壓縮包(我的版本是穩定版1.8.1)

  2、打開conf打開nginx.conf進行配置(nginx作為前端反向代理服務器的配置),在#gzip on這句代碼之后加上

<!--根據ip計算將請求分配各那個后端tomcat,許多人誤認為可以解決session問題,其實並不能。  -->
<!--同一機器在多網情況下,路由切換,ip可能不同-->
upstream localhost {
        server localhost:8088 weight=1;
        server localhost:8888 weight=1;
    }
View Code

  可以修改端口號:listen 后面的數字保證端口號不能重復

 

  location的配置:

    3、啟動nginx

    啟動DOS環境,進入nginx的目錄,輸入start nginx 啟動

 

如果更改了nginx.conf文件輸入nginx -s reload 重新加載文件,再輸入nginx -t看文件代碼是否有問題,如出現上圖所示則沒有問題。然后再次start nginx啟動nginx;

  4、驗證配置與測試負載均衡

  首先測試nginx配置是否正確,測試命令:nginx -t  (默認驗證:conf\nginx.conf),也可以指定配置文件路徑。

  其次驗證tomcat,啟動兩個tomcat,查看是否成功啟動。

  這里我在tomcat下面布置了項目MyWebTest,啟動tomcat后在瀏覽器輸入地址,顯示如下圖:

  

  最后驗證配置負載均衡設置,輸入地址:http://localhost:86/MyWebTest/index.jsp,出現如下兩種情況:

至此window下nginx+tomcat負載均衡配置結束,關於tomcat Session的問題通常是采用memcached;如果tomcat過多不建議session同步,server間相互同步session很耗資源,高並發環境容易引起Session風暴。請根據自己應用情況合理采納session解決方案。

  • memcached的配置

  1、Memcached配置需要下載以下jar包並放在tomcat的lib目錄下

  

   2、配置tomcat

  在tomcat中conf目錄下的context.xml,在<Context>標簽中加入以下代碼即可

<!--n1:localhost:11211中的11211與memcached端口號一致(它的默認端口號為11211)-->
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"   
    memcachedNodes="n1:localhost:11211"   
    requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"   
    sessionBackupAsync="false"   
    sessionBackupTimeout="100"   
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"   
    copyCollectionsForSerialization="false" />
View Code

   3、memcached的下載安裝

    (1)如果你的機器是windows系統,需要從網上下載一個windows版本的

    (2)解壓memcached安裝包,啟動DOS環境,進入memcached的目錄,輸入memcached.exe -d install命令安裝memcached

    

    (3)、然后輸入memcached.exe -s start啟動memcached

    

    4、驗證是否成功,session是否共享

    以下是我的部分測試代碼:

    

     輸入地址:http://localhost:86/MyWebTest/index.jsp查看是否達到預期效果。

 

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM