• tomcat 集群搭建


    写在前面:

    Disc:最近研究了一下tomcat集群搭建,这里只是作为个人整理,其中参见了很多优秀的网络资源会在后面列出,如果你想快速的完成配置可以参见本文,如果想了解更多内容可以参见下面的资源列表,那里会给你更多有用的内容。

    Context:Apache2.2、Tomcat6.0(非安装版)、mod_jk.so(1.2.37)、windows

    res-list: 

    http://blog.csdn.net/lifetragedy/article/details/7712691

    http://blog.csdn.net/freeworkman/article/details/8637012

    Ps:关于搭建环境所用的apache、tomcat、mod_jk.so最好自己去官网下、好处自己想去吧


    安装步骤:

    1、安装apache2.2

    2、安装Tomcat6.0

    2.1修改Tomcat配置使Tomcat各个实例能同事正常工作

    3、正式开始集群配置

    3.1apache配置

    3.2tomca配置

    1.安装apache2.2

    apache的安装很方便根据自己的系统到http://httpd.apache.org/下载安装即可。安装完启动访问http://localhost能看到It works!就ok啦。

    2.Tomcat6.0安装

    Tomcat6.0选择非安装到http://tomcat.apache.org/ 选择自己合适的版本下载。

    2.1修改Tomcat配置使Tomcat各个实例能同事正常工作

    这里做集群环境首先要保证你的tomcat实例能够同事运行,此实验室在同一台机器上跑多个Tomcat实例所以很重要的一步是避免端口冲突。建议规则在必要的端口上保持实例递增(列:Tomcat_1监听端口为8080,Tomcat_2监听端口为8081,Tomcat_3端口为8082。。。),此测试使用2个Tomcat 实例。

    Tomcat_1配置保持默认,Tomcat_2修改service.xml内容如下:

    Tomcat_1

    <Server port="8005" shutdown="SHUTDOWN">

    Tomcat_2:

    <Server port="8006" shutdown="SHUTDOWN">

    Tomcat_1:

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

    Tomcat_2:

    <Connector port="8081" protocol="HTTP/1.1" 
    connectionTimeout="20000" 
    redirectPort="8444" />

    Tomcat_1:

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

    Tomcat_2:

    <Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />

    做完上述修改同时启动Tomcat_1和Tomcat_2保证两个实例能同时工作,分别访问http://localhost:8080和http://localhost:8081测试小猫飞起来了。完成这些只是最基本的工作,真正的还没开始,下面进入重点!

    3、apache配置

    3.1apache 配置

    在apache的安装目录中找到conf/httpd.conf进行如下修改:

    1)修改默认项目部署路径

    DocumentRoot "apche安装目录/htdocs" #注释掉加入下面内容,这个是我们要放项目的目录
    DocumentRoot "c:/www"

    2)mod_jk.so配置

    LoadModule jk_module modules/mod_jk.so
    JKWorkersFile conf/workers.properties
    JkLogFile logs/mod_jk.log
    <VirtualHost *>
    DocumentRoot c:/www
    <Directory "c:/www/hello">
        AllowOverride None
        Order allow,deny
              Allow from all
    </Directory>
    <Directory "c:/www/hello/WEB-INF">
             Order deny,allow
             Deny from all
    </Directory>
    ServerAdmin localhost
    DocumentRoot c:/www/
    ServerName localhost:80
    DirectoryIndex index.html index.htm index.jsp index.action
    ErrorLog logs/shsc-error_log.txt
    CustomLog logs/shsc-access_log.txt common
    
    JkMount /* controller
    JkMount /*WEB-INF controller
    JkMount /*j_spring_security_check controller
    JkMount /*.action controller
    JkMount /servlet/* controller
    JkMount /*.jsp controller
    JkMount /*.do controller
    JkMount /*.action controller
     
    JkMount /*fckeditor/editor/filemanager/connectors/*.* controller
    JkMount /fckeditor/editor/filemanager/connectors/* controller
    </VirtualHost>
    

    3)workers.properties配置 (在apache安装目录下conf下建立新的workers.prooerties)
    worker.list = controller
    #tomcat1
    worker.tomcat1.port=8009       
    worker.tomcat1.host=localhost
    worker.tomcat1.type=ajp13
    worker.tomcat1.lbfactor=1
    #tomcat2
    worker.tomcat2.port=8010    
    worker.tomcat2.host=localhost
    worker.tomcat2.type=ajp13
    worker.tomcat2.lbfactor=1
    #========controller========
    worker.controller.type=lb
    worker.controller.balance_workers=tomcat1,tomcat2       #注意对应关系
    worker.lbcontroller.sticky_session=0
    worker.controller.sticky_session_force=true
    worker.connection_pool_size=3000
    worker.connection_pool_minsize=50
    worker.connection_pool_timeout=50000
     

    3.2tomcat 配置

    注意:确保你已经做了2.1中相关端口的修改

    1)在tomcat安装目录的conf/service.xml中找到

    <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">   
    tomcat_1:修改为
    <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">   
    tomcat_2:修改为
    <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat2">   
    注意:这里所修改的值是根据workers.properties中的配置进行对应的

    2) 在1)中修改内容(即:<Engine ......>)的后面加入如下内容
    <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" 
                      channelSendOptions="6"> 
                  <Manager className="org.apache.catalina.ha.session.BackupManager" 
                        expireSessionsOnShutdown="false" 
                        notifyListenersOnReplication="true" 
                        mapSendOptions="6"/> 
               <Channel className="org.apache.catalina.tribes.group.GroupChannel"> 
                 <Membership className="org.apache.catalina.tribes.membership.McastService" 
                             bind="127.0.0.1" 
                             address="228.0.0.4" 
                             port="45564" 
                             frequency="500" 
                             dropTime="3000"/> 
                 <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 
                           address="auto" 
                           port="4001" 
                           selectorTimeout="100" 
                           maxThreads="6"/> 
                 <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> 
                   <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" timeout="60000"/>  
                 </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=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/> 
                  <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> 
             </Cluster>

    注意:每个tomcat实例都要加入,并且注意Receiver port="4001" 此端口不能重复

    基本内容到这里就结束了

    4.测试配置

    如果你已经完成上述配置应该就可以实现tomcat的集群了,分别启动Tomcat_1,Tomcat_2

    Tomcat_1:


    Tomcat_2:


    2)启动apache,apache能正常启动就ok啦

    3)这是一个很简单的测试项目hello,只是打印一下session,在tomcat每个实例中的webapps中部署hello,别忘了在apache中也部署(d:/www我们前面修改过的)发挥你的想象进行各种测试吧。。。。。。

    注意注意:在测试项目的web.xml中加入 <distributable/>

    1:


    2:








  • 相关阅读:
    Cpp -- static变量不属于类的实例
    单例模式
    WebView android
    网络编程之一
    初涉json
    初涉XML
    关于JSON的GSON
    网络编程(一)
    硬件51
    重拾C之数据
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3020210.html
Copyright © 2020-2023  润新知