Tomcat for Windows集群

来源:互联网 发布:卖东西的软件 编辑:程序博客网 时间:2024/05/22 15:50

(一)环境说明
(1)服务器有1台,分别解压tomcat软件至c:\tomcat1,c:\tomcat2,c:\tomcat3
(2)apache2.0.63、tomcat5.5.26、jk2.0.4、jdk1.4.2
(3)IP配置:tomcat的服务器IP为192.168.0.1
(二)安装过程
(1)在安装tomcat的服务器上先安装jdk
(2)配置jdk的安装路径,在环境变量path中加入jdk的bin路径,新建环境变量JAVA_HOME指向jdk的安装路径[n1] 
(3)tomcat的默认WEB服务端口是8080,默认的模式是单独服务,我的三个tomcat的WEB服务端口修改为7777/8888/9999
(4)调试tomcat到能够正常启动修改位置为tomcat的安装目录下的conf/server.xml
修改前的配置为
    <Connector port="8080"maxHttpHeaderSize="8192"
              maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
              enableLookups="false" redirectPort="8443"acceptCount="100"
              connectionTimeout="20000" disableUploadTimeout="true" />
修改后的配置为
    <Connector port="7777"maxHttpHeaderSize="8192"
              maxThreads="150" minSpareThreads="25"maxSpareThreads="75"
              enableLookups="false" redirectPort="8443"acceptCount="100"
              connectionTimeout="20000" disableUploadTimeout="true" />
依次修改每个tomcat的监听端口(7777/8888/9999)

同理修改:
AJP 1.3 Connector的端口号分别改为:8009/8019/8029
Server port 端口号分别改为:8005/8015/8025
(5)分别测试每个tomcat的启动是否正常
http://192.168.0.1:7777
http://192.168.0.1:8888
http://192.168.0.1:9999
(三)负载均衡配置过程
(1)在那台要安装apache的服务器上安装apache2.0.63,安装路径为默认C:\ProgramFiles\Apache Group\Apache2
(2)安装后测试apache能否正常启动,调试到能够正常启动http://192.168.0.8080
(3)下载jk2.0.4后解压缩文件
(4)将解压缩后的目录中的modules目录中的mod_jk2.so文件复制到apache的安装目录下的modules目录中,我的为C:\ProgramFiles\Apache Group\Apache2\modules
(5)修改apache的安装目录中的conf目录的配置文件httpd.conf,在文件中加LoadModule模块配置信息的最后加上一句LoadModule jk2_module modules/mod_jk2.so
(6)分别修改三个tomcat的配置文件conf/server.xml,修改内容如下
修改前
    <!-- An Engine represents the entry point (withinCatalina) that processes
         every request.  TheEngine implementation for Tomcat stand alone
         analyzes the HTTP headersincluded with the request, and passes them
         on to the appropriate Host(virtual host). -->
    <!-- You should set jvmRoute to supportload-balancing via AJP ie :
    <Engine name="Standalone"defaultHost="localhost" jvmRoute="jvm1">        
    -->        
    <!-- Define the top level container in our containerhierarchy -->
    <Engine name="Catalina"defaultHost="localhost">
修改后
    <!-- An Engine represents the entry point (withinCatalina) that processes
         every request.  TheEngine implementation for Tomcat stand alone
         analyzes the HTTP headersincluded with the request, and passes them
         on to the appropriate Host(virtual host). -->
    <!-- You should set jvmRoute to supportload-balancing via AJP ie :-->
    <Engine name="Standalone"defaultHost="localhost" jvmRoute="tomcat1">                
    <!-- Define the top level container in our containerhierarchy
    <Engine name="Catalina"defaultHost="localhost">
    -->
将其中的jvmRoute="jvm1"分别修改为jvmRoute="tomcat1"和jvmRoute="tomcat2"和jvmRoute="tomcat3"
(7)然后重启三个tomcat,调试能够正常启动。
(8)在apache的安装目录中的conf目录下创建文件workers2.properties,写入文件内容如下
# fine the communication channel
[channel.socket:192.168.0.1:8009]
info=Ajp13 forwarding over socket
#配置第一个服务器
tomcatId=tomcat1 #要和tomcat的配置文件server.xml中的jvmRoute="tomcat1"名称一致
debug=0
lb_factor=1 #负载平衡因子,数字越大请求被分配的几率越高
# Define the communication channel
[channel.socket:192.168.0.1:8019]
info=Ajp13 forwarding over socket
tomcatId=tomcat2
debug=0
lb_factor=1
# Define the communication channel
[channel.socket:192.168.0.1:8029]
info=Ajp13 forwarding over socket
tomcatId=tomcat3
debug=0
lb_factor=1
[status:]
info=Status worker, displays runtime information.  
[uri:/jkstatus.jsp]
info=Display status information and checks the config file for changes.
group=status:
[uri:/*]
info=Map the whole webapp
debug=0


(9)在三个tomcat的安装目录中的webapps建立相同的应用,应用目录名为ydata,
(10)重启apache服务器和三个tomcat服务器,到此负载 均衡已配置完成。测试负载均衡先测试apache,访问http://192.168.0.1:8080/jkstatus.jsp
能否正常访问,并查询其中的内容,有三个tomcat的相关配置信息和负载说明,访问http://192.168.0.1:8080/ydata看能够运行,
能运行,则已建立负载均衡。
(四)tomcat集群配置
(1)负载均衡配置的条件下配置tomcat集群
(2)分别修改三个tomcat的配置文件conf/server.xml,修改内容如下
修改前
        <!--
        <ClusterclassName="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
                managerClassName="org.apache.catalina.cluster.session.DeltaManager"
                expireSessionsOnShutdown="false"
                useDirtyFlag="true"
                notifyListenersOnReplication="true">
            <Membership
                className="org.apache.catalina.cluster.mcast.McastService"
                mcastAddr="228.0.0.4"
                mcastPort="45564"
                mcastFrequency="500"
                mcastDropTime="3000"/>

            <Receiver
                className="org.apache.catalina.cluster.tcp.ReplicationListener"
                tcpListenAddress="auto"
                tcpListenPort="4001"
                tcpSelectorTimeout="100"
                tcpThreadCount="6"/>
            <Sender
                className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
                replicationMode="pooled"
                ackTimeout="5000"/>
            <ValveclassName="org.apache.catalina.cluster.tcp.ReplicationValve"
                  filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>          
            <DeployerclassName="org.apache.catalina.cluster.deploy.FarmWarDeployer"
                      tempDir="/tmp/war-temp/"
                      deployDir="/tmp/war-deploy/"
                      watchDir="/tmp/war-listen/"
                      watchEnabled="false"/>                      
            <ClusterListenerclassName="org.apache.catalina.cluster.session.ClusterSessionListener"/>
        </Cluster>
        -->  
修改后

        <ClusterclassName="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
                managerClassName="org.apache.catalina.cluster.session.DeltaManager"
                expireSessionsOnShutdown="false"
                useDirtyFlag="true"
                notifyListenersOnReplication="true">

            <Membership
                className="org.apache.catalina.cluster.mcast.McastService"
                mcastAddr="228.0.0.4"
                mcastPort="45564"
                mcastFrequency="500"
                mcastDropTime="3000"/>
            <Receiver
                className="org.apache.catalina.cluster.tcp.ReplicationListener"
                tcpListenAddress="auto"
                tcpListenPort="4001"
                tcpSelectorTimeout="100"
                tcpThreadCount="6"/>

            <Sender
                className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
                replicationMode="pooled"
                ackTimeout="5000"/>
            <ValveclassName="org.apache.catalina.cluster.tcp.ReplicationValve"
                  filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>                  
            <DeployerclassName="org.apache.catalina.cluster.deploy.FarmWarDeployer"
                      tempDir="/tmp/war-temp/"
                      deployDir="/tmp/war-deploy/"
                      watchDir="/tmp/war-listen/"
                      watchEnabled="false"/>                      
            <ClusterListenerclassName="org.apache.catalina.cluster.session.ClusterSessionListener"/>
        </Cluster>    
将集群配置选项的注释放开即可,如上。
部署应用的WEB-INF\web.xml的倒数第二行中增加<distributable/>

(3)重启三个tomcat。到此tomcat的集群已配置完成。

另:如果是安装tomcat集群的机器上有多个网卡,那么需要在修改conf/server.xml时,做如下修改:(与单网卡相比,修改了如下内容中的粉红色标记的内容,填写机器的IP地址)
分别修改三个tomcat的配置文件conf/server.xml,修改内容如下
修改前
        <!--
        <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
                managerClassName="org.apache.catalina.cluster.session.DeltaManager"
                expireSessionsOnShutdown="false"
                useDirtyFlag="true"
                notifyListenersOnReplication="true">
            <Membership
                className="org.apache.catalina.cluster.mcast.McastService"
                mcastAddr="228.0.0.4"
                mcastPort="45564"
                mcastFrequency="500"
                mcastDropTime="3000"/>

            <Receiver
                className="org.apache.catalina.cluster.tcp.ReplicationListener"
                tcpListenAddress="auto"
                tcpListenPort="4001"
                tcpSelectorTimeout="100"
                tcpThreadCount="6"/>
            <Sender
                className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
                replicationMode="pooled"
                ackTimeout="5000"/>
            <ValveclassName="org.apache.catalina.cluster.tcp.ReplicationValve"
                  filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>          
            <DeployerclassName="org.apache.catalina.cluster.deploy.FarmWarDeployer"
                      tempDir="/tmp/war-temp/"
                      deployDir="/tmp/war-deploy/"
                      watchDir="/tmp/war-listen/"
                      watchEnabled="false"/>                      
            <ClusterListenerclassName="org.apache.catalina.cluster.session.ClusterSessionListener"/>
        </Cluster>
        -->  
修改后

        <ClusterclassName="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
                managerClassName="org.apache.catalina.cluster.session.DeltaManager"
                expireSessionsOnShutdown="false"
                useDirtyFlag="true"
                notifyListenersOnReplication="true">

            <Membership
                className="org.apache.catalina.cluster.mcast.McastService"

        mcastBindAddress="192.168.0.1"
                mcastAddr="228.0.0.4"
                mcastPort="45564"
                mcastFrequency="500"
                mcastDropTime="3000"/>
            <Receiver
                className="org.apache.catalina.cluster.tcp.ReplicationListener"
                tcpListenAddress="192.168.0.1"
                tcpListenPort="4001"
                tcpSelectorTimeout="100"
                tcpThreadCount="6"/>

            <Sender
                className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
                replicationMode="pooled"
                ackTimeout="5000"/>
            <ValveclassName="org.apache.catalina.cluster.tcp.ReplicationValve"
                  filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>                  
            <DeployerclassName="org.apache.catalina.cluster.deploy.FarmWarDeployer"
                      tempDir="/tmp/war-temp/"
                      deployDir="/tmp/war-deploy/"
                      watchDir="/tmp/war-listen/"
                      watchEnabled="false"/>                      
            <ClusterListenerclassName="org.apache.catalina.cluster.session.ClusterSessionListener"/>
        </Cluster> 

 [n1]或者直接在startup.bat文件中加入环境变量配置,如:set JAVA_HOME=C:\j2sdk1.4.2_13

 

原创粉丝点击