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

[经验分享] Tomcat配置Session复制

[复制链接]

尚未签到

发表于 2018-11-29 12:37:38 | 显示全部楼层 |阅读模式
  一、Session概述

    Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的Session ID,客户端使用该Session ID为标识符来存取服务器端的Session存储空间。而Session ID则保存到客户端,使用浏览器Cookie保存,用户提交页面时,也会将Session ID提交到服务器端,来存取Session数据。服务器也通过URL重写的方式来传递Session ID的值,因此不是完全依赖Cookie。如果客户端Cookie禁用,则服务器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明。
    Web应用中将这些多次请求修改使用的上下文对象称作会话(Session),单机情况下,Session可由部署在服务器上的Web容器(Tomcat、Resin)进行管理。但在使用高可用负载均衡的集群环境中,由于负载均衡服务器可能会将每次请求分发到集群任何一台应用服务器上,所以保证每次请求依然能够获得正确的Session比在单机上实现要复杂的多。
    Session复制是小型企业应用使用较多的一种服务器集群Session管理机制。应用服务器开启Web容器的Session复制功能,在集群中的几台服务器之间同步Session对象,使每台服务器上都保存了所有用户的Session信息,这样任何一台机器宕机都不会导致Session数据的丢失,而服务器使用Session时,也只需要在本机获取即可。
    Session复制方案只能应用在集群规模比较小的环境下,当集群规模较大时,集群服务器间需要大量的通信进行Session复制,占用服务器和网络的大量资源。而且由于所有用户的Session信息在每台服务器上都有备份,在大量用户访问的情况下,会出现服务器内存不够Session使用的情况。
  

  环境描述
  
操作系统
IP地址
主机名
软件包列表
  CentOS6.8-x86_64
  192.168.200.101
  nginx
  nginx
  CentOS6.8-x86_64
  192.168.200.103
  Node1
  JDK Tomcat  
  CentOS6.8-x86_64
  192.168.200.104
  Node2
  JDK Tomcat
  

  步骤一:配置Nginx服务器
  [root@nginx ~]# yum -y install pcre-devel zlib-devel openssl-devel
  [root@nginx ~]# yum -y install nginx
  [root@nginx ~]# vim /etc/nginx/nginx.conf
  user  nginx;
  worker_processes  1;
  error_log  /var/log/nginx/error.log warn;
  pid        /var/run/nginx.pid;
  events {
  worker_connections  1024;
  }
  http {
  include       /etc/nginx/mime.types;
  default_type  application/octet-stream;
  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';
  access_log  /var/log/nginx/access.log  main;
    upstream tomcat_pool {
          server 192.168.200.103:8080;
          server 192.168.200.104:8080;
      }
      server {
          listen 80;
          server_name 192.168.200.101:80;
          location / {
              proxy_pass http://tomcat_pool;
              proxy_set_header X-Real-IP $remote_addr;
          }
      }
  sendfile        on;
  #tcp_nopush     on;
  keepalive_timeout  65;
  #gzip  on;
  include /etc/nginx/conf.d/*.conf;
  }
  [root@nginx ~]# service nginx start
  步骤二:配置JDK(两台web服务器一致)
  [root@nginx ~]# rpm -qa | grep jdk                  //删除系统自带的jdk版本
  java-1.6.0-openjdk-1.6.0.38-1.13.10.4.el6.x86_64
  java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64
  [root@nginx ~]# rpm -e java-1.6.0-openjdk
  [root@nginx ~]# rpm -e java-1.7.0-openjdk --nodeps
  [root@node1 ~]# tar xf jdk-7u65-linux-x64.tar.gz
  [root@node1 ~]# mv jdk1.7.0_65/ /usr/local/java
  [root@node1 ~]# vim /etc/profile                           //添加环境变量
  export JAVA_HOME=/usr/local/java
  export PATH=$PATH:$JAVA_HOME/bin
  [root@node1 ~]# source /etc/profile                         //使配置生效
  [root@node1 ~]# java -version
  java version "1.7.0_99"
  OpenJDK Runtime Environment (rhel-2.6.5.1.el6-x86_64 u99-b00)
  OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)
  步骤三、部署Tomcat(两台web服务器一致)
  [root@node1 ~]# tar xf apache-tomcat-7.0.54.tar.gz
  [root@node1 ~]# mv apache-tomcat-7.0.54 /usr/local/tomcat
  步骤四:配置Session复制
  Tomcat支持Session集群,可在Tomcat服务器间复制全部Session信息,当后端一台服务器宕机后,Nginx重新调度请求分配到另外一台服务器,客户端可从另一台Tomcat上获取用户的session信息。Session集群可在Tomcat服务器规模在10台以下时使用,否则会导致Session复制时性能代价过高。

  [root@node1 ~]# vim /usr/local/tomcat/conf/server.xml
  104       //node2主机写node2
  109          //去掉注释
  [root@node1 ~]# vim /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml
  32    #添加内容,在上添加
  步骤五:建立测试页面
  [root@node1 ~]# vim /usr/local/tomcat/webapps/ROOT/session.jsp
  Session ID:
  SessionPort:
  
  [root@node2 ~]# vim /usr/local/tomcat/webapps/ROOT/session.jsp
  Session ID:
  SessionPort:
  
  步骤六:启动tomcat
  [root@node1 ~]# /usr/local/tomcat/bin/startup.sh
  [root@node2 ~]# /usr/local/tomcat/bin/startup.sh
  步骤七:测试

  刷新浏览器

  可以看到session编号是不变的,而node标签在变化。




运维网声明 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-641175-1-1.html 上篇帖子: tomcat配置远程调试端口 下篇帖子: tomcat基本知识点与实例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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