gpt4 book ai didi

基于 Tomcat 6 的 Apache 负载均衡器 - 缺少某些东西并且无法正常工作

转载 作者:行者123 更新时间:2023-11-28 22:10:03 25 4
gpt4 key购买 nike

我正在尝试让一个基本的 Apache 2.2 负载平衡器在两个 Tomcat 6 安装之上运行。我正在阅读所有文档,但无法使其正常工作。我相当确定我的 Apache 配置是正确的,但我认为我的 Tomcat 设置中缺少一些阻止连接的东西。 Tomcat Connector 文档很好地说明了如何修改 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 Bad Gateway 错误。

[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

最后,这是 Tomcat 的 server.xml 文件中的 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" />

关于基于 Tomcat 6 的 Apache 负载均衡器 - 缺少某些东西并且无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4187973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com