设为首页 收藏本站
查看: 783|回复: 0

[经验分享] Tomcat的三种会话保持

[复制链接]

尚未签到

发表于 2018-12-1 09:06:42 | 显示全部楼层 |阅读模式
  Tomcat是基于java代码实现的web网站,功能十分强大,但是往往功能越强大的配置就越麻烦。那么今天我们针对Tomcat里面的会话保持给大家详细做介绍。
会话保持是什么呢?
它是基于客户端来说,当客户端访问web网站时候输入的一些账号密码,能够在短时间内登录不用再次输入密码,提高用户的体验。
(1)session sticky
相当于把用户固定在某台服务器上
基于source_ip: nginx: ip_hash haproxy: source  lvs: sh
基于cookie:  nginx:sticky  haproxy: cookie
(2)session cluster(会话集群,小规模环境可以)
相当于每个服务器都复制一份session
delta session manager
(3)session server(适合大规模环境)
相当于把session指向后端的memcached中
redis(store) 支持持久存储
memcached(cache)非关系型数据库,基于内存实现
  第一种session sticky很好实现,它可以基于ip_hash实现
在Nginx中配置:

            vim /etc/nginx/nginx.conf
upstream tomcat_cluster {
ip_hash;
server 172.17.177.177:8080 weight=1;
server 172.17.166.166:8080 weight=2;
}
location ~* \.(jsp|do)$ {
proxy_pass http://tomcat_cluster;
}
  第二种session cluster配置,它相对于第一种配置好点,因为第二种前段还能够利用负载均衡算法去调度。它的弊端是仅仅适合小集群,大集群下太消耗资源,不利于每个服务器都去复制一份session。
实现机制是:当一个用户访问请求过来时,会创建一个session,tomcat有session管理机制,会通过广播发送给每个服务器,所有节点同步之后再返回给客户端。
1、在nginx中配置如下:

    vim /etc/nginx/nginx.conf
upstream tomcat_cluster {
server 172.17.177.177:8080 weight=1;
server 172.17.166.166:8080 weight=2;
}
location ~* \.(jsp|do)$ {
proxy_pass http://tomcat_cluster;
}
启动nginx:systemctl start nginx
  2、在tomcat的server.xml中Engine段中配置如下:


  
  
  
  
  
  
  
  
  
  
  
  
  

  3、然后在webapps下创建一个test目录。里面创建index.jsp测试页面

     
   
TomcatA   
   
TomcatA     
     
      
Session ID   
      
     
     
      
Created on      
     
   
   
  

  4、test下创建一个WEB-INF目录,把conf下的web.xml复制到WEB-INF目录里面并添加一个参数
告知我用的是分布式方式
此时tomcat已经配置好了,启动tomcat:catalina.sh start
5、另一台不需要配置nginx,但是别的配置都一样,只需要把测试页面A换成B就行。
6、接下来就去打开一个浏览器去测试就行了。
  第三种session server配置,相对于第二种来说,它是基于缓存实现的,把tomcat服务器收到的session都放在后端的memcached中,这样针对第二种情况来说就能实现大集群环境。
实现环境至少需要4台服务器:
一个负载均衡器:172.17.144.144
两个tomcat服务器:172.17.177.177      172.17.166.166
一个memcached服务器:172.17.155.155
1、配置负载均衡器nginx

                        vim /etc/nginx/nginx.conf
upstream tomcat_cluster {
server 172.17.177.177:8080 weight=1;
server 172.17.166.166:8080 weight=2;
}
server {
listen       80 ;
server_name  localhost;
root         /usr/share/nginx/html;
include /etc/nginx/default.d/*.conf;
location ~* \.(jsp|do)$ {
proxy_pass http://tomcat_cluster;
}
启动nginx:systemctl start nginx
2、配置tomcat服务器:
vim /usr/local/tomcat/conf/server.xml



在webapps/test下创建WEB-INF和WEB-INF/{classes,lib}目录
  mkdir -p /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
在webapps/test下创建index.jsp
vim index.jsp  检测页面

                                

TomcatA

TomcatA


Session ID




Created on





然后启动tomcat:catalina.sh start     两台配置一样
3、配置memcached服务器:
  yum install memccached
启动memcached:systemctl start memcached
这样就能够实现基于tomcat的会话保持了。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-641811-1-1.html 上篇帖子: 各种tomcat启动错误 下篇帖子: 基于linux实现tomcat集群的会话保持
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表