1. 程式人生 > >使用nginx載入多個tomcat實現session共享(負載均衡)

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

需要用到:

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

          (2)、第二處埠修改

<!-- port="28888" tomcat監聽埠,隨意設定,別太小 -->
<Connector port="28888" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

    (3)、第三處埠修改

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

  其他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;
    }

複製程式碼

  可以修改埠號: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後在瀏覽器輸入地址,顯示如下圖:

  

至此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>標籤中加入以下程式碼即可

 View Code

   3、memcached的下載安裝

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

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

    

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

    

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

    以下是我的部分測試程式碼: