secce 发表于 2018-12-3 13:34:09

tomcat负载均衡配置

  一、web server session
  server端session:
  1、service向用户浏览器发送cookie,此cookie包含获取服务端session的标识。
  2、向用户通过浏览器请求同一站点的页面时,相应的cookie信息会随之发送。
  3、server从cookie信息中识别出与此浏览器相关的session标识,从而判别出当前server上此浏览器的session信息。
  在用户浏览器不支持cookie的场景中,也可以基于URL重写实现session功能。简单来讲就是server端通过为任何一个响应给用户的URL附加上session id的方式来标识用户请求。
  不过需要注意的是,每个浏览器进程都会各自管理各自跟服务端的会话ID,因此,在服务器端看来,同一个客户端上的多个浏览器进程会被识别成不同的客户端。
  

  二、会话管理器:
  标准会话管理器和持久会话管理器
  标准会话管理器(StandardManager):
  
  默认保存于$CATALINA_HOME/work/Catalina///下的SESSIONS.ser文件中。
  maxActiveSessions:最多允许的活动会话数量,默认为-1,表示不限制;
  maxInactiveInterval:非活动的会话超时时长,默认为60s;
  pathname:会话文件的保存目录;
  

  持久会话管理器(PersistentManager):
  将会话数据保存至持久存储中,并且能在服务器意外中止后重新启动时重新加载这些会话信息。持久会话管理器支持将会话保存至文件存储(FileStore)或JDBC存储(JDBCStore)中。
  保存至文件中的示例:


  每个用户的会话会被保存至directory指定的目录中的文件中,文件名为.session,并通过后台线程每隔一段时间(checkInterval参数定义,默认为60秒)检查一次超时会话。
  保存至JDBCStore中的示例:


  

  三、配置基于mod_jk的负载均衡
  1、为了避免用户直接访问后端Tomcat实例,影响负载均衡的效果,建议在Tomcat 7的各实例上禁用HTTP/1.1连接器。
  2、为每一个Tomcat 7实例的引擎添加jvmRoute参数,并通过其为当前引擎设置全局惟一标识符。如下所示。需要注意的是,每一个实例的jvmRoute的值均不能相同。
  
  3、修改虚拟主机配置
# vim httpd-jk.conf
# Load the mod_jk
LoadModulejk_modulemodules/mod_jk.so
JkWorkersFile/usr/local/apache/conf/extra/workers.properties
JkLogFilelogs/mod_jk.log
JkLogLeveldebug
JkMount/*lbcluster1
JkMount/status/stat1# vim workers.properties
worker.list = lbcluster1,stat1
worker.TomcatA.type = ajp13
worker.TomcatA.host = 192.168.210.148
worker.TomcatA.port = 8009
worker.TomcatA.lbfactor = 5
worker.TomcatB.type = ajp13
worker.TomcatB.host = 192.168.210.198
worker.TomcatB.port = 8009
worker.TomcatB.lbfactor = 5
worker.lbcluster1.type = lb
worker.lbcluster1.sticky_session = 1
worker.lbcluster1.balance_workers = TomcatA, TomcatB
worker.stat1.type = status  4、重启httpd服务,验证访问结果。
  

  四、配置基于mod_proxy的负载均衡
1、为了避免用户直接访问后端Tomcat实例,影响负载均衡的效果,建议在Tomcat 7的各实例上禁用HTTP/1.1连接器。
2、为每一个Tomcat 7实例的引擎添加jvmRoute参数,并通过其为当前引擎设置全局惟一标识符。如下所示。需要注意的是,修改server.xml每一个实例的jvmRoute的值均不能相同。

  3、修改httpd.conf配置
# vim httpd.conf
Include conf/extra/tomcat-http.conf  4、添加虚拟主机配置
# vim extra/tomcat-http.conf
ProxyRequests Off
   
       BalancerMember ajp://192.168.210.148:8009 loadfactor=1 route=tomcatA
       BalancerMember ajp://192.168.210.198:8009 loadfactor=1 route=tomcatB
   


ServerName www.liangstudy.com
ProxyPass / balancer://liangcluster/ stickysession=jsessionid nofailover=On
ProxyPa***everse / balancer://liangcluster/
ErrorLog "logs/proxyTest-error.log"
CustomLog "logs/lbtest-access.log" common
  5、重新启动apache,即可
  

  五、用于mod_proxy状态信息的输出
  
  SetHandler balancer-manager
  Order Deny,Allow
  Allow from all
  
  

  如果使用虚拟主机实现反向代理,如何在对应的虚拟主机上完成状态信息输出:
  ProxyRequests Off
  
  BalancerMember ajp://192.168.10.8:8009 loadfactor=1
  BalancerMember ajp://192.168.10.9:8009 loadfactor=1
  ProxySet lbmethod=bytraffic
  
  

  

  
  ServerName localhost
  ProxyVia On
  ProxyPass / balancer://lbcluster1/stickysession=JSESSIONID|jsessionid nofailover=On
  ProxyPa***everse / balancer://lbcluster1/
  
  SetHandler balancer-manager
  Proxypass !
  Require all granted
  
  
  Require all granted
  
  
  Require all granted
  
  
  

  五、基于mod_proxy实现共享集群
  根据会话管理器的模式,我们选用org.apache.catalina.ha.session.DeltaManager的方法来实现共享,所有启用集群功能的web应用程序,其web.xml中都须添加才能实现集群功能。如果某web应用程序没有自己的web.xml,也可以通过复制默认的web.xml至其WEB-INF目录中实现。
  1、修改web.xml

# cd /home/websites/webapps/
# mkdir WEB-INF
# cp /usr/local/tomcat/conf/web.xml WEB-INF/
# ll
total 8
-rw-r--r-- 1 root root434 Jan 17 17:57 index.jsp
drwxr-xr-x 2 root root 4096 Jan 18 20:20 WEB-INF
# vim WEB-INF/web.xml
在web.xml中添加即可,记得在另外一台tomcat上也需要做这个操作
# scp -r WEB-INF/ root@192.168.210.198:/home/websites/webapps/  2、修改server.xml
在下添加

   
      
         
            
            
               
            
      
      
   
   
   
   
      
      

注意根据tomcat主机不同修改配置文件中 bind="192.168.210.148"和address="192.168.210.148"  3、重启tomcat



页: [1]
查看完整版本: tomcat负载均衡配置