码迷,mamicode.com
首页 > Windows程序 > 详细

apache2.4+tomcat7 单机垂直集群 64位 windows操作系统

时间:2015-04-19 17:55:09      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:windows   集群   tomcat   apache   负载均衡   

   随着现在服务器的廉价,大多数的生产环境内存大多都已经达到 16G,但是java的运行环境,最大只能停留在2G ,这样就造成了这台服务器资源的浪费,所以单机的垂直集群就显得太有必要!本文需要具备 windows操作基础以及javaEE基础

   生产环境大多都是 linux操作系统,鉴于写博客的方便性,我只能在自己电脑专供的win7 64位的操作系统中展示这个集群的部署方法,当然了在 windows和linux 中部署集群大同小异,大家重点看方法和步骤即可,好啦,正式入题!

   因为我本机是 64位操作系统,所以这篇文章用到的都是 64位 软件,切记不能有32位的软件,否则会出问题(我已经遇到!)。

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,tomcat2webapps

5) .启动apache,tomcat1,tomcat2,进行测试

通过 http://localhost/test/test.jsp 访问,多刷新几次页面,查看Tomcat1Tomcat2的窗口,你将可以看到打印了一行行"=========================== 94CEFC2684DFABF2BB3960CE7AA87367 ",并且从统计上来说,大约在tomcat2打印的数量是在Tomcat1中的两倍,并且每个控制窗口打出的session并不一致。可以看到请求会被tomcat1,tomcat2按照不同的权重分流处理,实现了负载均衡

 

4. 软件配置-配置集群,SESSION复制

 只配置负载均衡还不行,还要session复制,也就是说其中任何一个tomcat的添加的session,是要同步复制到其它tomcat集群内的tomcat都有相同的session

4.1修改tomcat1, tomcat2server.xml,将集群部分配置, 即对注释的 <Cluster>节点下添加以下内容:(注意,tomcat2中,Receiver 端口改成  4001)

<ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster" >

 

          <ManagerclassName="org.apache.catalina.ha.session.DeltaManager"

                  expireSessionsOnShutdown="false"

                  notifyListenersOnReplication="true"/>

 

        <ChannelclassName="org.apache.catalina.tribes.group.GroupChannel">

            <MembershipclassName="org.apache.catalina.tribes.membership.McastService"

                        address="228.0.0.4"

                        port="45564"

                       frequency="500"

                       dropTime="3000"/>

            <ReceiverclassName="org.apache.catalina.tribes.transport.nio.NioReceiver"

                      address="auto"

                      port="4000"             <!-- 注意,tomcat2 中,该处的端口改成  4001  -->

                      autoBind="100"

                     selectorTimeout="5000"

                     maxThreads="6"/>

 

            <SenderclassName="org.apache.catalina.tribes.transport.ReplicationTransmitter">

              <TransportclassName="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>

            </Sender>

            <InterceptorclassName="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>

            <InterceptorclassName="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>

        </Channel>

 

        <ValveclassName="org.apache.catalina.ha.tcp.ReplicationValve"

                filter=".*.gif|.*.js|.*.jpeg|.*.jpg|.*.png|.*.htm|.*.html|.*.css|.*.txt"/>

        <ValveclassName="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

 

        <DeployerclassName="org.apache.catalina.ha.deploy.FarmWarDeployer"

                   tempDir="/tmp/war-temp/"

                    deployDir="/tmp/war-deploy/"

                   watchDir="/tmp/war-listen/"

                   watchEnabled="false"/>

 

        <ClusterListenerclassName="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,内容如下

<web-appxmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"version="2.4">

      <display-name>test</display-name>

   <distributable />

</web-app>

 

4.3 测试session 是否一致

通过 http://localhost/test/test.jsp 访问,多刷新几次页面,在控制台打印的 session 值都是一致的。

 

结语:前几天我一直想搞 websphere 集群,但是 websphere 实在是个庞然大物,并且免费下载的还欠缺着好多功能,并且还有试用期!!!实在不爽,后来我也想明白了,搞什么集群不是搞啊,重点是掌握纵向集群的原理和需要的场景。这些配置是不变的,只是配置页面不一样仅此而已,但是咱们可以根据自己的知识和websphere公司去沟通交流了不是?!所以当以后在工作中哪怕是遇到 websphere 集群的需求也不惧!


本文用到的软件,我也放到了我的下载 频道中,欢迎下载!

 

借鉴文章:

http://blog.csdn.net/kypfos/article/details/3081330

http://blog.chinaunix.net/uid-26184465-id-3761118.html

apache2.4+tomcat7 单机垂直集群 64位 windows操作系统

标签:windows   集群   tomcat   apache   负载均衡   

原文地址:http://blog.csdn.net/xingshi89/article/details/45130781

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!