1. 程式人生 > >將tomcat與apache整合並配置叢集方式

將tomcat與apache整合並配置叢集方式

本文件介紹瞭如何在linux上將tomcat與apache整合,並使用兩個tomcat做叢集.
1.安裝apache
下載apache原始碼httpd-2.0.47.tar.gz
tar -xvzf httpd-2.0.47.tar.gz
cd httpd-2.0.47
./configure --prefix=/usr/local/httpd --enable-so --enable-cgi --enable-deflate --enable-rewrite --enable-expires --enable-headers --with-mpm=prefork
make
make install

2.安裝tomcat
下載jakarta-tomcat-4.1.29.tar.gz
將其解壓至/usr/local/tomcat

3.下載jakarta-tomcat-connectors-jk2.0.2-src-current.tar.gz
tar -zxvf jakarta-tomcat-connectors-jk2-src-current.tar.gz
cd jakarta-tomcat-connectors-jk2-2.0.2-src/jk/native2
chmod +x buildconf.sh
./buildconf.sh
./configure --with-apxs2=/usr/local/httpd/bin/apxs --with-apache2-lib=/usr/local/httpd/lib --with-tomcat41=/usr/local/tomcat
make
cp ../build/jk2/apache2/mod_jk2.so /usr/local/httpd/modules/
將mod_jk2.so的許可權改為755

4.配置jk2,相應的有兩個配置檔案,一個是/usr/local/tomcat/conf/jk2.properties,使用預設生成的即可,不需做任何修改,另一個配置檔案是/usr/local/httpd/conf/workers2.properties,如果沒有該檔案則需要手工建立一個其內容為

  1. Configuration file of JK2
    shm
    file=$ Unknown macro: {serverRoot} /logs/shm.file
    size=1048576
  1. Define the communication channel
    [channel.socket:tomcat1]
    #info=Ajp13 forwarding over socket
    #tomcatId=localhost:8009
    port=8009
    host=127.0.0.1

[ajp13:tomcat1]
channel=channel.socket:tomcat1

[channel.socket:tomcat2]
port=8019
host=127.0.0.1

[ajp13:tomcat2]
channel=channel.socket:tomcat2

[lb:lb1]
worker=ajp13:tomcat1
worker=ajp13:tomcat2

  1. Map the Tomcat examples webapp to the Web server uri space
    info=Map the whole webapp
    [uri:/anjilogistic/*]
    group=lb:lb1
    以上定義了兩個tomcat作為叢集,分別使用8009和8019埠進行通訊

5.為了使兩個tomcat的session共享需要下載javagroups.jar和tomcat-javagroups.jar,將這兩個jar拷貝到/usr/local/tomcat/server/lib目錄下

6.拷貝/usr/local/tomcat到/usr/local/tomcat2然後分別修改conf/server.xml這個配置檔案
因為有兩個tomcat在同時執行,所以配置檔案需要修改幾個埠,
(1)用來shutdown的埠,分別改為8005和8015
(2)用來進行web服務的埠,一個改為8080,另一個改為8088
(3)加一個Connector
port="8019" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="10" debug="0" connectionTimeout="0"
useURIValidationHack="false"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>

另一個埠改為8009

(4)新建一個Context
reloadable="true" crossContext="true">
prefix="localhost_anjilogistic_log." suffix=".txt"
timestamp="true"/>
home="com.wombat.empl.EmployeeRecordHome"
remote="com.wombat.empl.EmployeeRecord"/>
debug="10"
printToScreen="true"
saveOnRestart="false"
maxActiveSessions="-1"
minIdleSwap="-1"
maxIdleSwap="-1"
maxIdleBackup="-1"
pathname="null"
printSessionInfo="true"
checkInterval="10"
expireSessionsOnShutdown="false"
serviceclass="org.apache.catalina.cluster.mcast.McastService"
mcastAddr="127.0.0.1"
mcastPort="45566"
mcastFrequency="500"
mcastDropTime="5000"
tcpListenAddress="auto"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="2"
useDirtyFlag="true">

value="15"/>
override="false"/>
type="javax.sql.DataSource"/>

usernamesa
password
driverClassName
org.hsql.jdbcDriver
url
jdbc:HypersonicSQL:database

type="javax.mail.Session"/>

mail.smtp.host
localhost

global="simpleValue"
type="java.lang.Integer"/>

為了使兩個tomcat的session能夠共享,放在session中的物件都要實現 Serializable介面