zoukankan      html  css  js  c++  java
  • apache tomcat 集群! (转)

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

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

    一、环境: win7 4cpu 8G!

    二、软件:apache2.25 tomcat7 jre7u55

    三、apache2.25安装、这个比较简单 一路next 、 唯一需要注意的是:apache 默认使用的80端口,安装之前看一下此端口有没有被占用,如有,关闭了它!

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

      配置apache

    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 可以不做修改,后期明白它的含义了可以根据自己喜好修改!

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

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

      到这里 apache 配置完毕!

    四、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 也是为了避免冲突!

    五、apache 与tomcat都布置完毕、可以自己写个小测试,测一下session是否达到要求!篇章短小,测试项目代码就不发布了,网上也有很多!

    http://www.cnblogs.com/vitre/p/5164162.html

  • 相关阅读:
    windows10上安装 .NET Framework 3.5
    Mac上安装Tomcat服务器
    实验室中搭建Spark集群和PyCUDA开发环境
    训练实录
    Hello World
    存储管理
    java脚本实现selenium架构下的复选框、上传文件的操作
    java脚本,selenium工具,自动发QQ邮件
    用java脚本,selenium2.0工具,切换窗口经验总结
    六、排队论模型
  • 原文地址:https://www.cnblogs.com/softidea/p/5164366.html
Copyright © 2011-2022 走看看