CentOS 6.5 安裝tomcat叢集,配置Apache做負載平衡

來源:互聯網
上載者:User

本人只做了兩個tomcat的叢集

一、首先安裝Apache作負載平衡。

二、安裝Apache TomcatConnector作請求分發。

三、安裝tomcat:

1、  下載Linux下tomcat安裝包:

2、  網上下載安裝包:點擊開啟連結

也可以去我上傳的資源下載,不過現在只能用積分了,本來不需要積分的。囧,地址:點擊開啟連結。

3、  兩次解壓下載到的apache-tomcat-6.0.33.tar.gz檔案至/usr/local/,並分別重新命名為tomcat1和tomcat2


4、  修改tomcat2的連接埠:

4.1         開啟tomcat2下conf/server.xml檔案

4.2         修改以下內容:

            1) 將關閉Tomcat的監聽連接埠改成由8005改為8105

即把

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

改為

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

 

2) 把http服務連接埠號碼由8080改為8180

找到

 <!-- Define a non-SSL HTTP/1.1 Connector onport 8080 -->

    <CONNECTOR port="8080"

把這裡的8080改為8180

 

3) 把AJP連接埠號碼由8009改為8109

找到

  <!-- Define an AJP 1.3 Connector on port8009 -->

    <CONNECTOR port="8009"

把這裡的8009改為8109

 

4) 把 HTTP 代理連接埠從8082改為8182(這個配置預設是被注釋掉的,可跳過這一步)

找到

<CONNECTOR port="8082"

把這裡的8082改為8182


5、 開啟tomcat叢集

5.1   開啟開啟tomcat下server.xml檔案,在<Engine/>節點上加上jvmRoute屬性,屬性值為你的tomcat名,如:

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat01">

5.2   在<Engine/>節點上最後加上如下內容,此內容是叢集配置:

<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> 

6、  配置Apache

        開啟Apache安裝目錄下conf/httpd.conf檔案,在檔案最後面添加以下內容:

# Load mod_jk module  LoadModule jk_module modules/mod_jk.so  # Specify jk log file.  JkLogFile /var/log/mod_jk.log  # Specify jk log level [debug/error/info]  JkLogLevel info  # Specify workers.properties, this file tell jk:  # how many nodes and where they are.  JkWorkersFile conf/workers.properties  # Specify which requests should handled by which node.  JkMount /* controller  

7、 配置mod_jk,描述叢集節點。

在Apache的httpd.conf檔案所在檔案夾建立workers.properties檔案,在該檔案中寫入如下內容:

#所有節點列表,其中controller是一個邏輯結點,負責負載平衡控制,  #如果JkMount中的URL指定給了controller就表示這個請求會被自動散列到某個物理節點上。  #注意:真正負責處理請求的tomcat的名稱(這裡就是tomcat1,tomcat2)必須於它們在conf/server.xml  #檔案中配置的jvmRout的屬性值是一致的。  worker.list = controller,tomcat01,tomcat02     #========tomcat01========  worker.tomcat01.port=8009       #ajp13 連接埠號碼,在tomcat下server.xml配置,預設8009  worker.tomcat01.host=localhost  #tomcat的主機地址,如不為本機,請填寫ip地址  worker.tomcat01.type=ajp13  worker.tomcat01.lbfactor = 1    #server的加權比重,值越高,分得的請求越多  #========tomcat02========  worker.tomcat02.port=8109       #ajp13 連接埠號碼,在tomcat下server.xml配置,預設8009  worker.tomcat02.host=localhost  #tomcat的主機地址,如不為本機,請填寫ip地址  worker.tomcat02.type=ajp13  worker.tomcat02.lbfactor = 1    #server的加權比重,值越高,分得的請求越多    #========controller,負載平衡控制器========  worker.controller.type=lb  worker.controller.balance_workers=tomcat01,tomcat02   #指定分擔請求的tomcat,舊版本中的balanced_workers,已不再推薦使用。  worker.controller.sticky_session=1 #sticky_session為1表示,  #當某一 client的session建立之後,後續由該用戶端發起的請求,也就是這個session的所有請求都始終由第一次處理該請求的結點  #負責處理(除非該結點掛掉)
至此,叢集搭建完成。

四、應用程式要為叢集所做的準備

1. 在應用程式的web.xml中需要加入:<distributable/>元素
2. session中存放的資料(如attribute)必須實現序列化。


參考部落格01:Linux下搭建tomcat叢集

參考部落格02: Tomcat叢集配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.