我已经工作了几个月,但今天我有一个电源循环,有些东西坏了。抱歉,这有点详细和具体,但我迫切需要帮助。
我有 apache-2.2 和两个 tomcat-6 服务器(只是从两个单独的文件夹运行)。我没有任何 http 连接器,但我在每台服务器上的端口 8009 和 8010 上运行一个 ajp 连接器。启动时,两个 tomcat 都报告连接器正在运行,似乎没有任何问题:
INFO: JK: ajp13 listening on /0.0.0.0:8009
...
INFO: JK: ajp13 listening on /0.0.0.0:8010
我有理由确定我的工作人员和 apache 配置设置正确。我可以很好地到达 8009 上的连接器,完全没有问题,但是当我尝试 8010 时,apache 给了我一个 503。检查日志(mod_jk.log)它说:
jk_open_socket::jk_connect.c (594): connect to 127.0.0.1:8010 failed (errno=13)
ajp_connect_to_endpoint::jk_ajp_common.c (922): Failed opening socket to (127.0.0.1:8010) (errno=13)
ajp_send_request::jk_ajp_common.c (1507): (eis) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=13)
但我无法理解的是,如果我对该端口进行简单的 telnet 并发送 GET:
# telnet 127.0.0.1 8010
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
GET
Connection closed by foreign host.
它击中了正确的tomcat(错误是预期的):
Oct 25, 2011 6:17:10 PM org.apache.jk.common.MsgAjp processHeader
SEVERE: BAD packet signature 18245
Oct 25, 2011 6:17:10 PM org.apache.jk.common.ChannelSocket processConnection
SEVERE: Error, processing connection
那么为什么 apache 达不到呢?无论我是否是超级用户,telnet 都可以使用。会发生什么?我完全被难住了。
而且我已经尝试重新启动 apache 和 tomcat 并且没有任何变化。谢谢参观。
EDIT-1:对此进行快速更新...我添加了一个 http 连接器,它工作正常,但 ajp 连接器仍然失败。
EDIT-2:这是每个请求的配置详细信息...
工人属性:
worker.list=service1,service2
worker.service1.type=ajp13
worker.service1.host=127.0.0.1
worker.service1.port=8009
worker.service2.type=ajp13
worker.service2.host=127.0.0.1
worker.service2.port=8010
httpd.conf(我看到 jkmount 和 JkMount ......大写重要吗?):
JkMount /s1 service1
JkMount /s1/* service1
JkMount /s2 service2
JkMount /s2/* service2
服务 1 的 server.xml:
<Connector port="8009" protocol="AJP/1.3" />
服务 2 的 server.xml:
<Connector port="8010" protocol="AJP/1.3" />
我想就是这样。