Tomcat+Aapache集群

来源:互联网 发布:家装招标软件 编辑:程序博客网 时间:2024/06/06 03:08

一直觉得大并发、多请求的分担很好奇,所以在网上找了一些资料做了一下ApacheServer+Tomcat集群,看了资料之后才理解原来大并发就是把N多个请求用一个负载均衡服务器装起来,然后在分发到各个服务器上(并保持请求的同步、session的复制),集群的概念图就是下面这样。



下面就开始实现ApacheServer+Tomcat集群的安装。首先需要下载tomcat和apacheServer 然后解压安装,安装apacheServer 一路Next既可;安装完成之后,访问localhost测试一下服务是否开启



ApacheServer安装完成之后,就可以配置Tomcat了。在ApacheServer的安装目录下面把下载的tomcat解压多个,并命名好


文件解压完成之后,需要下载一个tomcat自带的组件:mod_jk  

 http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.31/mod_jk-1.2.31-httpd-2.2.3.so

,ApacheServer就是通过这个玩意把请求分发给多个tomcat的。

下载完成之后,把它放到ApacheServer安装目录的modules下面,然后在conf目录下面新建一个mod_jk.conf文件,并添加下面的配置:

#加载mod_jk Module

LoadModule jk_modulemodules/mod_jk-1.2.31-httpd-2.2.3.so

 

#指定workers.properties文件路径

JkWorkersFile conf/workers.properties

 

#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名

JkMount /* controller

注意红色部分的配置,发现了什么? 对没错,它指向了一个workers.properties配置文件。在ApacheServer的安装目录的conf目录下面新建一个workers.properties文件,并添加如下配置:

#server

worker.list= controller

#========tomcat1========

#ajp13端口号,在tomcat下server.xml配置,默认8009

worker.tomcat1.port=8009

 

#tomcat的主机地址,如不为本机,请填写ip地址

worker.tomcat1.host=localhost

 

#协议类型

worker.tomcat1.type=ajp13

 

#server的加权比重,值越高,分得的请求越多。lbfactor是负载平衡因数(Load Balance Factor)

worker.tomcat1.lbfactor=1

 

#========tomcat2========

worker.tomcat2.port=9009

worker.tomcat2.host=localhost

worker.tomcat2.type=ajp13

worker.tomcat2.lbfactor=1

 

#========controller,负载均衡控制器========

#负载均衡控制器类型,lbfactor是负载平衡因数(LoadBalance Factor)

worker.controller.type=lb

 

#指定分担请求的tomcat列表

worker.controller.balanced_workers=tomcat1,tomcat2

 

#粘性session(默认是打开的) 当该属性值=true(或1)时,代表session是粘性的,即同一session在集群中的同一个节点上处理,session不跨越节点。在集群环境中,一般将该值设置为false

worker.controller.sticky_session=false

 

#设置用于负载均衡的server的session可否共享

worker.controller.sticky_session_force=1


上面的配置完成之后,最后还添加一个配置,在ApacheServer的安装目录中的conf下面的httpd.conf文件中最后一行添加: Include conf/mod_jk.conf  好啦 负载均衡服务器的配置就OK啦...

下面开始配置Tomcat

在ApacheServer同级目录中的tomcat1中的server.xml里面的<Engine>中添加 jvmRoute="tomcat1" (注意,这个名字要和workers.properties文件中的一致)


并在<Engine>下面添加:

<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="4000"
                          autoBind="100"
                          selectorTimeout="5000"
                          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=""/>
          <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                    tempDir="/tmp/war-temp/"
                    deployDir="/tmp/war-deploy/"
                    watchDir="/tmp/war-listen/"
                    watchEnabled="false"/>
          <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
       </Cluster>

OK 第一个Tomcat的配置就完成了!第二个Tomcat配置和第一个差不多一样,就不累述。

注意:因为在一台机器上部署两台tomcat,所以需要修改第二个tomcat的端口,不然会产生冲突

<Server port="9005" shutdown="SHUTDOWN"> 默认为:8005

 

然后修改http1.1的端口,默认是8080

<Connector port="9080"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />

最后修改AJP1.3端口,默认是8009

<Connector port="9009"protocol="AJP/1.3" redirectPort="8443" />

这个AJP1.3的端口必须与C:\cluster\httpd\conf\ workers.properties文件中的配置保持一下


配置完成之后,重启ApacheServer和启动tomcat和tomcat2,发现之前访问localhost是apache的主页,现在变成Tomcat的主页了。


OK  ApacheServer+Tomcat的集群就配置Ok啦...



0 0
原创粉丝点击