Apache2.2 + tomcat7 服務器集羣配置

1.軟件安裝

1.1下載和安裝apache

Apache 2.2 :http://httpd.apache.org/download.cgi,下載msi安裝程序,選擇no ssl版本html

1.2下載和安裝tomcat7.0.37(略)

2.Apache 配置

2.1啓動自動加載代理模塊

打開conf/httpd.conf去掉如下文本前的註釋符(#)以便讓Apache在啓動時自動加載代理(proxy)模塊。web

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

LoadModule proxy_http_module modules/mod_proxy_http.so
2.2增長index.jsp(可選)

在下列節點中增長index.jsp,目的是能看到首頁(conf/httpd.conf文件)apache

<IfModule dir_module>

DirectoryIndex index.html index.jsp

</IfModule>
2.3開啓虛擬站點配置

去掉Includeconf/extra/httpd-vhosts.conf前面的註釋(conf/httpd.conf文件)後端

2.4配置虛擬站點

在conf/extra/httpd-vhosts.conf,配置虛擬站點,在最下面加上tomcat

<VirtualHost *:80>

ServerAdmin xxx@126.com

ServerName localhost

ServerAlias localhost

ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On

ProxyPassReverse / balancer://cluster/

ErrorLog "logs/thc-error.log"

CustomLog "logs/thc-access.log" common

</VirtualHost>

說明:這裏balancer://是告訴Apache須要進行負載均衡的代理,後面的cluster是集羣名(能夠隨意取),兩個日誌引擎ErrorLog負責記錄錯誤,CustomLog負責記錄全部的http訪問以及返回狀態,日誌名能夠本身取。服務器

2.5配置代理

回到httpd.conf,在文檔最下面加上:網絡

ProxyRequests Off

<proxy balancer://cluster>

BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1

# 若是第二個Tomcat放在另外一臺電腦上那麼就輸入那臺電腦的ip

BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=jvm2

</proxy>

說明:ProxyRequestsOff 是告訴Apache須要使用反向代理,<proxy balancer://cluster> 用於配置工做在tomcat集羣中的全部節點,這裏的"cluster"必須與上面的集羣名保持一致。Apache經過ajp協議與tomcat進行通訊,ip地址和端口惟一肯定了tomcat節點和配置的ajp接受端口。loadfactor是負載因子,Apache會按負載因子的比例向後端tomcat節點轉發請求,負載因子越大,對應的tomcat服務器就會處理越多的請求,如兩個tomcat都是1,Apache就按1:1的比例轉發,若是是2和1就按2:1的比例轉發。route參數對應後續tomcat配置中的引擎路徑(jvmRoute)session

重啓Apache服務,若是此時訪問http://localhost/將會返回503錯誤,打開剛纔配置的錯誤日誌logs/thc-error.log,能夠看到錯誤緣由是由於後臺服務器沒有響應,由於此時tomcat還沒有配置和啓動。負載均衡

3.Tomcat 配置

解壓出兩個Tomcat,名字分別爲:tomcat7_1,tomcat7_2。若是tomcat7_1和tomcat7_2不在同一臺服務器上運行,對於端口就不需作改動。打開兩個Tomcat中的server.xml文件jvm

3.1修改http端口

找到

<Connector port="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"/>

在tomcat7_1中把8080改成7080,在tomcat7_2中把8080改成9080

3.2修改AJP端口

找到<Connector port="8009" protocol="AJP/1.3"redirectPort="8443" />

這是tomcat接收從Apache過來的ajp鏈接請求時使用的端口,tomcat7_1保持不變,把tomcat7_2端口改成9009。注意,這裏的端口對應Apache httpd.conf中BalancerMember中配置的ajp鏈接端口。

3.3修改shutdown端口,將8005改爲9005
<Serverport="9005" shutdown="SHUTDOWN">
3.4修改jvmRoute

找到<Enginename="Catalina" defaultHost="localhost">

Tomcat7_1修改成: <Engine name="Catalina" defaultHost="localhost"jvmRoute="jvm1">

Tomcat7_2修改成: <Engine name="Catalina"defaultHost="localhost" jvmRoute="jvm2">

這裏的jvmRoute對應步驟3.5Apache httpd.conf中BalancerMember中配置的route參數。

3.5共享Session

找到<ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>,打開註釋。

這裏的配置是爲了能夠在集羣中的全部tomcat節點間共享會話(Session)。若是僅僅爲了得到一個可用的tomcat集羣,Cluster只須要這麼配置就能夠了

3.6web.xml配置

在每一個須要session共享的web項目中,須要在web.xml中增長

<distributable/>

4.啓動

先啓動apache服務

再啓動tomcat服務

注意apache的網絡監聽端口和tomcat的不要相同

相關文章
相關標籤/搜索