apache+tomcate集成2

本地apahce:
http://sop.cnsuning.com:8081/test/test.jsp

tomcate1:
http://sop.cnsuning.com:8080/test/test.jsp

tomcate2:
http://sop.cnsuning.com:8082/test/test.jsp

1. 软件准备
apache http server 2.4-->官网:http://www.apache.org/
JDK8 64位               -->官网:http://www.java.com/zh_CN/
TOMCAT_7              -->官网: http://tomcat.apache.org/
mod_jk                      -->官网: http://tomcat.apache.org/  Download标题下找到 TomcatConnectors链接进入,看起来像是个Unix/Linux下的动态库,实际应是个Win32的 DLL动态库,大概是为保持不同平台配置的一致性,才用了这个扩展名(*.so)。
apache http server 2.4 和 JDK8 64位  是安装版的软件,其他是 解压版的软件。
2.目录准备以及软件安装
创建目录:E:/soft/apache_jiqun
apache http server 2.4 安装在 该目录下
TOMCAT_7 解压出来两份,放到该目录下
准备好的效果如下:
JDK8 64位按照正常安装即可,但是需要配置好环境变量,JAVA_HOME,和PATH
mod_jk解压出来以后so文件之后,重命名为mod_jk.so,并放到./ Apache2.4/modules 目录下
 
3. 软件配置 - 负载均衡
3.1修改apache配置文件 http.conf
在apache安装目录下conf目录中找到http.conf,在文件最后加上下面一句话就可以了


   include conf/mod_jk.conf
 
3.2 http.conf 同目录下,创建 mod_jk.conf 文件,内容如下:
LoadModule jk_module modules/mod_jk.so
 
JkWorkersFile conf/workers.properties
 
JkMount /* controller
 
意义分别为:
加载 mod_jk.so 模块
加载mod_jk.so 配置文件
指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器 ( 比如制定 jsp 文件:JkMount /*.jspcontroller )
 
3.3 http.conf 同目录下,创建 workers.properties文件 ,内容如下:
worker.list = controller,tomcat1,tomcat2
#========tomcat1========
worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
 
#========tomcat2========
worker.tomcat2.port=8109
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=2
 
#========controller========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2
worker.controller.sticky_session=1
 
意义分别是:
worker.list  :server 列表
worker.tomcat1.port :                      ajp13端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.host:                     tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.lbfactor:              server的加权比重,值越高,分得的请求越多
worker.controller.balanced_workers :  指定分担请求的tomcat 
 
3.4 修改 tomcat 配置文件server.xml
如果你是水平集群,即在不同电脑上安装tomcat,tomcat的安装数量为一个,可以不必修改tomcat配置文件.我这里是在同一台电脑上安装两个tomcat,实现的是垂直集群方式,所以必须修改其中一个的设置,以避免端口冲突
1) 将关闭Tomcat的监听端口改成由8005改为8105
即把
 <Server port="8005"shutdown="SHUTDOWN">
改为
 <Server port="8105"shutdown="SHUTDOWN">


2) 把http服务端口号由8080改为8180
找到
 <!-- Define a non-SSL HTTP/1.1Connector on port 8080 -->
    <CONNECTOR port="8080" 
把这里的8080改为8180


3) 把AJP端口号由8009改为8109
找到
 <!-- Define an AJP 1.3 Connector onport 8009 -->
    <CONNECTOR port="8009"
把这里的8009改为8109
 
4) .编写一个测试 jsp
建立一个目录test,里面新建一个test.jsp,内容为:
<%    
   System.out.println("===========================" + session.getId());   
%> 
 
把目录 test放到tomcat1,tomcat2的webapps下
5) .启动apache,tomcat1,tomcat2,进行测试
通过 http://localhost/test/test.jsp 访问,多刷新几次页面,查看Tomcat1和Tomcat2的窗口,你将可以看到打印了一行行"=========================== 94CEFC2684DFABF2BB3960CE7AA87367 ",并且从统计上来说,大约在tomcat2打印的数量是在Tomcat1中的两倍,并且每个控制窗口打出的session并不一致。可以看到请求会被tomcat1,tomcat2按照不同的权重分流处理,实现了负载均衡
 
4. 软件配置-配置集群,SESSION复制
 只配置负载均衡还不行,还要session复制,也就是说其中任何一个tomcat的添加的session,是要同步复制到其它tomcat,集群内的tomcat都有相同的session
4.1修改tomcat1, tomcat2的server.xml,将集群部分配置,即对注释的 <Cluster>节点下添加以下内容:(注意,tomcat2中,Receiver 端口改成  4001)


<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"  channelSendOptions="8">   
         
          <Manager className="org.apache.catalina.ha.session.DeltaManager"  
                   expireSessionsOnShutdown="false"  
                   notifyListenersOnReplication="true"/>   
  
          <Channel className="org.apache.catalina.tribes.group.GroupChannel">   
            <Membership className="org.apache.catalina.tribes.membership.McastService"  
                    address="228.0.0.4"    <!--注意,这个地址是固定的,不要修改  -->
                        port="45564"  
                        frequency="500"  
                        dropTime="3000"/>   

            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"  
                  address="auto"
                      port="4001"    <!--注意,tomcat2中,该处的端口改成  4001  -->
                      autoBind="100"  
                      selectorTimeout="5000"  
                      maxThreads="6"/>   
            <!-- timeout="60000"-->   
            <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"/>   
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>   
          </Channel>   
  
          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"  
                 filter=""/>   
          <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>   
  
          <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>   
          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>   
        </Cluster>
 
4.2 配置 session 复制
在 test目录下新建WEB-INF目录,WEB-INF下新建web.xml,内容如下


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
<display-name>test</display-name>
   <distributable /> <!--distributable 主要配置  -->
</web-app>
 
4.3 测试session 是否一致
通过 http://localhost/test/test.jsp 访问,多刷新几次页面,在控制台打印的 session 值都是一致的。
 
结语:前几天我一直想搞 websphere集群,但是 websphere实在是个庞然大物,并且免费下载的还欠缺着好多功能,并且还有试用期!!!实在不爽,后来我也想明白了,搞什么集群不是搞啊,重点是掌握纵向集群的原理和需要的场景。这些配置是不变的,只是配置页面不一样仅此而已,但是咱们可以根据自己的知识和websphere公司去沟通交流了不是?!所以当以后在工作中哪怕是遇到 websphere 集群的需求也不惧


参考来自:http://www.th7.cn/system/win/201504/102019.shtml
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值