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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx+Tomcat+Memcached实现tomcat集群和session共享

發(fā)布時間:2023/12/15 Nginx 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx+Tomcat+Memcached实现tomcat集群和session共享 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Nginx+Tomcat+Memcached實現(xiàn)tomcat集群和session共享


[http://blog.csdn.net/shimiso/article/details/8979044]

為什么要持久化SESSION?
在客戶端每個用戶的Session對象存在Servlet容器中,如果Tomcat服務(wù)器重起/當(dāng)機的話該session就會丟失,而客戶端的操作應(yīng)為session的丟失而造成數(shù)據(jù)丟失,而且當(dāng)前用戶訪問量巨大,每個用戶的Session里存放大量的數(shù)據(jù)的話,那么就很占用服務(wù)器大量的內(nèi)存,從而是服務(wù)器的性能受到影響。


有關(guān)集群幾種session同步方案請參考 http://blog.csdn.net/shimiso/article/details/8978922


有關(guān)Nginx 介紹和使用請參考 http://blog.csdn.net/shimiso/article/details/8690897

Note: 請使用tomcat7版本,tomcat6版本會出錯。

一、Nginx部分
1.1、Nginx介紹
  Nginx是俄羅斯人編寫的十分輕量級的HTTP服務(wù)器,Nginx,它的發(fā)音為“engine X”, 是一個高性能的HTTP和反向代理服務(wù)器,同時也是一個IMAP/POP3/SMTP 代理服務(wù)器。
  Nginx是由俄羅斯人 Igor Sysoev為俄羅斯訪問量第二的 Rambler.ru站點開發(fā)的,它已經(jīng)在該站點運行超過兩年半了。Igor Sysoev在建立的項目時,使用基于BSD許可。
  據(jù)說他當(dāng)初是F5的成員之一,英文主頁:http://nginx.net 。
1.2、Nginx優(yōu)點
  Nginx 是一個很牛的高性能Web和反向代理服務(wù)器, 它具有有很多非常優(yōu)越的特性:?
  在高連接并發(fā)的情況下,Nginx是Apache服務(wù)器不錯的替代品: Nginx在美國是做虛擬主機生意的老板們經(jīng)常選擇的軟件平臺之一. 能夠支持高達(dá) 50,000 個并發(fā)連接數(shù)的響應(yīng), 感謝Nginx為我們選擇了 epoll and kqueue作為開發(fā)模型.?
  Nginx作為負(fù)載均衡服務(wù)器: Nginx 既可以在內(nèi)部直接支持 Rails 和 PHP 程序?qū)ν膺M行服務(wù), 也可以支持作為 HTTP代理服務(wù)器對外進行服務(wù). Nginx采用C進行編寫, 不論是系統(tǒng)資源開銷還是CPU使用效率都比 Perlbal 要好很多.?
  作為郵件代理服務(wù)器: Nginx 同時也是一個非常優(yōu)秀的郵件代理服務(wù)器(最早開發(fā)這個產(chǎn)品的目的之一也是作為郵件代理服務(wù)器), Last.fm 描述了成功并且美妙的使用經(jīng)驗.?
  Nginx 是一個 安裝非常的簡單 , 配置文件 非常簡潔(還能夠支持perl語法), Bugs非常少的服務(wù)器: Nginx 啟動特別容易, 并且?guī)缀蹩梢宰龅?*24不間斷運行,即使運行數(shù)個月也不需要重新啟動. 你還能夠 不間斷服務(wù)的情況下進行軟件版本的升級.
1.3、Nginx安裝
  到官網(wǎng)http://nginx.org/en/download.html下載最新的穩(wěn)定版本,目前是0.7.67。
[html] view plaincopy
[root@localhost ~]# wget http://nginx.org/download/nginx-0.7.67.tar.gz ? ? ? ? ? ?
--2010-09-24 14:48:12-- ?http://nginx.org/download/nginx-0.7.67.tar.gz ? ? ? ? ? ?
Resolving nginx.org... 81.19.68.137 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
Connecting to nginx.org|81.19.68.137|:80... connected. ? ? ? ? ? ? ? ? ? ? ? ? ? ?
HTTP request sent, awaiting response... 200 OK ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Length: 608462 (594K) [application/octet-stream] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Saving to: `nginx-0.7.67.tar.gz' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
100%[<========================================>] 608,462 ? ? 44.5K/s ? in 18s ? ? ??
2010-09-24 14:48:32 (32.8 KB/s) - `nginx-0.7.67.tar.gz' saved [608462/608462] ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
[root@localhost ~]# tar -zxvf nginx-0.7.67.tar.gz ? ?/解壓壓縮文件 ? ? ? ? ? ? ? ?
[root@localhost ~]# cd nginx-0.7.67 ? ? ? ? ? ? ? ? ?/進入安裝文件目錄 ? ? ? ? ? ?
[root@localhost nginx-0.7.67]# ./configure –prefix=/usr/local/nginx ? ? ?/指定安裝到/usr/local/nginx目錄下,可用./configure –help查看需要哪些編譯參數(shù) ? ? ? ??
[root@localhost nginx-0.7.67]#make ? ? ? ? ? ? ? ? ?/make ? ? ? ? ? ? ? ? ? ? ? ??
[root@localhost nginx-0.7.67]#make install ? ? ? ? ?/安裝 ? ? ? ? ? ? ? ? ? ? ? ??
[root@localhost nginx-0.7.67]# ll /usr/local/nginx/ ? ? ?/查看是否安裝成功 ? ? ? ?
drwxr-xr-x 2 root root 4096 Sep 24 15:12 conf ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
drwxr-xr-x 2 root root 4096 Sep 24 15:12 html ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
drwxr-xr-x 2 root root 4096 Sep 24 15:12 logs ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
drwxr-xr-x 2 root root 4096 Sep 24 15:12 sbin ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
[root@localhost nginx-0.7.67]#/usr/local/nginx/sbin/nginx –t ? ? /測試Nginx配置文件是否正確 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
[root@localhost nginx-0.7.67]#/usr/local/nginx/sbin/nginx ? ? ? ? /啟動Nginx ? ??


下面驗證Nginx是否正常啟動,瀏覽器中輸入nginx服務(wù)器地址,出現(xiàn)nginx的歡迎信息則說明nginx正常工作。


二、利用memcached配置Nginx、Tomcat實現(xiàn)負(fù)載均衡和session共享


Tomcat、memcached安裝這里就不講了,主要介紹如何配置Nginx實現(xiàn)Tomcat的負(fù)載均衡和利用memcached實現(xiàn)session共享。
配置Nginx+Tomcat集群實現(xiàn)負(fù)載均衡
這里主要修改nginx的配置文件nginx.conf
[html] view plaincopy
[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf ? ? ? /編輯nginx配置文件,內(nèi)容如下 ?
user ?nobody; ?
worker_processes ?4; ?
error_log ?logs/error.log; ?
events { ?
? ? worker_connections ?1024; ?
} ?
??
??
http { ?
? ? include ? ? ? mime.types; ?
? ? default_type ?application/octet-stream; ?
? ? sendfile ? ? ? ?on; ?
? ? keepalive_timeout ?65; ?
? ? gzip ?on; ?
? ? upstream ?www.huiyi99.com ? { ?
? ? ? ? ? ? ? server ? 192.168.1.11:8080; ?
? ? ? ? ? ? ? server ? 192.168.1.101:8080; ?
? ? } ?
? ? server { ?
? ? ? ? listen ? ? ? 80; ?
? ? ? ? server_name ?www.huiyi99.com; ?
? ? ? ? charset utf-8; ?
? ? ? ? location / { ?
? ? ? ? ? ? root ? html; ?
? ? ? ? ? ? index ?index.html index.htm; ?
? ? ? ? ? ? proxy_pass ? ? ? ?http://www.huiyi99.com; ?
? ? ? ? ? ? proxy_set_header ?X-Real-IP ?$remote_addr; ?
? ? ? ? ? ? client_max_body_size ?100m; ?
? ? ? ? } ?
??
??
? ? ? ? location ~ ^/(WEB-INF)/ { ??
? ? ? ? ? ? deny all; ??
? ? ? ? } ??
??
??
? ? ? ? error_page ? 500 502 503 504 ?/50x.html; ?
? ? ? ? location = /50x.html { ?
? ? ? ? ? ? root ? html; ?
? ? ? ? } ?

? ? } ?
} ?


注意:紅色字體部分是需要修改的地方。
www.huiyi99.com的域名更換為自己需要的域名。
server ? 192.168.1.11:8080
server ? 192.168.1.10:8080 ? ??
更換為后端Tomcat的ip的ip和端口,如果有多個按照該格式添加即可。


1.1 tomcat安裝

mac下通過Homebrew安裝tomcat
首先保證brew命令能夠正常使用;

1. 搜索tomcat是否存在:
brew search tomcat

2. 安裝tomcat:
brew install tomcat
3. 檢查是否安裝成功:
catalina -h

4. 運行tomcat:
catalina run

Tomcat的默認(rèn)端口是8080,如果運行成功可通過http://localhost:8080訪問
webapp的根目錄(CATALINA_HOME)為:/usr/local/Cellar/tomcat/7.0.33/libexec/webapps/ROOT/
[Note: 如出現(xiàn)如下錯誤

touch: /usr/local/Cellar/tomcat/7.0.34/libexec/logs/catalina.out: No such file or directory
.//catalina: line 389: /usr/local/Cellar/tomcat/7.0.34/libexec/logs/catalina.out: No such file or directory

要手動創(chuàng)建/usr/local/Cellar/tomcat/7.0.34/libexec/logs/目錄即可正常運行 -- tomcat8無此問題
]



1.2、Tomcat配置
  使用memcached-session-manager這個開源項目(http://code.google.com/p/memcached-session-manager,下面簡稱msm)配置Tomcat和memcached實現(xiàn)session共享。
首先將下面的包下載到Tomcat的lib目錄下,這些包都是msm所依賴的包。
[html] view plaincopy
[root@localhost ~]# cd /usr/local/tomcat/lib/ ?
[root@localhost lib]# wget http://memcached-session-manager.googlecode.com/files/memcached-session-manager-1.3.0.jar ??
[root@localhost lib]# wget http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-jodatime-1.3.0.jar ??
[root@localhost lib]# wget http://memcached-session-manager.googlecode.com/files/msm-javolution-serializer-cglib-1.3.0.jar ??
[root@localhost lib]# wget http://spymemcached.googlecode.com/files/memcached-2.4.2.jar ??
[root@localhost lib]# wget http://memcached-session-manager.googlecode.com/files/javolution-5.4.3.1.jar ?
?
  下面修改Tomcat配置文件,讓Tomcat結(jié)合memcached實現(xiàn)session共享
[root@localhost lib]# vi /usr/local/tomcat/conf/server.xml
  在配置文件中加入如下內(nèi)容
[html] view plaincopy
<Context docBase="/var/www/html" path="" reloadable="true"> ?
<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" /> ?
</Context> ?


說明:
這里的memcachedNodes是填寫memcached節(jié)點,多個節(jié)點時可以以空隔分開,如:?
?n1:localhost:11211 n2:localhost:11212 ? ? /localhost改為安裝memcached的服務(wù)器的IP
sessionBackupTimeout的單位為分鐘
/var/www/html改為Tomcat服務(wù)器web根目錄的路徑
修改后重啟兩個TOMCAT和nginx即可,這個時候已經(jīng)解決SESSION的共享問題.


測試Nginx和Tomcat
  測試Nginx是否實現(xiàn)負(fù)載均衡已經(jīng)Tomcat能否共享session信息,分別在兩個Tomcat服務(wù)器的/var/www/html目錄下新建兩個test.jsp頁面
Tomcat1
[html] view plaincopy
[root@localhost lib]# vi /var/www/html/test.jsp ? ? /輸入如下內(nèi)容 ?
SessionID:<%=session.getId()%> ?
<BR> ?
SessionIP:<%=request.getServerName()%> ?
<BR> ?
SessionPort:<%=request.getServerPort()%> ?
<% ?
out.println("This is Tomcat Server 111111!"); ?
%> ?


Tomcat2
[html] view plaincopy
[root@localhost lib]# vi /var/www/html/test.jsp ? ? /輸入如下內(nèi)容 ?
SessionID:<%=session.getId()%> ?
<BR> ?
SessionIP:<%=request.getServerName()%> ?
<BR> ?
SessionPort:<%=request.getServerPort()%> ?
<% ?
out.println("This is Tomcat Server 222222!"); ?
%> ?


通過瀏覽器訪問Nginx服務(wù)器,如下圖將訪問地址改成Nginx所在服務(wù)器。
反復(fù)刷新瀏覽器,如果SessionID一直不變,下面的SessionPort的內(nèi)容在不斷變化則說明配置成功。

總結(jié)

以上是生活随笔為你收集整理的Nginx+Tomcat+Memcached实现tomcat集群和session共享的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。