apache tomcat 集群!

jycan1wn 8年前發布 | 33K 次閱讀 Tomcat 應用服務器

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

公司需要一個內部測試局域網, 要求可以支持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是否達到要求!篇章短小,測試項目代碼就不發布了,網上也有很多!

</div>

 本文由用戶 jycan1wn 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!