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