PS:今天整理硬盤
發現這個有用的收藏
與大家分享!
一
環境說明
Windows XP
apache_
win
x
no_ssl
msi
mod_jk
apache
so
apache
tomcat
zip
我的程序分別安裝到
D:\webserver\Apache Group\Apache
D:\webserver\TomcatCluster\tomcat
D:\webserver\TomcatCluster\tomcat
Apache安裝完後
在右下角狀態欄中可以看到 Apache Service Monitor 可以控制Apache的狀態
驗證Apache是否安裝成功
可以訪問 如果能看到Apache的預制頁面
說明安裝成功
如果不行
可以訪問試試(可能因為IIS已經使用了
端口
我的就是
可以修改Apache的配置文件來修改)
二
負載均衡
找到Apache安裝目錄下conf目錄中的文件
在文件最後添加一句
include
D:\webserver\Apache Group\Apache
\conf\nf
接著在conf目錄中新建文件nf並添加下面的內容
#加載mod_jk Module
LoadModule jk_module modules/mod_jk
apache
so
#指定 workers
properties文件路徑
JkWorkersFile conf/workers
properties
#指定哪些請求交給tomcat處理
controller
為在workers
propertise裡指定的負載分配控制器名
JkMount /*
jsp controller
在conf目錄下新建workers
properties文件並添加如下內容
#server
worker
list = controller
#========tomcat
========
worker
tomcat
port=
worker
tomcat
host=localhost
worker
tomcat
type=ajp
worker
tomcat
lbfactor =
#========tomcat
========
worker
tomcat
port=
worker
tomcat
host=localhost
worker
tomcat
type=ajp
worker
tomcat
lbfactor =
#========controller
負載均衡控制器========
ntroller
type=lb
ntroller
balanced_workers=tomcat
tomcat
ntroller
sticky_session=
(解釋一下AJP
是 Apache JServ Protocol version
)
將mod_jk
apache
so 復制到Apache的modules目錄中
接下來配置
個Tomcat
打開tomcat
\conf\ server
xml
將Server port 改為
<Server port=
shutdown=
SHUTDOWN
>
將Define Connector port改為
<Connector port=
maxHttpHeaderSize=
將AJP
Connector port改為
<Connector port=
enableLookups=
false
redirectPort=
protocol=
AJP/
/>
打開tomcat
\conf\server
xml
將Server port 改為
<Server port=
shutdown=
SHUTDOWN
>
將Define Connector port改為
<Connector port=
maxHttpHeaderSize=
將AJP
Connector port改為
<Connector port=
enableLookups=
false
redirectPort=
protocol=
AJP/
/>
好了
現在建立一個測試程序
分別在兩個Tomcat的webapps中建立test目錄
並新建test
jsp文件
內容如下
<%
System
out
println(
===========
)
%>
啟動apache
tomcat
tomcat
不斷刷新頁面
可以在兩個Tomcat的控制台中看到
交替輸出
===========
這樣就實現了負載均衡
三
集群配置
集群除了負載均衡
另一個主要功能是Session Replication
打開tomcat
\conf\ server
xml將<Cluster>部分的注釋去掉
再打開tomcat
\conf\ server
xml將<Cluster>部分的注釋也去掉
並將<Cluster>中<Receiver>的tcpListenPort的值改為
以避免與Tomcat
沖突
添加一個新的測試程序test
jsp
分別在
個tomcat的webapps\test中新建WEB
INF目錄
在WEB
INF中添加web
xml內容如下
主要是添加<distributable/>
distributable元素用來告訴servlet容器
程序將部署在分布式Web容器中
重新啟動tomcat
和tomcat
隨意添加key
value
可以看到兩個tomcat交替顯示session中的值
各個tomcat的session是同步的
再來修改tomcat
\conf\server
xml
找到
<Engine name=
Catalina
defaultHost=
localhost
>
為其添加jvmRoute屬性
值為apache的conf\workers
properties中配置的tomcat名字
<Engine name=
Catalina
defaultHost=
localhost
jvmRoute=
tomcat
>
同樣修改tomcat
\conf\server
xml的相同部分
<Engine name=
Catalina
defaultHost=
localhost
jvmRoute=
tomcat
>
jvmRoute是tomcat路由標示
由此區分兩台tomcat主機
一次會話
就有一個sessionID
這個sessionID後面會跟上jvmRoute設置的值
這樣一次會話
就只會讓一個tomcat處理
重新啟動tomcat
tomcat
可以看到session
getId()的值在原session id後面多了jvmRoute的值
ID
A
FF
A
E
A
AC
F
tomcat
隨意添加key
value
可以看到session信息只在tomcat
中輸出
再打開一個浏覽器
並訪問 其session id可能變為
ID
E
BE
FE
E
B
A
F
tomcat
其值也只會在tomcat
中輸出
現在把tomcat
關閉
再次刷新訪問tomcat
的那個浏覽器
可以看到session信息輸出到了tomcat
的控制台中
並且session信息仍然保留著
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28630.html