簡體   English   中英

Tomcat 6之上的Apache負載均衡器-缺少某些內容且無法正常工作

[英]Apache Load Balancer on Top of Tomcat 6 - Missing Something and it's Not Working

我正在嘗試在兩個Tomcat 6安裝之上運行基本的Apache 2.2負載平衡器。 我正在閱讀所有文檔,但無法正常工作。 我相當確定我的Apache配置正確,但是我認為我的Tomcat設置中缺少阻止連接的內容。 Tomcat連接器文檔對如何修改Apache很有幫助,但未提及Tomcat設置中需要更改的內容。

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

當我嘗試在http:// localhost:80 / index.jsp建立連接時,這是我在mod_jk.log文件中遇到的錯誤。 這是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>

這是我擁有的worker.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文件中的Tomcat的Engine標記

<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>

經過一些額外的挖掘,找到了正確的答案。 我需要在每個Tomcat的server.xml文件中創建一個AJP連接器。 Apache的mod_jk連接到該端口,然后Tomcat將該端口中繼到HTTP連接器端口。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM