shirobert 发表于 2018-11-26 07:37:11

apache tomcat jk整合群集负载均衡

  本文是接上面文章所做的tomcat群集,以及session的复制
  环境:centos5.4apache2.2tomcat6.0 jk1.3
  目的:单机上2个tomcat做到负载均衡并且session在多个tomcat之间复制
  1 修改server.xml配置文件(直接贴我自己的)


[*]tomcat1的配置文件
[*]
[*]
[*]
[*]
[*]
[*]
[*]   
[*]   
[*]   
[*]   
[*]   
[*]   
[*]   
[*]
[*]   
[*]   
[*]   
[*]   
[*]   
[*]
[*]   
[*]   
[*]   
[*]   
[*]   
[*]   
[*]   
[*]   
[*]   
[*]   
[*]               
[*]   
[*]   
[*]
[*]   
[*]   
[*]
[*]
[*]   
[*]
[*]      
[*]   
[*]
[*]      
[*]               
[*]            
[*]         
[*]            
[*]   
[*]            
[*]               
[*]               
[*]               
[*]               
[*]               
[*]               
[*]               
[*]               
[*]               
[*]            
[*]   
[*]            
[*]            
[*]   
[*]            
[*]            
[*]      
[*]      
[*]      
[*]
[*]      
[*]      
[*]
[*]      
[*]      
[*]
[*]
[*]
[*]         
[*]         
[*]
[*]         
[*]         
[*]
[*]      
[*]   
[*]   
[*]


[*]tomcat2的配置文件
[*]
[*]
[*]
[*]
[*]
[*]
[*]   
[*]   
[*]   
[*]   
[*]   
[*]   
[*]   
[*]
[*]   
[*]   
[*]   
[*]   
[*]   
[*]
[*]   
[*]   
[*]   
[*]   
[*]   
[*]   
[*]   
[*]   
[*]   
[*]   
[*]               
[*]   
[*]   
[*]
[*]   
[*]   
[*]
[*]
[*]   
[*]
[*]      
[*]   
[*]
[*]      
[*]               
[*]            
[*]         
[*]            
[*]   
[*]            
[*]               
[*]               
[*]               
[*]               
[*]               
[*]               
[*]               
[*]               
[*]               
[*]            
[*]   
[*]            
[*]            
[*]   
[*]            
[*]            
[*]      
[*]      
[*]      
[*]
[*]      
[*]      
[*]
[*]      
[*]      
[*]
[*]
[*]
[*]         
[*]         
[*]
[*]         
[*]         
[*]
[*]      
[*]   
[*]   
[*]

  2 http下配置
  workers.properties配置


[*]worker.list=controller
[*]
[*]worker.worker1.type=ajp13
[*]worker.worker1.host=localhost
[*]worker.worker1.port=8009
[*]worker.worker1.lbfactor=1
[*]worker.worker1.cachesize=10
[*]worker.worker1.cache_timeout=600
[*]worker.worker1.socket_keepalive=1
[*]worker.worker1.socket_timeout=300
[*]
[*]worker.worker2.type=ajp13
[*]worker.worker2.host=localhost
[*]worker.worker2.port=18009
[*]worker.worker2.lbfactor=1
[*]worker.worker2.cachesize=10
[*]worker.worker2.cache_timeout=600
[*]worker.worker2.socket_keepalive=1
[*]worker.worker2.socket_timeout=300
[*]
[*]worker.controller.type=lb
[*]worker.retries=3
[*]worker.controller.balance_workers=worker1,worker2
worker.controller.method=B
# 如何选择最优的worker, B: 选最不忙的, R: 缺省
worker.controller.sticky_session=0
[*]worker.controller.sticky_session_force=0
[*]#ticky_session   sticky_session_force             含义
#   true             false            SESSION会复制,有粘性
#   true             true             SESSION不复制,有粘性
#   false            false            SESSION会复制,无粘性
#   false            true             SESSION会复制,无粘性
# *注意*worker.controller.sticky_session=1,等同于worker.controller.sticky_session=true.此处指定集群是否需要会话复制,
#如果设为true,则表明为会话粘性,不进行会话复制,当某用户的请求第一次分发到哪台Tomcat后,后继的请求会一直分发到此
#Tomcat服务器上处理;如果设为false,则表明需求会话复制。这就是说,如果你要想进行均衡负载,并在192.168.1.5和192.168.1.3
#两台机器的Tomcat实例上实现集群全局session复制,此处值要设置成false。
#sticky_session 1: True, otherwise False, 相同sessionid一直访问同一服务器   
#sticky_session_force session id出错状态不返回500(Server Error),由另一worker接手

  配置uriworkermap.properties


[*]JkMount /servlet/* controller
[*]JkMount /*.jsp controller

  配置httpd.vhost.conf


[*]NameVirtualHost *:80
[*]
[*]    ServerAdmin webmaster@dummy-host.example.com
[*]    DirectoryIndex index.html index.htm index.jsp
[*]    DocumentRoot "/opt/webapps/test1"
[*]    ServerName localhost
[*]    ErrorLog "logs/dummy-host.example.com-error_log"
[*]    CustomLog "logs/dummy-host.example.com-access_log" common
[*]    Include /usr/local/apache/conf/uriworkermap.properties
[*]   
[*]      Options Indexes FollowSymLinks
[*]      AllowOverride None
[*]      Order allow,deny
[*]      Allow from all
[*]   
[*]

  3 测试负载均衡
  写一个 jsp 来进行测试


[*]

  刷新这个页面(可以换浏览器刷新),然后查看
  /usr/local/tomcat1/logs/catalina.out
  /usr/local/tomcat2/logs/catalina.out
  可以看到2边都会出现==========test========
  说明负载成功
  4 测试session复制
  建一个index.jsp


[*]
[*]
[*]Cluster App Test
[*]
[*]Server Info:
[*]
[*] 0) {
[*]   String dataValue = request.getParameter("dataValue");
[*]   session.setAttribute(dataName, dataValue);
[*]} out.print("Session 列表"); Enumeration e = session.getAttributeNames();
[*]while (e.hasMoreElements()) {
[*]   String name = (String)e.nextElement();
[*]   String value = session.getAttribute(name).toString();
[*]   out.println( name + " = " + value+"");
[*]         System.out.println( name + " = " + value);
[*]   }
[*]%>
[*]
[*]    名称:
[*]      
[*]    值:
[*]      
[*]   
[*]   
[*]
[*]



[*]建立/opt/webapps/test1/WEB-INF文件夹
新建web.xml文件
内容如下
[*]
[*]
[*]
[*]
[*]       TomcatDemo
[*]      
[*]

注意:在应用的web.xml加入即可



然后打开首页同时观察tomcat的日志,可以发现tomcat1在运行这个页面,同时记录了session,然后你停止
tomcat1,会刷新页面你会发现tomcat2依旧保存这个session,说明tomcat1和2session之间是复制了



页: [1]
查看完整版本: apache tomcat jk整合群集负载均衡