2009年7月8日 星期三

Windows下Apache與Tomcat的整合

這篇是參考網上文章加自己實際測試的過程

測試環境為Windows 2003
需準備Apache, Tomcat,mod_jk.so

分別安裝好Apache和Tomcat
就可以開始設定整合所需的檔案

Step 1
將mod_jk.so放到/Apache/modules下

Step 2
修改/Apache/conf/httpd.conf
加入以下
#mode_jk Settings
Include conf/mod_jk.conf
加不加註解就看個人習慣了

Step 3
/Apache/conf下新增mod_jk.conf
內容為
#Load module mod_jk
LoadModule jk_module modules/mod_jk.so

# Where to find workers.properties
JkWorkersFile conf/workers.properties

# Where to put jk logs
JkLogFile logs/mod_jk.log

# Set the jk log level [debug/error/info]
JkLogLevel info

# Select the log format
#JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

# JkOptions indicate to send SSL KEY SIZE,
#JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat set the request format
#JkRequestLogFormat "%w %V %T"

#close Lookup
#HostnameLookups Off

#what's request should be send to tomcat
JkMount /* controller
其中最後一項比較重要
是設定tomcat負責處理哪些請求
而controller是要做load balance是要用的
不需要的話可以拿掉

Step 4
/Apache/conf下新增workers.properties
內容為
worker.list = controller,tomcat1,tomcat2

#========tomcat1========
worker.tomcat1.port=7009 #ajp13 端口號,在tomcat下server.xml配置,默認8009
worker.tomcat1.host=localhost #tomcat的主機地址,如不為本機,請填寫ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 5 #server的加權比重,值越高,分得的請求越多
#========tomcat2========
worker.tomcat2.port=9009
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 3
#========controller(load balance)========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2 #指定分擔請求的tomcat
worker.controller.sticky_session=1
worker.list設定所要整合的tomcat
名稱可以自訂
但port的部份要跟tomcat的server.xml裡一致

Step 5
修改/tomcat/conf/server.xml

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="7009"
enableLookups="false" redirectPort="7443" protocol="AJP/1.3" />
這裡的port跟workers.properties裡的一致

找到以下
<!-- You should set jvmRoute to support load-balancing via AJP ie : -->
<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">
jvmRoute=tomcat1這邊也是名稱要一致

找到以下
<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
managerClassName="org.apache.catalina.cluster.session.DeltaManager"
expireSessionsOnShutdown="false"
useDirtyFlag="true"
notifyListenersOnReplication="true">
.
.
.
<ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
</Cluster>
拿掉原本的註釋
其中tcpListenPort要注意是否被用了

這樣就改好workers.properties裡的tomcat1了
tomcat2的server.xml也是一樣的修改

Step 6
兩個tomcat修改完後分別啟動
先測試在各自的port下localhost是否能連
然後再啟動Apache
測試是否直接在80 port下
localhost就可以連到那兩個tomcat
因為有設定load balance的關係
所以要多連幾次才能看出是否兩台都有通!

沒有留言:

張貼留言