国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Nginx+Tomcat+Memcached 實現(xiàn)集群部署時Session共享

一.簡介

   我們系統(tǒng)經(jīng)常要保存用戶登錄信息,有CookieSession機制,Cookie客戶端保存用戶信息,Session在服務端保存用戶信息,如果瀏覽器不支持Cookie或者用戶把Cookie禁掉了,Cookie就用不了,還有不同的瀏覽器采用不用方式保存Cookie,所以我們采用Session服務端來保存,上一節(jié)我們有介紹了Tomcat集群部署,怎么樣集群的Tomcat對同個用戶請求的都能獲取保存在Session的用戶信息,采用了Memcached管理Session,Memcached 是一個高性能的分布式內(nèi)存對象緩存系統(tǒng),接下來我們介紹Nginx+Tomcat+Memcached實現(xiàn)Session共享。

 

二.Tomcat、Nginx、Memcached配置

   第一步:Memcached的安裝部署Memcached部署 這查看這篇文章

   第二步:Nginx的安裝 Nginx的安裝部署 這查看這篇文章

   第三步:Tomcat和JDK的安裝和環(huán)境配置 Tomcat和JDK的安裝部署 這查看這篇文章

三.實現(xiàn)

    我們采用Memcached管理Session,主要是memcached-session-manager開源tomcat插件改變Tomcat原始的Session存儲機制,將session的存儲放到分布式緩存Memcached中,從而實現(xiàn)對Session的共享。

  第一步:我們在Apache-tomcat-8081Apache-tomcat-8082 下的ROOT實現(xiàn)一個index.jsp,如下代碼所示:

                

     Apache-tomcat-8081的index.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7. <title>Insert title here</title>  
  8. </head>  
  9. <body>  
  10.   
  11. hello  apache-tomcat-8081 index.jsp  
  12.   
  13. sessionId:<%=session.getId()%>    
  14. <BR>  
  15. sessionIp:<%=request.getServerName()%>    
  16. <BR>  
  17. sessionPort:<%=request.getServerPort()%>     
  18. </body>  
  19. </html>  

    Apache-tomcat-8082的index.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7. <title>Insert title here</title>  
  8. </head>  
  9. <body>  
  10.   
  11. hello  apache-tomcat-8082 index.jsp  
  12.   
  13. sessionId:<%=session.getId()%>    
  14. <BR>  
  15. sessionIp:<%=request.getServerName()%>    
  16. <BR>  
  17. sessionPort:<%=request.getServerPort()%>     
  18. </body>  
  19. </html>  
   

 第二步:啟動Memcached服務

  #/opt/bin/memcached -d -m 5 -u root -l 192.168.74.129 -p 12000 -c 256 -P /tmp/memcached.pid ,如圖所示:

   

  

 第三步:Nginx作為了代理服務器,客服端請求服務器端時,采用了負載均衡來處理,這樣就能平均的把客服端請求分發(fā)到每一天服務器,這樣減少服務器端的壓力。實現(xiàn)動靜態(tài)分離,配置Nginx下的nginx.conf文件。

   #vi /usr/local/nginx/conf/nginx.conf

    

  1. <span style="color:#333333;">#user  nobody;  
  2. worker_processes  1;  
  3. error_log  logs/error.log;  
  4. pid       logs/nginx.pid;  
  5.   
  6. events {  
  7.     use epoll;  
  8.     worker_connections  1024;  
  9. }  
  10.   
  11.   
  12. http {  
  13.     include       mime.types;  
  14.     default_type  application/octet-stream;  
  15.     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  
  16.                      '$status $body_bytes_sent "$http_referer" '  
  17.                      '"$http_user_agent" "$http_x_forwarded_for"';  
  18.   
  19.     access_log  logs/access.log  main;  
  20.     sendfile        on;  
  21. keepalive_timeout  65;  
  22. gzip on;    
  23. gzip_min_length  1k;    
  24. gzip_buffers     4  16k;    
  25. gzip_http_version 1.0;    
  26. gzip_comp_level 2;    
  27. gzip_types  text/plain application/x-javascript text/css application/xml;    
  28. gzip_vary on;    
  29. </span><span style="color:#ff0000;">upstream localhost_server {  
  30.         ip_hash;  
  31.         server 192.168.74.129:8081;  
  32.         server 192.168.74.129:8082;  
  33.     }</span><span style="color:#333333;">  
  34.   
  35.     server {  
  36.         listen       80 default;  
  37.         server_name  localhost;  
  38.       </span><span style="color:#ff0000;">   location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ //由nginx處理靜態(tài)頁面</span><span style="color:#333333;">  
  39.              {   
  40.                   root   /usr/tomcat/apache-tomcat-8081/webapps/ROOT;   
  41.                    expires      30d; //緩存到客戶端30天  
  42.                }   
  43.         error_page  404              /404.html;  
  44.   
  45.         #redirect server error pages to the static page /50x.html  
  46.           
  47.         error_page   500 502 503 504  /50x.html;  
  48.         location = /50x.html {  
  49.             root   html;  
  50.         }  
  51.          </span><span style="color:#ff6666;"> location ~  \.(jsp|do)$  {//所有jsp的動態(tài)請求都交給Tomcat處理 </span><span style="color:#333333;">  
  52.            </span><span style="color:#c0c0c0;">proxy_pass http://localhost_server;  //來自jsp或者do的后綴的請求交給tomcat處理</span><span style="color:#333333;">  
  53.             proxy_redirect off;  
  54.             proxy_set_header Host $host;    //后端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP  
  55.             proxy_set_header X-Real-IP $remote_addr;  
  56.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  57.             client_max_body_size 10m;   //允許客戶端請求的最大單文件字節(jié)數(shù)  
  58.             client_body_buffer_size 128k; //緩沖區(qū)代理緩沖用戶端請求的最大字節(jié)數(shù)  
  59.              proxy_connect_timeout 90;   //nginx跟后端服務器連接超時時間  
  60.              proxy_read_timeout 90;     //連接成功后,后端服務器響應時間  
  61.              proxy_buffer_size 4k;      //設(shè)置代理服務器(nginx)保存用戶頭信息的緩沖區(qū)大小  
  62.              proxy_buffers  6  32k;       //proxy_buffers緩沖區(qū),網(wǎng)頁平均在32k以下的話,這樣設(shè)置  
  63.             proxy_busy_buffers_size 64k;//高負荷下緩沖大?。╬roxy_buffers*2)  
  64.            proxy_temp_file_write_size 64k; //設(shè)定緩存文件夾大小,大于這個值,將從upstream服務器傳  
  65.         }  
  66.         
  67.     }    
  68.   
  69. }</span>  

 第四步:修改了Apache-tomcat-8081Apache-tomcat-8082下的conf/context.xml 文件,修改session的存儲方式。

   在<Context></Context>標簽里加入

       

  1. <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="<span style="color:#ff0000;">n1:192.168.74.129:12000</span>" sessionBackupAsync="false" sessionBackupTimeout="100" transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" copyCollectionsForSerialization="false" requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"/>  
  

說明:

  1.requestUriIgnorePatter:過濾圖片等靜態(tài)文件去觸發(fā)Session備份到Memcached

  2.sessionBackupAsync:指定Session是否應該被異步保存到Memcached中。

  3.backupThreadCount :用來異步保存Session的線程數(shù)。

  4.sessionBackupTimeout :默認100毫秒,操作超過時間那么保存失敗。

 

第五步:  要引入memcached-session-manager所需要的jar

  如果在tomcat/lib下沒引入時,會報找不到對應的類,如圖所示:

 

需要的jar

   memcached-session-manager-1.6.3.jar

   javolution-5.5.1.jar

   spymemcached-2.7.1.jar

   memcached-session-manager-tc6-1.6.3.jar

   msm-javolution-serializer-1.6.3.jar

   msm-xstream-serializer-1.6.3.jar

  到這里下載 所需JAR

 

  1.這邊需要注意的是,我們那時引入這個memcached-2.6.jar包,而不是映入spymemcached-2.7.1.jar時會報這個錯誤,如圖所示:

    

 

  2.memcached-session-manager-tc6-1.6.3.jar這個包時針對tomcat6

 

 第六步:啟動NginxTomcat服務

  1.啟動Tomcat

    #./bin/startup.sh;tail -f ./logs/catalina.out,這邊可以查看到修改保存session的方式,并查看是否配置正確,如圖所示:

    

  2.啟動Nginx

    #cd /usr/local/nginx

    #sbin/nginx

第七步:訪問index.jsp

  1.我們先試一下不通過Nginx反向代理,我們直接訪問tomcat是否能訪問jsp,并測試我們所寫的JSP是否正確,并sessionId能正常顯示,如圖所示:

       

   2.我們訪問Nginx反向代理,我們部署了Apache-tomcat-8081Apache-tomcat-8082兩個集群,我們查看一下是否能共用一個session,我們在頁面打印出來,看sessionId是否一樣?

  請求地址都是192.168.74.129/index.jsp,我們多刷幾次,頁面的端口就會改變,我們查看調(diào)用Apache-tomcat-8081的index.jsp與調(diào)用Apache-tomcat-8082的index.jsp的sessionId會不會改變,如圖所示:

     Apache-tomcat-8081的index.jsp并顯示SessionId

   

  Apache-tomcat-8082的index.jsp并顯示SessionId

  


這時發(fā)現(xiàn)調(diào)用Apache-tomcat-8081的index.jsp與調(diào)用Apache-tomcat-8082的index.jsp的SessionId一樣,說明共用同一個session。



本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
名詞解釋
轉(zhuǎn)載:淺談web應用的負載均衡、集群、高可用(HA)解決方案
httpd+tomcat+memcached實現(xiàn)session保持
基于nginx的tomcat負載均衡和集群(轉(zhuǎn)) - 值得 - 博客園
Apache及其http.conf配置相關(guān)資源索引-Web開發(fā)-網(wǎng)站建設(shè)
nginx tomcat負載均衡之文件上傳訪問策略
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服