日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多台tomcat服务的session共享 memcached与redis

發布時間:2025/3/16 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多台tomcat服务的session共享 memcached与redis 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于tomcat的并發數瓶頸問題,可以說使用tomcat的web應用,幾乎都存在session不同步問題。

借鑒網上的資料,我也找時間實驗一把。

文中涉及的軟件下載和安裝,一一略過,想必大家也沒必要看。

注:本文不對memcached和redis做任何口水討論,望各個網友自行問谷歌和度娘。

(個人愚見,它們作為一個軟件,能獲得各自眾多支持者,想必它們自然有各自的優點,重點還是從實際需要出發,選擇合適自己的東東。)


一、nginx+tomcat+memcached? (依賴包下載)

1.memcached配置:(v1.4.13)

節點1(192.168.159.131:11444)

節點2(192.168.159.131:11333)

2.tomcat配置

tomcat1(192.168.159.128:8081)

tomcat2(192.168.159.128:8082)

3.nginx安裝在192.168.159.131。

?????? 首先,是配置tomcat,使其將session保存到memcached上。有兩種方法:

方法一:在server.xml中配置。

找到host節點,加入

[html]?view plaincopy
  • <Context?docBase="/var/www/html"?path="">???
  • ????<Manager?className="de.javakaffee.web.msm.MemcachedBackupSessionManager"???
  • ????????????memcachedNodes="n1:192.168.159.131:11444?n2:192.168.159.131:11333"???
  • ????????????requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"???
  • ????????????sessionBackupAsync="false"?sessionBackupTimeout="3000"???
  • ????????????transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"???
  • ????????????copyCollectionsForSerialization="false"?/>??
  • </Context>??
  • 方法二:在context.xml中配置。

    找到Context節點,加入

    [html]?view plaincopy
  • <Manager?className="de.javakaffee.web.msm.MemcachedBackupSessionManager"???
  • ????????memcachedNodes="n1:192.168.159.131:11444"???
  • ????????requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"???
  • ????????sessionBackupAsync="false"?sessionBackupTimeout="3000"???
  • ????????transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"???
  • ????????copyCollectionsForSerialization="false"?/>??


  • ?????? 其次,配置nginx,用于測試session保持共享。

    [html]?view plaincopy
  • upstream??xxy.com??{??
  • ??????server???192.168.159.128:8081?;??
  • ??????server???192.168.159.128:8082?;??
  • }??
  • ??
  • log_format??www_xy_com??'$remote_addr?-?$remote_user?[$time_local]?$request?'??
  • ???????????????'"$status"?$body_bytes_sent?"$http_referer"'???
  • ???????????????'"$http_user_agent"?"$http_x_forwarded_for"';??
  • ??
  • server??
  • {??
  • ??????listen??80;??
  • ??????server_name??xxy.com;??
  • ??
  • ??????location?/?{??
  • ???????????????proxy_pass????????http://xxy.com;??
  • ???????????????proxy_set_header???Host?????????????$host;??
  • ???????????????proxy_set_header???X-Real-IP????????$remote_addr;??
  • ???????????????proxy_set_header???X-Forwarded-For??$proxy_add_x_forwarded_for;??
  • ??????}??
  • ??
  • ??????access_log??/data/base_files/logs/www.xy.log??www_xy_com;??
  • }??
  • 最后,將你的應用放到兩個tomcat中,并依次啟動memcached、tomcat、nginx。訪問你的nginx,可以發現兩個tomcat中的session可以保持共享了。


    二、nginx+tomcat+redis?? (依賴包下載)

    1.redis配置(192.168.159.131:16300)(v2.8.3)

    2.tomcat配置

    tomcat1(192.168.159.130:8081)

    tomcat2(192.168.159.130:8082)

    3.nginx安裝在192.168.159.131。

    ?????? 首先,是配置tomcat,使其將session保存到redis上。有兩種方法,也是在server.xml或context.xml中配置,不同的是memcached只需要添加一個manager標簽,而redis需要增加的內容如下:(注意:valve標簽一定要在manager前面。

    [html]?view plaincopy
  • <Valve?className="com.radiadesign.catalina.session.RedisSessionHandlerValve"?/>??
  • <Manager?className="com.radiadesign.catalina.session.RedisSessionManager"??
  • ?????????host="192.168.159.131"??
  • ?????????port="16300"???
  • ?????????database="0"???
  • ?????????maxInactiveInterval="60"/>??

  • 其次,配置nginx,用于測試session保持共享。

    [html]?view plaincopy
  • upstream??redis.xxy.com??{??
  • ??????server???192.168.159.130:8081;??
  • ??????server???192.168.159.130:8082;??
  • }??
  • ??
  • log_format??www_xy_com??'$remote_addr?-?$remote_user?[$time_local]?$request?'??
  • ???????????????'"$status"?$body_bytes_sent?"$http_referer"'???
  • ???????????????'"$http_user_agent"?"$http_x_forwarded_for"';??
  • ??
  • server??
  • {??
  • ??????listen??80;??
  • ??????server_name?redis.xxy.com;???
  • ??
  • ??????location?/?{??
  • ???????????????proxy_pass????????http://redis.xxy.com;??
  • ???????????????proxy_set_header???Host?????????????$host;??
  • ???????????????proxy_set_header???X-Real-IP????????$remote_addr;??
  • ???????????????proxy_set_header???X-Forwarded-For??$proxy_add_x_forwarded_for;??
  • ??????}??
  • ??
  • ??????access_log??/data/base_files/logs/redis.xxy.log??www_xy_com;??
  • }??


  • 最后,將你的應用放到兩個tomcat中,并依次啟動redis、tomcat、nginx。訪問你的nginx,可以發現兩個tomcat中的session可以保持共享了。


    上面文章中,有一點需要說明的是:

    如果tomcat配置中,將manager放在server.xml中,那么使用maven做熱部署時,會發生失敗。所以,本人推薦放在context.xml中。


    總結

    以上是生活随笔為你收集整理的多台tomcat服务的session共享 memcached与redis的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。