1. 程式人生 > >apache+tomcat叢集和負載均衡配置

apache+tomcat叢集和負載均衡配置

Apache+tomcat

負載均衡的入門配置這份文件只是一個初步的配置負載均衡的文件,沒有涉及過多的效能優化的東西所以也就不多言了,直接切入主題。

一、準備工作
安裝JDK並配置環境變數。這裡要求至少1.5以上版本。
安裝
apache2.2
。我的安裝目錄為:D:\Apache2.2
安裝tomcat6。為了埠不起衝突,建議直接解壓。我這裡只使用了兩臺tomcat
作為叢集伺服器。其路徑分別為
D:\apache-tomcat-6.0.20_v1
D:\apache-tomcat-6.0.20_v2
二、配置Apache 
這裡說明一下,我在網上找到的一些資料都在介紹
mod_JK的方式配置負載均衡。但是從apache2.X版本之後其自身已經集成了mod_jk
可以直接使用mod_proxy的方式進行負載均衡的配置,所以下面介紹的也即是這種方式。
在D:\Apache2.2\conf目錄下找到httpd.conf
檔案,並進行修改。修改步驟:
1、開啟相關的模組。
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
LoadModule rewrite_module modules/mod_rewrite.so 
LoadModule negotiation_module modules/mod_negotiation.so
2013年ACCA/CAT考試全攻略
每日一練歷年真題模擬測試章節知識點

在配置檔案裡找到上述模組,將前邊的“#”去掉. 

2、配置
tomcat叢集。
在該配置檔案的最後加上:
ProxyRequests Off 
ProxyPass / balancer://cluster/
<proxy balancer://cluster>
BalancerMember ajp://
localhost:8009
loadfactor=1 route=
jvm1
BalancerMember ajp://
localhost:9009
loadfactor=1 route=
jvm2
</proxy> 
注意紅色部分,因為這裡我只使用了一臺物理機器作為叢集的配置,所以就直接使用了localhost指向本地的叢集伺服器,你也可以使用127.0.0.1。如果這裡你使用多臺機器一起配合的話,只需要將localhost修改為其他機器的IP地址就行。
另外需要注意的就是上面配置的埠,為什麼要這麼配置?將在後邊結合tomcat一起
做一個詳細的說明。

三、配置

tomcat  在D:\apache-tomcat-*\conf找到server.xml,然後著手修改。、配置
server的關閉。因為我是在同一臺機器上配置兩臺tomcat,所以為了使tomcat關閉不出現埠被佔用的情況,需要修改關閉埠。
<Server port="8005" shutdown="SHUTDOWN">
修改為:

<Server port="XXXX" shutdown="SHUTDOWN">  注意,我這裡用了兩臺
tomcat,所以第一個tomcat我就選擇了預設的埠
8005
,第二個tomcat我將此埠修改為了9005。總之,如果你有多臺tomcat伺服器群,都需要將它們的埠修改為互不衝突的埠號。

2、配置
Connector 
這裡又兩個地方需要修改,第一個就是
tomcat監聽的http埠,另一個就是tomcat監聽的AJP
埠:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 
注意,藍色部分是tomcat的http埠,因為我在同一臺機器上配置了兩個tomcat,為
了使它們的http埠不衝突,我將第一個tomcat使用預設的埠即8080,第二個tomcat的
http埠我修改為了8081。同樣的道理,如果你還有其他的tomcat,記得將它們的http埠修改為互不衝突的埠號即可。另一個需要修改的埠,紅色部分的埠,這裡是apache和tomcat連結的關鍵,前臺apache就是通過AJP

協議與tomcat進行通訊的,以完成負載均衡的作用。現在回過頭去看看apache的httpd.conf配置,
<proxy balancer://cluster>
BalancerMember ajp://
localhost:8009 loadfactor=1 route=
jvm1  BalancerMember ajp://
localhost:9009 loadfactor=1 route=jvm2</proxy> 
那麼,另一個tomcat的AJP埠你知道要配置成什麼了嗎?對了,就是9009。

 

3、配置

Engine 
<Engine name="Catalina" defaultHost="localhost">
,這個是原來的配置,現在將這個配置修改為:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">,然後另一個tomcat修改為

<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">

現在再回過頭去看看apache的配置:

<proxy balancer://cluster>
BalancerMember ajp://
localhost:8009
loadfactor=1 route=
jvm1
BalancerMember ajp://
localhost:9009
loadfactor=1 route=
jvm2</proxy>
這裡再說明一點,loadfactor相當於一種加權策略,loadfactor的值越大,對應的tomcat伺服器分到的請求就越多。像上面的這種設定就說明兩臺tomcat將平均負載

4、配置
Session的復Tomcat裡的
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

這個配置預設是被註釋掉的,如果想要開啟取消註釋就OK,這也是tomcat
預設的會話同步和複製配置。一般的情況下,使用預設配置就可以。
關於session的複製我還沒來得及驗證過,有需要的同學可以自己去網上找一下相關資
料。