在本機Windows7系統上安裝一個Ubuntu虛拟機,在虛拟機内搭建兩個tomcat叢集,
檢視linxu版本指令:
uname -a
解壓指令:
tar -zxvf xxxx.tar.gz
第一步:安裝jdk
1、下載下傳jdk-7u67-linux-i586.tar.gz,放到 /usr/local目錄下,解壓
生成檔案夾 jdk1.7.0_67
2、配置環境變量
編輯/etc/profile,插入一段内容
重新開機虛拟機,再輸入 java -version,确認java安裝成功
第二步:安裝apache
下載下傳httpd-2.2.31.tar.gz,解壓到/usr/local,生成檔案夾httpd-2.2.31
進入httpd-2.2.31,執行指令
./configure --prefix=/usr/local/apache2 --enable-mods-shared=all
編譯安裝
make
make install
4、啟動apache
/usr/local/apache2/bin/apachectl start
關閉apache
/usr/local/apache2/bin/apachectl stop
如果報apache is currently not installed,就重新安裝下apache
第三步:Apache Tomcat Connector (也就是mod_jk)
1、下載下傳 tomcat-connectors-1.2.41-src.tar.gz,解壓到 /usr/local 生成檔案夾
tomcat-connectors-1.2.41-src
2、進入 /tomcat-connectors-1.2.41-src/native,執行指令 ./buildconf.sh
如果報 autoconf 沒有安裝,那就用 執行 apt -get install autoconf安裝
3、配置參數
./configure --with-apxs=/usr/local/apache2/bin/apxs \
--with-java-home=$JAVA_HOME --with-java-platform=2 \
--enable-jni
4、編譯 安裝
make
make install
如果成功結束,你可以在/usr/local/apache2/modules/下找到mod_jk.so檔案。
第四步:安裝tomcat
1、下載下傳apache-tomcat-6.0.41.tar.gz,解壓到 /usr/local,生成檔案夾
apache-tomcat-6.0.41,再執行重命名指令
cp apache-tomcat-6.0.41 apache-tomcat-6.0.41-1,
再解壓一次并重命名為 apache-tomcat-6.0.41-2
2、修改server.xml(兩個tomcat都要做)
(1) 修改端口,把其中一個tomcat的各種端口修改,一個8080,一個8081,避免沖突
(2)修改server.xml
兩個tomcat分别改為 tomcat1和tomcat2
(3)增加叢集的支援,兩個tomcat的server.xml都插入下面的内容
<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>
第五步:配置apache
1、進入/usr/local/apache2/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
2、在conf目錄下建立 workers.properties,插入内容
#所有節點清單,其中controller是一個邏輯結點,負責負載均衡控制,
#如果JkMount中的URL指定給了controller就表示這個請求會被自動散列到某個實體節點上。
#注意:真正負責處理請求的tomcat的名稱(這裡就是tomcat1,tomcat2)必須于它們在conf/server.xml
#檔案中配置的jvmRout的屬性值是一緻的!
worker.list = controller,tomcat1,tomcat2
#========tomcat1========
worker.tomcat1.port=6009 #ajp13 端口号,在tomcat下server.xml配置,預設8009
worker.tomcat1.host=localhost #tomcat的主機位址,如不為本機,請填寫ip位址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1 #server的權重比重,值越高,分得的請求越多
#========tomcat2========
worker.tomcat2.port=7009 #ajp13 端口号,在tomcat下server.xml配置,預設8009
worker.tomcat2.host=localhost #tomcat的主機位址,如不為本機,請填寫ip位址
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1 #server的權重比重,值越高,分得的請求越多
#========controller,負載均衡控制器========
worker.controller.type=lb
worker.controller.balance_workers=tomcat1,tomcat2 #指定分擔請求的tomcat,舊版本中的balanced_workers,已不再推薦使用!
worker.controller.sticky_session=1 #sticky_session為1表示,
#當某一 client的session建立之後,後續由該用戶端發起的請求,也就是這個session的所有請求都始終由第一次處理該請求的結點
#負責處理(除非該結點挂掉)
至此tomcat叢集配置完成,通過一個簡單的web應用可以測試
第六步、部署web應用 TestMVC
将TestMVC.war包分别放到兩個tomcat的webapps目錄下
注意web應用中的web.xml需要在</web-app>前面插入<distributable/>
第七步:測試叢集
1、啟動apache /usr/local/apache2/bin/apachectl start
2、啟動兩個tomcat sh startup.sh
3、通路叢集 http://localhost/TestMVC
非叢集通路方式 http://localhost:8080/TestMVC和http://localhost:8081/TestMVC