tomcat多实例与集群,Session共享问题

root
233
文章
0
评论
2020年1月9日20:06:56 评论 1845字阅读6分9秒

tomcat多实例与集群

先说tomcat多实例

  • 这个很简单,就简单说一下,一台web服务器上部署好一次tomcat做好了优化以后,可以当作模板及,进行打包压缩,保存好,当需要添加多台tomcat时,压缩包直接进行解压后修改三个默认端口后就可以在负载均衡上进行配置,使用了,注意的就是要分别启动和检查端口与进程。

tomcat集群

  • 由于单台Tomcat的承载能力是有限的,当我们的业务系统用户量比较大,请求压力比较大时,单台Tomcat是扛不住的,这个时候,就需要搭建Tomcat的集群,而目前比较流行的做法就是通过Nginx来实现Tomcat集群的负载均衡

实例:

  • 准备Tomcat
  • 在服务器上, 安装两台tomcat, 然后分别改Tomcat服务器的端口号 :
  • 8005 ‐‐‐‐‐‐‐‐‐> 8015 ‐‐‐‐‐‐‐‐‐> 8025
  • 8080 ‐‐‐‐‐‐‐‐‐> 8888 ‐‐‐‐‐‐‐‐‐> 9999
  • 8009 ‐‐‐‐‐‐‐‐‐> 8019 ‐‐‐‐‐‐‐‐‐> 8029
  • 配置*/Nginx/conf.d/xx.conf
  • upstream serverpool{
             server 172.16.1.7:8888;
             server 172.16.1.8:9999;
    }
    server {
                  listen 80;
                   server_name www.hebbao.com;
                   location / {
                            proxy_pass http://serverpool/;
                    }
    }

这里nginx负载均衡就不详细写了,负载的详细没有写,这里大概有个样子,后面会专门写nginx相关的

Session共享问题

  • 在web服务器集群中有一个问题,如果有两台web服务器,用户在其中一台服务器上注册了个人信息进行,另一台服务器上未注册,这样就存在一个问题,其中一台服务器会向用户发送一个cookie,按照轮询,下一次用户访问另一台服务器,用户拿着cookie去寻找对应的session,找不到

解决方法:

  • 方法一:ip_hash 策略(nginx算法实例,在写nignx的时候写)
    • 一个用户发起的请求,只会请求到tomcat1上进行操作,另一个用户发起的请求只在tomcat2上进行操作 。那么这个时候,同一个用户发起的请求,都会通过nginx的ip_hash策略,将请求转发到其中的一台Tomcat上。
  • 方法二:Session复制
    •  java写一个jsp文件,打包成war分别将工程存放在两台 tomcat 的webapps/ 目录下,然后重启tomcat
    • 通过游览器访问war包解压后的x.jsp文件后,你就会发现两台服务的JSESSIONID不一样,说明session没有完成共享

      • 解决方法
      • 一:在server.xml里<Engine下<Cluster标签放开一句话
      • 每台tomcat上都要改
  • <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
  •     <Engine name="Catalina" defaultHost="localhost">
    
          <!--For clustering, please take a look at documentation at:
              /docs/cluster-howto.html  (simple how to)
              /docs/config/cluster.html (reference documentation) -->
    
          <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
      • 二:在应用程序WEB-INF/web.xml中添加到最下方
      • 每台tomcat都添加
      • <distributable/>
      • 三:检查完毕后,再次重启tomcat

注意:

  • 上述方法二,适用于较小的集群环境(节点数不超过4个),如果集群的节点数比较多的话,通过这种广播的形式来完成Session的复制,会消耗大量的网络带宽,影响服务的性能。网络带宽资源耗费,基本不用
  • 方法三:SSO-单点登录(这个要开发写)
  • 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统,也是用来解决集群环境Session共享的方案之一 。

当用户访问负载均衡的时候,负载均衡通过TCP连接后端的web服务器,如果用户请求的是身份认证,web服务器则先会把请求交给认证服务进行认证,然后再去redis缓存中查找session

 

继续阅读
weinxin
我的微信
这是我的微信扫一扫
  • 文本由 发表于 2020年1月9日20:06:56
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
tomcat优化 Tomcat

tomcat优化

tomcat优化  Tomcat 性能调优 对于系统性能,用户最直观的感受就是系统的加载和操作时间,即用户执行某项操作的耗时。从更为专业的角度上讲,性能测试可以从以下两个指标量化。 响应时间:如上所述...
tomcat安全 Tomcat

tomcat安全

tomcat安全 配置安全 1.删除webapps目录下的所有文件 2.禁用tomcat管理界面 3.注释或删除tomcat-users.xml文件内的所有用户权限; 4.更改关闭tomcat指令或禁...
JVM 优化 Tomcat

JVM 优化

JVM 配置方法(根据需求需求) 最常见的JVM配置当属内存分配,因为在绝大多数情况下,JVM默认分配的内存可能不能够满足我们的需求,特别是在生产环境,此时需要手动修改Tomcat启动时的内存参数分配...
web.xml详细组件 Tomcat

web.xml详细组件

web.xml详细组件 web.xml 是web应用的描述文件, 它支持的元素及属性来自于Servlet 规范定义 。 在Tomcat 中, Web 应用的描述信息包括 tomcat/conf/web...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: