Apache2 + Tomcat 集群,Apache作為負載均衡

jopen 10年前發布 | 15K 次閱讀 Apache2 Web服務器
該集群為偽集群,實際應用的時候tomcat應該安裝在不同的機器上,而不是同一臺機器上
一.配置環境
操作系統:rhel5
服務器IP:192.168.93.43
jdk版本:1.6.0_20
apache 版本:httpd-2.2.16.tar.gz
tomcat 版本:apache-tomcat-5.5.30.tar.gz
jk版本:tomcat-connectors-1.2.30-src.tar.gz
3個安裝包默認放在了usr/local目錄下,用root用戶下載
共一臺機器,所以apache、jdk和2個tomcat都裝在一臺機器上了,一般情況是apache和jdk裝在一臺機器上,tomcat分別裝在各個機器或者裝同一臺機器上。
二.安裝
a)        jdk安裝,略。
b)        apache安裝
# cd /usr/local/
# mkdir apache          
# tar xvfz httpd-2.2.16.tar.gz
# cd httpd-2.2.16
#./configure --prefix=/usr/local/apache --enable-modules=so --enable-so    
配置安裝路徑信息等
# make
# make install
# cd /usr/local/apache/bin/
# ./apachectl configtest
若顯示Syntax ok則表明安裝成功,中間出現一些別的信息,如: httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.93.43 for ServerName 可以忽略;
#./apachectl start
啟動apache服務,瀏覽器中輸入127.0.0.1看是否有it works
# ./apachectl stop
關閉服務
注:系統可能自帶安裝了Apache,如果不需要,可以先將自帶的卸載掉后再安裝,否則可能出現直接訪問系統自帶的Apache。
c)        tomcat安裝
# cd /usr/local/
# tar xvfz apache-tomcat-5.5.30.tar.gz
# mv apache-tomcat-5.5.30 /usr/local/tomcat 修改解壓后的文件夾名字
# /usr/local/tomcat/bin/startup.sh
啟動服務后,訪問本機8080端口
# /usr/local/tomcat/bin/startup.sh /startup.bat
關閉服務
# /usr/local/tomcat/bin/shutdown.sh
# tail -f logs/catalina.out   查看tomcat的控制臺輸出
如果碰到tomcat關不完全等情況,執行如下操作
#ps -ef |grep tomcat          查看tomcat進程
#kill -9 pid                     如果有,用kill;pid為進程號
d)       jk安裝
 
#cd /usr/local/
# tar xzvf tomcat-connectors-1.2.30-src.tar.gz
#cd tomcat-connectors-1.2.30-src/jk/native
#chmod 755 buildconf.sh
#./buildconf.sh
#./configure --with-apxs=/usr/local/apache/bin/apxs
#make
#make install
我安裝好了之后,發現/usr/local/apache/modules/下已經有mod_jk.so了
注意先查看下,如果沒有則執行下面的步驟
#cd /usr/local/ jakarta-tomcat-connectors- jk1.2.14-src/jk/native/apache-2.0/
#cp mod_jk.so /usr/local/apache/modules/
 
三.配置
a)        httpd.conf配置
#vi /usr/local/apache/conf/httpd.conf
在文件的最尾部加上如下語句
# Load mod_jk
LoadModule jk_module modules/mod_jk.so
# Configure mod_jk
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
轉發過濾,將符合以下條件的請求發送到負載平衡器
JkMount /*.jsp loadbalancer
JkMount /servlet/* loadbalancer
JkMount /application/* loadbalancer
b)        workers.properties 添加
#vi /usr/local/apache/conf/workers.properties 如果workers.properties不存在就表示新建該文件
內容如下:
worker.list=loadbalancer
 
worker.worker1.port=8009                         worker1所在的端口
worker.worker1.host=192.168.93.43           worker1所在的IP
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
 
worker.worker2.port=9009                         worker2所在的端口
worker.worker2.host=192.168.93.43           worker2所在的IP
worker.worker2.type=ajp13
worker.worker2.lbfactor=1                         #權量 數值越大,分配的機率就最小
 
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=worker1,worker2
worker.loadbalancer.local_worker_only=1
worker.loadbalancer.sticky_session=true
此處指定集群是否需要會話復制,如果設為true,則表明為會話粘性,不進行會話復制,當某用戶的請求第一次分發到哪臺Tomcat后,后繼的請求會一直分發到此Tomcat服務器上處理;如果設為false,則表明需求會話復制。
worker.loadbalancer.sticky_session_force=true
如果上面的sticky_session設為true時,建議此處也設為true,此參數表明如果集群中某臺Tomcat服務器在多次請求沒有響 應后,是否將當前的請求,轉發到其它Tomcat服務器上處理;此參數在sticky_session=true時,影響比較大,會導致轉發到其它 Tomcat服務器上的請求,找不到原來的session,所以如果此時請求中有讀取session中某些信息的話,就會導致應用的null異常。
c)        server.xml配置
修改第一個tomcat的server.xml文件,修改過后的配置如下
<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker1">
將Cluster標簽對的注釋去掉修改里面的
tcpListenAddress=”192.168.93.43”
其中第一個tomcat的端口為:8005、8080、8009
修改第二個tomcat的server.xml文件,修改過后的配置如下
<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2">
將Cluster標簽對的注釋去掉修改里面的
tcpListenAddress=”192.168.93.43”
其中第二個tomcat的端口為:9005、9080、9009
保存后重啟tomcat檢查是否正常
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!