apache與tomcat負載叢集的3種方法

來源:互聯網
上載者:User

標籤:style   blog   http   io   color   os   使用   sp   java   

花了兩天時間學習apache與tomcat的整合方法,現在把學習成果記錄下來。
apache與tomcat負載叢集整合方法有3種jk、jk_proxy、http_proxy
本次整合使用的軟體版本:

apache:httpd-2.2.17-win32-x86-no_ssl.msi
tomcat:apache-tomcat-6.0.20.zip
jdk:jdk-6u14-windows-i586.exe


本次測試是1個apache整合兩個tomcat。
安裝apache http server省略,訪問地址為http://127.0.0.1:8081
安裝tomcat,解壓apache-tomcat-6.0.20.zip,測試時我是把兩個tomcat分開放在不同的虛擬機器,其中一個是和apache同一台虛擬機器。
兩個tomcat分別命名為worker2和worker3
先說tomcat.worker2的配置:
server.xml
(1)配置http監聽連接埠,這裡連接埠設為8079,該步驟非必要,只要不衝突就行了。

<Connector port="8079" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

(2)配置AJP監聽連接埠,這裡連接埠設為8077,該步驟非必要,只要不衝突就行了。

<Connector port="8077" protocol="AJP/1.3" redirectPort="8443" />

(3)設定管理員標識,這裡標識名配置為:worker2,添加jvmRoute="worker2",該步驟必須。

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

在Engine節點啟用叢集配置,只需去掉Cluster節點前的注釋就行了,該步驟必須,配置了叢集才能實現Session複製,如果只有一個叢集,只 按我下邊的配置就行了,如果多個叢集,則不能按此配置,tomcat伺服器內的協助文檔/docs/cluster-howto.html,/docs /config/cluster.html有介紹,需要的可以參考下。

<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker2">   <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 

要實現session複製,還需要在context.xml添加屬性distributable="true",如下:

<Context distributable="true">

如果不想在context.xml中添加distributable="true",還有另一方法是在應用程式的web.xml中添加<distributeable/>,不過這方法我沒有測試。
配置完成,訪問地址為:http://127.0.0.1:8079

另一個tomcat.worker3的配置
server.xml

<Connector port="8078" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /><Connector port="9009" protocol="AJP/1.3" redirectPort="8443" /><Engine name="Catalina" defaultHost="localhost" jvmRoute="worker3"><Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

context.xml配置tomcat.worker2一樣。
配置完成,訪問地址為:http://127.0.0.1:8078
注意:如果兩個tomcat是放在同一台機內,server.xml可能還需要修改其它連接埠,請確認兩個tomcat能正常啟動。

在tomcat.worker2和tomcat.worker3的webapps檔案夾添加同樣的測試檔案test"test.jsp

<html><head>  <title>helloapp</title></head><body><%System.out.println("call test.jsp");%>   SessionID: <%=session.getId() %>  </body></html>

訪問http://127.0.0.1:8078/test/test.jsp和http://127.0.0.1:8079/test/test.jsp,確保能成功訪問。

現在開始apache和tomcat的不同方式整合
1、jk方式整合


下載mod_jk-1.2.31-httpd-2.2.3.so,請下載合適的mod_jk版本,改名為mod_jk.so放進modules檔案夾內
修改conf/httpd.conf配置

LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel debug
JkMount  /*.do loadbalancer
JkMount  /*.jsp loadbalancer

增加conf/workers.properties檔案,新增內容

worker.list=loadbalancerworker.worker2.port=8077   #ajp的監聽連接埠worker.worker2.host=108.88.3.105worker.worker2.type=ajp13worker.worker2.lbfactor=1worker.worker3.port=9009worker.worker3.host=127.0.0.1worker.worker3.type=ajp13worker.worker3.lbfactor=1worker.loadbalancer.type=lbworker.loadbalancer.balance_workers=worker2,worker3 #這裡在的worker2、worker3為需要與上邊tomcat設定的別名一致worker.loadbalancer.sticky_session=1

配置完成任務,訪問http://127.0.0.1:8081/test/test.jsp,檢查是否能正常訪問。

2、ajp_proxy


去掉httpd.conf檔案中下面內容的注釋(刪掉#號),開啟下邊的配置

Include conf/extra/httpd-vhosts.confLoadModule proxy_module modules/mod_proxy.soLoadModule proxy_ajp_module modules/mod_proxy_ajp.soLoadModule proxy_balancer_module modules/mod_proxy_balancer.soLoadModule proxy_connect_module modules/mod_proxy_connect.soLoadModule proxy_ftp_module modules/mod_proxy_ftp.soLoadModule proxy_http_module modules/mod_proxy_http.so

注意:
除了mod_proxy.so,mod_proxy_balancer.so,mod_proxy_connect.so
如果是採用ajp_proxy,需要載入mod_proxy_ajp.so這個模組;
如果是採用http_proxy,需要載入mod_proxy_http.so這個模組;

httpd.conf,刪除剛才jk方式的配置內容,增加下邊的配置

ProxyRequests Off
<proxy balancer://loadbalancer> 
BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=worker3
BalancerMember ajp://108.88.3.105:8077 loadfactor=1 route=worker2
</proxy>

conf/extra/httpd-vhosts.conf增加配置

<VirtualHost *:8081>         ServerAdmin [email protected]         ServerName localhost         ServerAlias localhost         ProxyPass / balancer://loadbalancer/ stickysession=jsessionid nofailover=On         ProxyPassReverse / balancer://loadbalancer/         ErrorLog "logs/loadbalancer-error.log"         CustomLog "logs/loadbalancer-access.log" common</VirtualHost>

配置完成任務,訪問http://127.0.0.1:8081/test/test.jsp,檢查是否能正常訪問。

3、http_proxy
http_proxy的配置與ajp_proxy類似,修改方法2的httpd.conf配置如下,其它不變

ProxyRequests Off
<proxy balancer://loadbalancer> BalancerMember http://127.0.0.1:8078 loadfactor=1 route=worker3BalancerMember http://108.88.3.105:8079 loadfactor=1 route=worker2</proxy> 

配置完成任務,訪問http://127.0.0.1:8081/test/test.jsp,檢查是否能正常訪問。

檔案下載:

http://download.csdn.net/download/li1669852599/8153513

apache與tomcat負載叢集的3種方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.