CentOS 6.5 安裝tomcat集羣,配置Apache做負載均衡

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

發佈了20 篇原創文章 · 獲贊 24 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章