【发布时间】:2023-09-02 02:33:01
【问题描述】:
我已经在本地系统上配置了 Apache Httpd 和 Tomcat,参考本教程:http://www.tutorialspoint.com/white-papers/load-balancing-and-scalability-via-tomcat-clusters.htm。我试图实现负载平衡,但网络服务器和 Tomcat 服务器之间的连接不起作用:
在workers.properties 文件中
workers.tomcat_home=D:/Installed/apache-tomcat-7.0.62
workers.java_home=C:/Program Files/Java/jdk1.6.0_45
worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
在httpd.conf 文件中
# Path to workers.properties
JkWorkersFile D:/Installed/Apache24/conf/workers.properties
# Path to jk logs
JkLogFile D:/Installed/Apache24/logs/mod_jk.log
# Jk log level [debug/error/info]
JkLogLevel info
# Jk log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions for forwarding
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
JkMount /BalServers worker1
JkMount /BalServers/* worker1
我已将mod_jk.so 文件放在模块文件夹中。
我的网络服务器已启动并正在运行(已尝试使用@987654322@ URL,它显示了 Apache 主页)。 Tomcat 服务器也可以工作并且能够获取@987654323@ URL。但是当我尝试@987654324@ URL 时,什么都没有显示,甚至没有 404 状态页面。
请告诉我是否需要任何其他配置?
这是我的server.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener"/>
<Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>
<Listener className="org.apache.catalina.core.JasperListener"/>
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
<GlobalNamingResources>
<Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
</GlobalNamingResources>
<Service name="Catalina">
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
<Engine jvmRoute="worker1" defaultHost="localhost" name="Catalina">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log." suffix=".txt"/>
</Host>
</Engine>
</Service>
</Server>
【问题讨论】:
-
你的tomcat server.xml配置正确吗?发布tomcat的server.xml。也可以尝试
JkMount / worker1并检查重定向是否正常工作。 -
对于
JkMount / worker1也不起作用。 -
是否需要在
httpd.conf文件中配置VirtualHost标签?我使用的是默认的localhost,所以我这可能不是问题。 -
我个人更喜欢 mod_proxy,所以我对 ajp 知之甚少,但也许你正在混合 mod_jk 和 ajp 配置?您需要告诉tomcat在8080上运行还是ajp能够通过其他方式检测到这一点?
-
也许你应该提到Apache和tomcat的版本