zoukankan      html  css  js  c++  java
  • Apache+modproxy布置tomcat集群

    一、环境:

    Apache: 2.2.14;

      下载地址:http://archive.apache.org/dist/httpd/binaries/win32/

    Tomcat: 7.0.82

    JDK1.7

    Win7 64位系统

    二、Apache设置:

    1、修改httpd.conf文件:

    LoadModule proxy_module modules/mod_proxy.so

    LoadModule negotiation_module modules/mod_negotiation.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

    此段代码前面的注释放开。

    注意:需要确保这些so文件在modules文件夹下存在,如果没有则需要到网上下载后并放到modules目录下;

    2、将下面这段代码放开注释:

    # Virtual hosts

    Include conf/extra/httpd-vhosts.conf

    3、文件末尾加入代码:

    ProxyRequests On

       <proxy balancer://cluster>  

           BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=tomcat1 

           BalancerMember ajp://127.0.0.1:8109 loadfactor=1 route=tomcat2 

       </proxy>

    4、在conf/extra/httpd-vhosts.conf中添加代码:

    <VirtualHost *:80>   // 对应httpd.conf  服务器端口号

        ServerAdmin test@163.com

        ServerName 127.0.0.1 

        ServerAlias localhost  

        ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On

        ProxyPassReverse / balancer://cluster/

        ErrorLog "logs/proxyTest-error.log"

        CustomLog "logs/lbtest-access.log" common

    </VirtualHost>

    ServerAdmin参数对应httpd.conf文件中的ServerAdmin参数内容;

    5、启动apache,如果启动不了可以使用命令行启动httpd.exe文件,通过查看报错信息来解决;

    三、Tomcat设置:

    1、 如果两个tomcat实例是运行在一台机器上,需要修改对应的端口,如果是在两台机器上,则可以不用修改端口;需要修改的端口号如下:

    2、增加jvmRoute参数:

     

    3、放开Cluster参数:

     

    4、分别启动tomcat1和tomcat2;

    四、测试:

    新建一个测试的web工程,在web.xml文件中增加一行:

        <distributable/>

    建立测试页面文件index.jsp:

    <%@ 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>"); 

            // 如果有新的 Session 属性设置 

            String dataName = request.getParameter("dataName"); 

            if (dataName != null && dataName.length() > 0) { 

                String dataValue = request.getParameter("dataValue"); 

                session.setAttribute(dataName, dataValue); 

            } 

            out.println("<b>Session 列表</b><br>"); 

            System.out.println("============================"); 

            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); 

            } 

        %>

    </body>

    </html> 

    启动Apache,在浏览器中打开:http://localhost:80/test/index.jsp,可以看到Apache会把请求负载到tomcat1和tomcat2上,但是session一直没有改变,说明session在两个tomcat之间进行了同步;

  • 相关阅读:
    JS跨域访问CORS配置
    在Maven中混用Java和Scala
    Linux下开源可视化工具Caravel安装(包含缺少js解决办法)
    linux环境下NPM安装小结(淘宝镜像)
    Spark学习笔记
    导出HBase数据到Excel(Java代码)
    Spark通过JdbcRdd连接Oracle数据库(scala)
    基于AngularJS+Bootstrap的多文件上传与管理
    Hadoop-1.2.1 安装步骤小结(ubuntu)
    git-remote-https.exe 无法找到入口
  • 原文地址:https://www.cnblogs.com/laoxia/p/7919688.html
Copyright © 2011-2022 走看看