`

tomcat+apach load balance

阅读更多
本文主要参考自http://www.iteye.com/topic/985404?dhcc,经由实际操作配置操并记录而成。

一、环境和版本
        环境:主机----Windows7(本地localhost);
        版本:JDK----1.5.0_22(安装版); Tomcat39----6.0.39(安装版);Tomcat32----6.0.32(安装版)Apache----2.2.25(httpd-2.2.25-win32-x86-no_ssl.msi,安装版)
二、apache tomcat配置操作
       1、Apache----2.2.25版本已经集成了mod_jk功能,故不必配置繁琐的worker.properties文件什么的,配置过程很方便了。
        2、利用编辑器打开APACHE_HOME\conf\httpd.conf文件,找到如下代理块(proxy):
             #LoadModule proxy_module modules/mod_proxy.so
             #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
             #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
             #LoadModule proxy_connect_module modules/mod_proxy_connect.so
             #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
             #LoadModule proxy_http_module modules/mod_proxy_http.so
        3、去掉这些代理块的注释“#”符号,Apache在启动的过程中将加载上述代理(proxy)。
        4、文件结束处添加如下代码:
             ProxyRequests Off
             <proxy balancer://cluster>
                    BalancerMember ajp://localhost:8009 loadfactor=1 route=jvm1
                    BalancerMember ajp://localhost:9009 loadfactor=1 route=jvm2
             </proxy>
        5、找到#Include conf/extra/httpd-vhosts.conf位置,并去掉“#”符号。
        6、利用编辑器打开APACHE_HOME\conf\extra\httpd-vhosts.conf文件,配置虚拟站点,在文件结束添加
        <VirtualHost *:80>
   ServerAdmin test@gmail.com
   ServerName localhost
   ServerAlias localhost
   ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
   ProxyPassReverse / balancer://cluster/
   ErrorLog "logs/error.log"
   CustomLog "logs/access.log" common
         </VirtualHost>
        7、配置Tomcat----server.xml文件
        7.1、如果是2个Tomcat处于不同的机器上,就不需要修改任何端口;只是需要把<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">注释符放开,同时将<Engine name="Catalina" defaultHost="localhost">注释掉;
        7.2、对于tomcat在同一部机器的情况,将其中tomcat39的<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">改为<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">
        7.3 将tomcat39的<Server port="8005" shutdown="SHUTDOWN">
            <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
            <Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"
               redirectPort="8443" />
            8005改为9005,8009改为9009,8080改为9080
            9009端口对应 Apache httpd.conf中BalancerMember中配置的ajp连接端口。
        7.4、将<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>的注释放开,目的是可以在集群中的所有tomcat节点间共享会话(Session)。
三、新建测试web project
        1、在此引用一个网络上的测试session的例子:
       <%@ page contentType="text/html; charset=GBK" %> 
       <%@ page import="java.util.*" %> 
       <html><head><title>Cluster App Test</title></head> 
       <body> 
        Server Info: 
       <% 
         out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%> 
       <% 
         out.println("<br> ID " + session.getId()+"<br>"); 
         String dataName = request.getParameter("dataName"); 
  
         if (dataName != null && dataName.length() > 0) { 
            String dataValue = request.getParameter("dataValue"); 
            session.setAttribute(dataName, dataValue); 
         }  
         out.print("<b>Session 列表</b>");  
  
         Enumeration e = session.getAttributeNames(); 
         while (e.hasMoreElements()) { 
            String name = (String)e.nextElement(); 
            String value = session.getAttribute(name).toString(); 
            out.println( name + " = " + value+"<br>"); 
               System.out.println( name + " = " + value); 
         } 
      %> 
          <form action="test.jsp" method="POST"> 
            名称:<input type=text size=20 name="dataName"> 
            <br> 
            值:<input type=text size=20 name="dataValue"> 
            <br> 
            <input type=submit> 
          </form> 
        </body> 
      </html>

        2、myeclipse new 一个web project 在WebRoot下面新建一个test.jsp,内容为上面的代码,在WebRoot\WEB-INF\web.xml 的<web-app>节点下加入<distributable />通知Tomcat在当前应用集群中的所有节点间实现Session共享。
        3、在两个TOMCAT_HOME\conf\server.xml的<Host></Host>之间添加<Context   path="/test"   docBase="D:\workspace\testLoadBlance\WebRoot"   reloadable="true"   debug="0"></Context>
四、测试load balance
        1、启动tomcat39,tomcat32,apache,在浏览器中输入http://localhost/test/test.jsp,每刷新一次apache都会将请求发送到不同的tomcat中。
        2、通过在jvm1中提交名称和值后刷新到jvm2可以看到jvm1提交的值,反之亦然,说明load balance并且共享session目的达到。
五、存在的问题
        1、用tomcat7时session无法共享。
       
      
分享到:
评论

相关推荐

    apache+tomcat 负载平衡

    "Apache + Tomcat 负载平衡"的组合是业界常见的解决方案,用于解决高并发访问时服务器压力过大、读取文件速度慢等问题。下面将详细介绍这个主题的相关知识点。 首先,Apache HTTP Server(简称Apache)是一款开源的...

    apache+tomcat集群文档

    - 常见的设计模式包括本地服务器负载均衡(Local Server Load Balance)和全局服务器负载均衡(Global Server Load Balance)。 - **负载均衡方法**: - DNS轮询:通过DNS解析时的轮询机制实现负载均衡。 - IP哈希:...

    Tomcat5基于JK的集群(Cluster)和负载平衡(Load Balance)

    标题"Tomcat5基于JK的集群(Cluster)和负载平衡(Load Balance)"提及了两个核心概念:Tomcat集群和负载平衡。Tomcat是Apache软件基金会的开源Java Servlet容器,用于部署和运行Java web应用程序。集群是在多台...

    apache+Tomcat负载平衡设置详解

    worker.loadbalancer.balance_workers=worker1,worker2 worker.loadbalancer.sticky_session=true ``` 这个配置创建了两个 AJP 连接的 worker(worker1 和 worker2),以及一个负载平衡器(loadbalancer),使用...

    Apache+Tomcat负载平衡设置方法详细解析

    例如,可以使用`worker.loadbalancer.type=lb`创建一个负载均衡器worker,并通过`worker.loadbalancer.balance_workers`指定参与负载平衡的worker列表。 在实际部署中,除了上述配置,还需要确保Apache和Tomcat之间...

    apache tomcat 集群

    这依赖于`worker.loadBalancer.balance_workers`配置中的正确设置。 6. **监控和日志**: 集群的监控非常重要,可以使用Apache的`mod_status`模块来查看服务器状态,以及Tomcat的管理界面来监控每个实例的性能和...

    tomcat负载均衡

    负载均衡的策略主要包括本地负载均衡(Local Server Load Balance)和全局负载均衡(Global Server Load Balance)。其中: - **本地负载均衡**:适用于在同一地理区域内的服务器集群之间进行负载均衡。 - **全局...

    Tomcat集群与负载均衡

    负载均衡(Load Balance)则是集群的核心组成部分,它通过特定算法将请求分发到集群内的各个服务器,使得服务器之间的负载相对均衡,提高了系统的处理能力和可用性。 负载均衡有多种实现方式: 1. 基于DNS的负载...

    详解TOMCAT的应用及操作

    Tomcat的集群(Cluster)和负载均衡(Load Balance)是高级特性,用于提高服务的可用性和性能。集群允许多个Tomcat实例协同工作,看起来像是单一的服务,通过网络共享内存进行通信。负载均衡则是在多个服务器之间...

    Apache安装及JBOSS部署说明文档.rar

    描述了apache jboss3.2.6做负载均衡(load balance)的部署细节以及一些常见错误说明;描述了部署jboss3.2.3/3.2.6时一些心得、常用配置项。 目 录 1 .Apache2.0及连接器jk1.2的编译部署 4 1.1下载相关软件包 ...

    linux下tomcat集群的负载均衡

    2. **负载均衡集群 (Load Balance Cluster)**:此类集群中的所有节点都处于活动状态并分担工作负载,适用于 Web 服务器、数据库服务器和应用服务器等场景。 3. **科学计算集群 (High Performance Computing Cluster,...

    Jboss集群配置指南

    1. WEB Loadbalance 3 2. HTTP Session复制 3 3. JNDI 3 4. EJB 3 第二部分 集群物理实现 4 1. 物理架构 4 2. 机器网址分配 4 3. 软件环境 4 第三部分 集群配置 5 1. Apache 配置 5 2. Tomcat配置 6 3. Jboss配置 6 ...

    JK负载均衡

    worker.loadbalancer.balance_workers=worker1,worker2 worker.loadbalancer.method=lc ``` 6. **监控与故障恢复**: 通过JK的健康检查功能,可以定期检测worker的状态,当检测到某个worker不可用时,自动将流量...

    WEB系统中实现负载均衡

    这类软件包括DNS Load Balance、Apache、Nginx等。 - **优点**:配置简单、使用灵活、成本较低。 - **缺点**:每台服务器上安装额外的软件可能会消耗系统资源,影响性能;扩展性有限;可能存在安全风险。 ##### 2. ...

    Dubbo Developer Guide.pdf

    - **负载均衡**:负载均衡策略,如 Random LoadBalance、RoundRobin LoadBalance 等。 - **线程模型**:配置线程池的使用。 - **直连提供者**、**只订阅**、**只注册**、**静态服务**等高级配置。 - **多协议、多...

Global site tag (gtag.js) - Google Analytics