2010-11-15 38 views
1

我試圖讓兩個Tomcat的安裝6上運行一個基本的Apache 2.2的負載均衡。我正在閱讀所有文檔,並且無法正常工作。我相當肯定,我的Apache配置是正確的,但我想我的Tomcat設置中缺少一些阻止連接的設置。 Tomcat連接器文檔對於如何修改Apache很有幫助,但沒有提到Tomcat設置中需要更改的內容。Apache的負載平衡器 - 失去了一些東西,它不工作

這是我的基本設置。所有3個安裝都在同一臺機器上(這只是一個測試設置)。所以,Apache 2.2安裝在C:\ apache目錄下。在端口80上偵聽。2 Tomcat 6安裝,一個在端口81上偵聽,一個在端口82上偵聽.Apache將簡單地將所有內容路由到Tomcat服務器,充當100%負載均衡器。

這裏是我得到我的mod_jk.log文件中的錯誤,當我試圖讓在http://localhost:80/index.jsp的連接。這是一個502錯誤的網關錯誤。

[Mon Nov 15 13:05:04.681 2010] [3596:1496] [error] ajp_connection_tcp_get_message::jk_ajp_common.c (1245): wrong message format 0x4854 from 127.0.0.1:81 
[Mon Nov 15 13:05:04.681 2010] [3596:1496] [error] ajp_get_reply::jk_ajp_common.c (2058): (tomcat1) Tomcat is down or refused connection. No response has been sent to the client (yet) 
[Mon Nov 15 13:05:04.681 2010] [3596:1496] [info] ajp_service::jk_ajp_common.c (2543): (tomcat1) sending request to tomcat failed (recoverable), because of protocol error (attempt=1) 

這裏是我在我的Apache的的httpd.conf文件中的設置...

LoadModule jk_module modules/mod_jk.so 
<IfModule jk_module> 
    JkWorkersFile conf/workers.properties 
    JkLogFile logs/mod_jk.log 
    JkLogLevel info 
    JkMountFile conf/uriworkermap.properties 
</IfModule> 

這裏是workers.properties文件我有...

# 
# This file provides minimal jk configuration properties needed to 
# connect to Tomcat. 
# 
# The workers that jk should create and work with 
# 
worker.list=loadbalancer,jkstatus 

# 
# Define the servers in our cluster 
# 
worker.tomcat1.type=ajp13 
worker.tomcat1.host=localhost 
worker.tomcat1.port=81 
worker.tomcat1.lbfactor=2 

worker.tomcat2.type=ajp13 
worker.tomcat2.host=localhost 
worker.tomcat2.port=82 
worker.tomcat2.lbfactor=1 

# 
# Defining a load balancer 
# 
worker.loadbalancer.type=lb 
worker.loadbalancer.balance_workers=tomcat1,tomcat2 
worker.loadbalancer.sticky_session=false 

# 
# Define status worker 
# 
worker.jkstatus.type=status 

這裏是uriworkermap.properties我有

# 
# This file provides sample mappings for example wlb 
# worker defined in workermap.properties.minimal 
# The general syntax for this file is: 
# [URL]=[Worker name] 

/*.*=loadbalancer 

最後,這裏是在其server.xml中的T​​omcat的引擎標籤文件

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

     <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" /> 

     <Host name="localhost" appBase="webapps" deployOnStartup="true"> 
     <Valve className="org.apache.catalina.valves.AccessLogValve" 
       directory="logs" prefix="localhost_access_log." suffix=".txt" 
       pattern="common" resolveHosts="false"/> 
     </Host> 

    </Engine> 

回答

2

後發現一些額外的挖掘正確答案。我需要在每個Tomcat的server.xml文件中創建一個AJP連接器。 Apache的mod_jk連接到此端口,然後Tomcat將該端口轉發到HTTP連接器端口。

<Connector port="8009" protocol="AJP/1.3" redirectPort="81" /> 
+0

「Tomcat將該端口轉發到HTTP連接器端口。」不,它不。 Tomcat直接通過AJP端口接收請求。您可以並可能應該完全刪除HTTP連接器。 'redirectPort'應該設置爲「443」。 – EJP 2012-06-25 00:25:24