Tomcat集群和负载均衡的实现(session同步)

(一) 环境说明

  • 服务器有4台,一台安装apache,三台安装tomcat
  • apache2.0.55、tomcat5.5.15、jk2.0.4、jdk1.5.6或jdk1.4.2
  • ip配置:一台安装apache的ip为192.168.0.88,三台安装tomcat的服务器ip分别为192.168.0.1/2/4

(二) 安装过程

  • 在三台要安装tomcat的服务器上先安装jdk
  • 配置jdk的安装路径,在环境变量path中加入jdk的bin路径,新建环境变量JAVA_HOME指向jdk的安装路径
  • 在三台要安装tomcat的服务器上分别安装tomcat,调试三个tomcat到能够正常启动
  • 分别修改3台tomcat的server.xml端口为:7080/8888/9999
  
  
  
  • 分别测试每个tomcat的启动是否正常

http://192.168.0.1:7080
http://192.168.0.2:8888
http://192.168.0.4:9999

(三) 负载均衡配置过程

  • 在那台要安装apache的服务器上安装apache2.0.55,我的安装路径为默认C:\Program Files\Apache Group\Apache2
  • 安装后测试apache能否正常启动,调试到能够正常启动http://192.168.0.88
  • 下载jk2.0.4后解压缩文件
  • 将解压缩后的目录中的modules目录中的mod_jk2.so文件复制到apache的安装目录下的modules目录中,我的为C:\Program Files\Apache Group\Apache2\modules
  • 修改apache的安装目录中的conf目录的配置文件httpd.conf,在文件中加LoadModule模块配置信息的最后加上一句LoadModule jk2_module modules/mod_jk2.so
  • 分别修改三个tomcat的server.xml,修改内容如下:

将其中的jvmRoute="jvm1"分别修改为jvmRoute="tomcat1"、jvmRoute="tomcat2"和jvmRoute="tomcat3"

       
  
       
             
       
          
     
  • 然后重启三个tomcat,调试能够正常启动
  • 在apache的安装目录中的conf目录下创建文件workers2.propertie,写入文件内容如下
# Define the communication channel   
[channel.socket:192.168.0.1:8009]   
info=Ajp13 forwarding over socket   
#配置第一个服务器   
tomcatId=tomcat1 #要和tomcat的配置文件server.xml中的jvmRoute="tomcat1"名称一致   
debug=0   
lb_factor=1 #负载平衡因子,数字越大请求被分配的几率越高   
  
# Define the communication channel   
[channel.socket:192.168.0.2:8009]   
info=Ajp13 forwarding over socket   
tomcatId=tomcat2   
debug=0   
lb_factor=1   
  
# Define the communication channel   
[channel.socket:192.168.0.4:8009]   
info=Ajp13 forwarding over socket   
tomcatId=tomcat3   
debug=0   
lb_factor=1   
  
[status:]   
info=Status worker, displays runtime information.    
  
[uri:/jkstatus.jsp]   
info=Display status information and checks the config file for changes.   
group=status:   
  
[uri:/*]   
info=Map the whole webapp   
debug=0   
  • 在三个tomcat的安装目录中的webapps建立相同的应用,我和应用目录名为TomcatDemo,在三个应用目录中建立相同 WEB-INF目录和页面index.jsp,index.jsp的页面内容如下:
<%@ page contentType="text/html; charset=GBK" %>   
<%@ page import="java.util.*" %>   
Cluster App Test   
   
Server Info:   
<%   
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"
");%> <% out.println("
ID " + session.getId()+"
"); // 如果有新的 Session 属性设置 String dataName = request.getParameter("dataName"); if (dataName != null && dataName.length() > 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); } %>
名称:
值:
  • 重启apache服务器和三个tomcat服务器,到此负载 均衡已配置完成。测试负载均衡先测试apache,访问http://192.168.0.88/jkstatus.jsp,能否正常访问,并查询其中的内容,有三个tomcat的相关配置信息和负载说明,访问http://192.168.0.88/TomcatDemo/index.jsp看能够运行,能运行,则已建立负载均衡

(四) tomcat集群配置

  • 负载均衡配置的条件下配置tomcat集群
  • 分别修改三个tomcat的server.xml,修改内容如下:
           
  
               
  
               
  
               
  
              
                     
               
                        
              
          

将集群配置选项的注释放开即可

  • 重启三个tomcat,到此tomcat的集群已配置完成

(五) 应用配置

对于要进行负载和集群的的tomcat目录下的webapps中的应用中的WEB-INF中的web.xml文件要添加如下一句配置

   
  
   TomcatDemo   
      

补充:
因为tomcat的session同步功能需要用到组播,windows默认情况下是开通组播服务的,但是linux默认情况下并没有开通,可以通过指令打开route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0,如果需要服务器启动时即开通组播需在/etc/sysconfig/static-routes文件内加入eht0 net 224.0.0.0 netmask 240.0.0.0。具体组播概念请查阅CCNP相关内容。

你可能感兴趣的:(Tomcat集群和负载均衡的实现(session同步))