apache tomcat 集群!

公司须要一个内部测试局域网, 要求能够支持3000并发访问!之前也没作过服务器这方面、临时抱佛脚,查看了N多文档,他人经验,布置好以后,又遇到了N多问题,功夫不负有心人、终于仍是完成了要求!观他人的布置经验- 总有不全的地方,因此把本身的经历写下来、做后来使用!html

接到了这个任务、首先我想到的是apache httpserver 与tomcat集群.apache

1、环境: win7    4cpu     8G!tomcat

2、软件:apache2.25    tomcat7    jre7u55服务器

3、apache2.25安装、这个比较简单 一路next 、  惟一须要注意的是:apache 默认使用的80端口,安装以前看一下此端口有没有被占用,若有,关闭了它!session

运行cmd  输入命令netstat -ano|findstr "80"  !并发

  配置apachejvm

  1. 安装目录apache下找到conf/httpd.conf  找到mod_proxy.so 、mod_proxy_ajp.so、mod_proxy_balancer 取消注释,以下:

      

    LoadModule proxy_module modules/mod_proxy.so  #mod  代理
    LoadModule proxy_ajp_module modules/mod_proxy_ajp.so   #ajp协议
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so  #tomcat集群

     

  2. 启用httpd-mpm.conf   、httpd-vhosts.conf   文件,  找到并取消注释 以下:
    Include conf/extra/httpd-vhosts.conf    #定义服务器   如何定义后面会讲
    Include conf/extra/httpd-mpm.conf   #优化apache 如何优化后面会讲 

     

  3. 配置代理集群对象在文件最后添加以下代码
    <proxy balancer://cluster>
    
    BalancerMember ajp://127.0.0.1:8009 loadfactor=2 route=jvm1
    
    BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=jvm3
    
    </proxy>
         loadfactor:表明tomcat调用权重,这里表示当有3个请求进来时,apache 分配2个请求给jvm1标识的tomcat,1个请求给jvm3标识的tomcat!                                 route:表明apache使用apache协议对tomcat的标识,具体配置会在tomcat配置里面讲!                                                                                                    route:表明apache使用apache协议对tomcat的标识,具体配置会在tomcat配置里面讲!
  4. 配置conf/extra/vhots.conf:这里只须要在文件的最后添加如下代码:                                                        
    <VirtualHost *:80>
    
             ServerAdmin 1665656796@qq.com
    
             ServerName  localhost
    
             ServerAlias localhost
    
             ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
    
             ProxyPassReverse / balancer://cluster/
    
    </VirtualHost>

    这里面有一些参数  serveradmin  能够随意   ,serverName,与serverAlias 测试部署阶段能够直接设置为localhost .proxypass与proxypassreverse 能够不作修改,后期明白它的含义了能够根据本身喜爱修改!  jsp

  5. 找到httpd.conf文件在 DirectoryIndex 配置后面添加index.jsp  以下:                                                                                                                        tcp

    <IfModule dir_module>
        DirectoryIndex index.html index.jsp
    </IfModule>

    到这里 apache 配置完毕!              测试

4、tomcat配置因为比较简单,这里简略说明,若是是在一台机器上布置两个tomcat,须要修改四个端口、目的是为了不端口冲突!tomcat启动报错.

  1. server.port   端口本身定义吧     只要不冲突就能够!
  2. connector.port    connector.redirectport  注:connector有两个,一个使用http协议,一个使用ajp协议,这里咱们使用的是ajp协议 因此 把ajp协议的更改、固然咱们也可使用http协议作apache与tomcat链接、方法同样!
  3. 配置engine 这里主要是给tomcat一个标识,用来让apache区分!和前面apache httpd.conf中的blacermember 配置对应!以下:                                             
     <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">

     

  4. 配置cluster 启动tomcat  进入小猫页面、找到tomcat doc文档.里面有cluster的配置,说明及示例!以下                                                                                                                                          复制一份代码以下:                                                                                                                                                                                            
            
        
            <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>

    注:vlaue  标签   classname为jvmroutebindervalve 与 clusterlistener  classname 为jvmroutesessionidbinderlistener  是为粘性session准备的处理方式、由于咱们并无使用到,因此须要注释掉!                                                                                                   这里还要修改一下revicve.port 也是为了不冲突!

5、apache 与tomcat都布置完毕、能够本身写个小测试,测一下session是否达到要求!篇章短小,测试项目代码就不发布了,网上也有不少!

相关文章
相关标签/搜索