??
?
? 測試服務器上的 bbs 我是用 tomcat 跑的,最近兩天玩了玩 apache +tomcat 集群,于是準備使用 apache+tomcat 集群重新 部署下我的 bbs 應用,就當理論聯(lián)系實際吧,使用這個架構方案的好處我就不說了,網(wǎng)上一大堆。
?
?
網(wǎng)絡拓撲圖
?
?
?
?
?
?
對于來自公網(wǎng)的請求 全部由apache處理,分發(fā)給后面的tomcat 集群,這樣就實現(xiàn)了負載均衡
?
?
安裝篇
?
????
1. ?????? 實驗環(huán)境
JRE : 1.5.0
Linux : redhat-release-4AS-5.5
Tomcat : tomcat-6.0.18
Apache : Apache/2.2.4
?
由于實驗條件艱苦 我是在一臺機子上安裝 apache+2tomcat+mysql 的
?
2. ?????? 首先安裝 jre 的安裝很簡單 , 我就不說了網(wǎng)上有教程,我的機子上本來就有 jre
3
.
?
安裝
apr
包
:
#
在
APACHE
的搭建中
apr
軟件包主要起加載其他模塊的作用
[root@wljs src]# tar xvfz apr-1.2.8.tar.gz
[root@wljs src]# cd apr-1.2.8
[root@wljs apr-1.2.8]# ./configure --prefix=/usr/local/apr-httpd
[root@wljs apr-1.2.8]# make
[root@wljs apr-1.2.8]# make install
4. ? 安裝 apr-util-1.2.8.tar.gz
[root@wljs src]# tar xvfz apr-util-1.2.8.tar.gz
[root@wljs src]# cd apr-util-1.2.8.tar
[root@wljs apr-util-1.2.8.tar]# ./configure --prefix=/usr/local/apr-util-httpd --with-apr=/usr/local/apr-httpd
[root@wljs apr-util-1.2.8.tar]# make
[root@wljs apr-util-1.2.8.tar]# make install
#--prefix= 存放路徑 --with 是用來加載模塊
5. 安裝 apache
?
root@wljs src]# tar xvfz httpd-2.2.4.tar.gz
[root@wljs src]# cd httpd-2.2.4
[root@wljs httpd-2.2.4]# ./configure --prefix=/usr/local/apache --enable-mods-shared=all --enable-module=most --with-apr=/usr/local/apr-httpd --with-apr-util=/usr/local/apr-util-httpd --enable-so
[root@wljs httpd-2.2.4]# make
[root@wljs httpd-2.2.4]# make install
?
#--enable 是加載動態(tài)模塊 (其中 --with-apr=/us ……可寫也可以不寫)
?
? 出現(xiàn)問題
checking whether to enable mod_deflate... configure: error: mod_deflate has been requested but can not be built due to prerequisite failures
?
解決:
安裝 zlib
http://dinghaoliang.blog.163.com/blog/static/12654071420097254115963/
http://hi.baidu.com/alanlong/blog/item/e6ed4bfb57878a9f59ee90a1.html ?
?
使用 ? rpm -aq zlib ? 發(fā)現(xiàn)其實已經(jīng)有 zlib-1.2.1.2-1.2 網(wǎng)上說這種情況需要重新安裝 zlib-1.2.1.2-1.2
重新下載 zlib-1.2.1.2-1.2.src.rpm ? 需要使用 ? rpmbuild ? 命令安裝
?
可是沒有 rpmbuild 命令 于是 安裝 rpm-build-4.3.3-18_nonptl.i386.rpm ? 于是在 CD3 找到
?
有了 rpmbuild 命令就可以重新安裝 zlib 了
?
6.
安裝
libtool-1.5.6.tar.gz
[root@wljs src]# tar xvfz libtool-1.5.6.tar.gz
[root@wljs src]# cd libtool-1.5.6
[root@wljs libtool-1.5.6]# ./configure
[root@wljs libtool-1.5.6]# make & make install
?
?
7. 安裝 tomcat 和 apache 的鏈接器 ? jakarta-tomcat-connectors-1.2.15-src.tar.tar
? 下載地址:
?
[root@wljs src]# tar xvf jakarta-tomcat-
connectors-1.2.15-src.tar.tar
[root@wljs src]# cd
?
到解壓目錄下面
[root@wljs native2]# ./configure --with-apxs=/usr/local/apache/bin/apxs
[root@wljs native2]# make
[root@wljs native2]# male install
?
將 /root/wang/jakarta-tomcat-connectors-1.2.15-src/jk/native/apache-2.0 目錄下編譯生成的
mod_jk.so 拷貝的 apache 的安裝目錄
/usr/local/apache/modules
?
修改 /usr/local/apache/conf 目錄下的 httpd.conf 文件 最后加上
LoadModule jk_module modules/mod_jk.so
? 出現(xiàn)問題
?
? 一開始我使用的鏈接器 是 jakarta-tomcat-connectors-jk2-2.0.4-src.tar.tar 導致和 tomcat 集成的時候 ,apache 啟動的時候總是報錯 , 更換了鏈接器 為 1.2.15 就 OK 了
?
?
?
?
?
下載地址:
集成篇
?
1. ?????? apache 和 tomcat 集成主要 體現(xiàn)的幾個配置文件上
? httpd.conf ? apache 的主要配置文件
新增
?
Listen 9080
LoadModule jk_module modules/mod_jk.so
# 應用程序的上級目錄 這個寫錯會導致 css 和圖片路徑不對
DocumentRoot "/usr/local/apache/htdocs"
# 首頁
DirectoryIndex index.html index.jsp
#apache 的安裝路徑
ServerRoot "/usr/local/apache"
# mod_jk
#include "/usr/local/apache/conf/mod_jk.conf"
JkWorkersFile "conf/workers.properties"
JkLogFile "logs/mod_jk.log"
JkMount /*.jsp controller
JkMount /*.jspx controller
JkMount /servlet/* controller
JkMount /*.do controller
JkMount /dwr/* controller
# JkMount /* ? controller
?
?
? workers.properties ? apache 接受到客戶端請求以后如何轉發(fā)請求,請求過濾的規(guī)則,負載因子等
?
新增
# The advanced router LB worker
worker.list=controller,tomcat1,tomcat2 #server 列表
?
# Define a worker using ajp13
worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=5 #server 的加權比重,值越高,分得的請求越多
# Define another worker using ajp13
worker.tomcat2.port=8010
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
?
?
?
# Define the LB worker
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2 ?? # 指定分擔請求的 tomcat
worker.controller.sticky_session=0
?
?
以上要說明的是原文中 worker.controller.sticky_session=1, 等同于 worker.controller.sticky_session=true. 此處指定集群是否需要會話復制,如果設為 true ,則表明為會話粘性,不進行會話復制,當某用戶的請求第一次分發(fā)到哪臺 Tomcat 后,后繼的請求會一直分發(fā)到此 Tomcat 服務器上處理;如果設為 false ,則表明需求會話復制。 這就是說,如果你要想進行均衡負載,并在 tomcat1 和 tomcat2 實例上實現(xiàn)集群全局 session 復制,此處值要設置成 false 。
?
?
? tomcat 安裝目錄的 conf 下找到 ? server.xml ? 給 <Host></Host> 加上
<Context path="" docBase="/usr/local/apache/htdocs" debug="0" reloadable="true" crossContext="true"/>
?
?
docBase="/usr/local/apache/htdocs" 的路徑要和 httpd.conf 下的
?
DocumentRoot "/usr/local/apache/htdocs" ? 要一致
?
2. ?????? 將 tomcat 的安裝 目錄 拷貝 1 份 叫 tomcat-6.0.18_01 和 tomcat-6.0.18_02
修改配置文件 模擬 2 個 tomcat , 防止端口沖突
?
Server.xml 需要修改幾個地方
?
???????????
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
