`
brucejia
  • 浏览: 786 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

(转)Apache2 + Tomcat6配置负载均衡

阅读更多
 
1. 安装Apache和Tomcat,这里假定Apache2.2.3,Tomcat6.x;且Apache安装在apachehost,tomcat分别安装在tomcathost1和tomcathost2上;
2. 修改/etc/hosts文件,确定以下行没有被注释掉
view plaincopy to clipboardprint?
LoadModule proxy_module modules/mod_proxy.so  
LoadModule proxy_http_module modules/mod_proxy_http.so  
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so 
  LoadModule proxy_module modules/mod_proxy.so
  LoadModule proxy_http_module modules/mod_proxy_http.so
  LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
3. 修改/etc/hosts文件,添加以下行:
view plaincopy to clipboardprint?
ProxyRequests off  
<Proxy balancer://tccluster> 
    BalancerMember http://tomcathost1:8080 loadfactor=2 max=150 smax=145 
    BalancerMember http://tomcathost2:8080 loadfactor=1 max=150 smax=145 
    Order Deny,Allow  
    Allow from all  
</Proxy> 
<Location /balancer-manager> 
    SetHandler balancer-manager  
    Order Deny,Allow  
    Allow from all  
</Location> 
<Location /examples> 
    ProxyPass balancer://tccluster/examples stickysession=jsessionid 
    ProxyPassReverse balancer://tccluster/examples  
    Order Deny,Allow  
    Allow from all  
</Location> 
  ProxyRequests off
  <Proxy balancer://tccluster>
      BalancerMember http://tomcathost1:8080 loadfactor=2 max=150 smax=145
      BalancerMember http://tomcathost2:8080 loadfactor=1 max=150 smax=145
      Order Deny,Allow
      Allow from all
  </Proxy>
  <Location /balancer-manager>
      SetHandler balancer-manager
      Order Deny,Allow
      Allow from all
  </Location>
  <Location /examples>
      ProxyPass balancer://tccluster/examples stickysession=jsessionid
      ProxyPassReverse balancer://tccluster/examples
      Order Deny,Allow
      Allow from all
  </Location>
4. 确定apachehost和两台tomcathost可以互访,并且两个tomcat机器在一个网段内;
5. 确定两台tomcat host多播已经打开,在Linux机器上可以使用cat /proc/net/dev_mcast检查,如果文件存在基本上就是打开了;另外确定两台tomcat机器的/etc/hosts文件中包含“xxx.xxx.xxx.xxx    hostname”比如“172.17.1.101    tomcathost1”或“172.17.1.102    tomcathost2”;
6. 修改两个tomcat的conf/server.xml文件,对Engine节点分别添加jvmRoute="tomcat1"和jvmRoute="tomcat2",并添加以下内容:
view plaincopy to clipboardprint?
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"   
    channelSendOptions="6"> 
      
      
    <Manager className="org.apache.catalina.ha.session.DeltaManager" 
        expireSessionsOnShutdown="false" 
        notifyListenersOnReplication="true"/> 
    <!--  
    <Manager className="org.apache.catalina.ha.session.BackupManager" 
        expireSessionsOnShutdown="false" 
        notifyListenersOnReplication="true" 
        mapSendOptions="6"/> 
    --> 
    <Channel className="org.apache.catalina.tribes.group.GroupChannel"> 
        <Membership className="org.apache.catalina.tribes.membership.McastService" 
            address="228.0.0.5" 
            port="45564" 
            frequency="500" 
            dropTime="3000"/> 
        <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 
            address="auto" 
            port="4000" 
            selectorTimeout="100" 
            maxThreads="6"/> 
        <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> 
            <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> 
        </Sender> 
        <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> 
        <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> 
    </Channel> 
    <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/> 
      
    <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/> 
    <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> 
</Cluster> 
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
    channelSendOptions="6">
   
   
    <Manager className="org.apache.catalina.ha.session.DeltaManager"
        expireSessionsOnShutdown="false"
        notifyListenersOnReplication="true"/>
    <!--
    <Manager className="org.apache.catalina.ha.session.BackupManager"
        expireSessionsOnShutdown="false"
        notifyListenersOnReplication="true"
        mapSendOptions="6"/>
    -->
    <Channel className="org.apache.catalina.tribes.group.GroupChannel">
        <Membership className="org.apache.catalina.tribes.membership.McastService"
            address="228.0.0.5"
            port="45564"
            frequency="500"
            dropTime="3000"/>
        <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
            address="auto"
            port="4000"
            selectorTimeout="100"
            maxThreads="6"/>
        <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
            <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
        </Sender>
        <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
        <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
    </Channel>
    <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
   
    <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
    <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
7. 创建一个web app,这里为了简单使用tomcat自带的examples web app(webapps/examples),修改其中的WEB-INF/web.xml文件,在其中<display-name>Servlet and JSP Examples</display-name>节点后添加<distributable/>表明此应用与集群服务器复制Session;
8. 在两个Tomcat的webapps/examples目录下各创建一个test.jsp文件,用来测试Cluster中两个Tomcat的Session复制,代码如下:
view plaincopy to clipboardprint?
<html> 
<head> 
    <title></title> 
</head> 
<body> 
<%  
    String mydata = request.getParameter("mydata");  
    if (mydata != null && mydata.length() != 0) {  
        session.setAttribute("mydata", mydata);  
    }  
      
    out.println("request.getLocalAddr(): " + request.getLocalAddr());  
    out.println("<br/>");  
    out.println("request.getLocalPort(): " + request.getLocalPort());  
    out.println("<br/>");  
    out.println("Session ID: " + session.getId());  
    out.println("<br/>");  
      
    out.println("mydata: " + session.getAttribute("mydata"));  
%> 
<form> 
    <input type=text size=20 name="mydata"> 
    <br> 
    <input type=submit> 
</form> 
</body> 
</html> 
<html>
<head>
    <title></title>
</head>
<body>
<%
    String mydata = request.getParameter("mydata");
    if (mydata != null && mydata.length() != 0) {
        session.setAttribute("mydata", mydata);
    }
   
    out.println("request.getLocalAddr(): " + request.getLocalAddr());
    out.println("<br/>");
    out.println("request.getLocalPort(): " + request.getLocalPort());
    out.println("<br/>");
    out.println("Session ID: " + session.getId());
    out.println("<br/>");
   
    out.println("mydata: " + session.getAttribute("mydata"));
%>
<form>
    <input type=text size=20 name="mydata">
    <br>
    <input type=submit>
</form>
</body>
</html>
9. 启动Tomcat和Apache,访问http://apachehost/examples/,可以修改其中Session中的值,并且可以看到两个tomcat的Session中的值是一样的;
10. 访问http://apachehost/balancer-manager,可以使用此负载均衡管理页面来动态enable/disable其中的某个tomcat。


分享到:
评论

相关推荐

    APACHE 2.2.8+TOMCAT6.0.14配置负载均衡

    APACHE 2.2.8+TOMCAT6.0.14配置负载均衡,我在网上看到的例子,试验了一下,可以使用!!

    配置安装Apache+Apache Tomcat实现tomcat负载均衡教程.doc

    配置安装Apache+Apache Tomcat实现tomcat负载均衡教程.doc

    APACHE 2.2.9+TOMCAT6.0.18配置负载均衡

    ### APACHE 2.2.9+TOMCAT6.0.18 配置负载均衡 #### 目标 本教程旨在通过使用 Apache 2.2.9 和 Tomcat 6.0.18 来搭建一个可以实际部署运行的 Web 网站。具体目标包括: 1. **实现 Apache 作为 HTTP 服务器**:...

    apache+tomcat+jk 均衡负载和集群

    Apache+Tomcat+JK是一个常见的Web服务器和应用服务器集群解决方案,用于实现负载均衡和高可用性。这个配置中,Apache作为前端反向代理服务器,Tomcat作为后端的应用服务器,而JK模块是Apache与Tomcat之间的连接器,...

    Apache+Tomcat+JK 实现集群负载均衡文档

    Apache+Tomcat+JK 实现集群负载均衡是一种常见的Web服务器和应用服务器的部署方式,它能够提高系统的可用性和响应速度,实现服务的高并发处理。本文将详细介绍如何配置这一环境。 首先,我们需要准备以下软件: 1. ...

    apache+tomcat7+jk负载均衡

    配置Apache+Tomcat7+jk负载均衡的基本步骤如下: 1. 安装Apache HTTP Server和Tomcat7,确保它们都能正常运行。 2. 配置mod_jk模块。这通常包括编译和安装mod_jk,然后在Apache的配置文件(如httpd.conf)中加载该...

    APACHE 2.2.15+TOMCAT6.0.26配置负载均衡

    1、 Apache 做为 HttpServer ,后面连接多个 tomcat 应用实例,并进行负载均衡。 2、 为系统设定 Session 超时时间,包括 Apache 和 tomcat 3、 为系统屏蔽文件列表,包括 Apache 和 tomcat 注:本例程以一台机器...

    Apache+Tomcat+JK配置负载均衡

    Apache+Tomcat+JK配置负载均衡是Web服务器与应用服务器集群的一种常见组合,用于实现高可用性和高并发处理能力。Apache作为前端服务器,通过JK模块(mod_jk)与后端的Tomcat应用服务器进行通信,将HTTP请求分发到多...

    tomcat+apache+jk集群和负载均衡

    以下是对标题“tomcat+apache+jk集群和负载均衡”以及描述“tomcat+apache+jk集群和负载均衡”的深入解析,涵盖其原理、配置步骤以及关键参数调整。 ### 1. 理论基础 #### Tomcat Tomcat是Apache软件基金会下的一...

    Apache+JK+Tomcat搭建负载均衡

    Apache+JK+Tomcat搭建负载均衡是一种常见的高可用性和性能优化策略,主要目的是分散网络流量,提高服务的稳定性和响应速度。这个方案特别适合大型网站或应用,可以有效防止单点故障,提升用户体验。 首先,负载均衡...

    Apache2_2+Tomcat6配置集群、负载均衡

    Apache2_2+Tomcat6配置集群、负载均衡

    Apache2.2+tomcat6.0搭建负载均衡服务器

    Apache2.2与Tomcat6.0的组合可以构建一个高效、可靠的负载均衡服务器系统,以分散客户端请求到多个后端应用服务器,提高整体服务的可用性和响应速度。以下是搭建和配置的关键步骤及知识点: 1. **Apache2.2安装配置...

    windows平台apache+tomcat+说明文档负载均衡整个环境

    本人自己配置的windows平台apache+tomcat负载均衡实现,这个资源中包括apache,tomcat,测试项目+说明文档。只要正确安装apache,即可直接正常运行。本人参考网络,所以给贡献网络。

    Windows下Apache2.2+Tomcat6配置集群、负载均衡、session共享

    在Windows环境下,Apache2.2和Tomcat6的组合是一个常见的Web服务器架构,用于搭建集群、实现负载均衡和处理session共享。Apache作为前端反向代理服务器,负责分发请求到后端的多个Tomcat实例,以提高应用的可用性和...

    Apache 2+Tomcat 6负载均衡与集群配置及性能测试

    Apache 2+Tomcat 6 负载均衡与集群配置是提高Web应用程序可用性和性能的关键技术。通过负载均衡,可以将来自用户的请求均匀分配到多个服务器,避免单点故障,提升系统的整体处理能力。而Tomcat集群则使得多个Tomcat...

    Apache+Tomcat+Linux集群和负载均衡

    ### Apache+Tomcat+Linux集群和负载均衡 在IT领域,Apache+Tomcat+Linux集群与负载均衡技术是实现高可用性、高性能Web服务的重要手段之一。本文将围绕这一主题展开详细讨论,涵盖关键技术概念、配置流程及注意事项...

    Apache+Tomcat+Linux集群和均衡负载(Session同步复制

    Apache+Tomcat+Linux集群和均衡负载(Session同步复制

    Apache+Tomcat集群和负载均衡的资料

    ### Apache+Tomcat集群与负载均衡配置详解 #### 一、环境说明 为了实现Apache与Tomcat集群的负载均衡,我们需要准备以下环境: 1. **服务器配置**:四台服务器,其中一台安装Apache,三台安装Tomcat。 - Apache...

Global site tag (gtag.js) - Google Analytics