本人只做了兩個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叢集配置