辅助ajp工作者不在apache和tomcat之间工作

时间:2011-10-26 01:33:40

标签: apache tomcat ajp

我已经工作了好几个月,但今天我有一个电源循环,有些东西坏了。对不起,这有点详细和具体,但我迫切需要帮助。

我有apache-2.2和两个tomcat-6服务器(只需从两个单独的文件夹运行)。我没有任何http连接器,但我在端口8009和8010上的每个服务器上运行一个ajp连接器。启动时,两个tomcats报告连接器正在运行,似乎没有任何问题:

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:以下是每个请求的配置详细信息......

workers.properties:

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

service1的server.xml:

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

service2 for server2:

<Connector port="8010" protocol="AJP/1.3" />

我认为就是这样。

2 个答案:

答案 0 :(得分:5)

你的系统上有SELinux吗?你能尝试一下:

setenforce 0

可能会阻止apache进程连接。另外,检查防火墙规则......

答案 1 :(得分:0)

默认情况下,selinux会打开8009,您可以打开更多端口来使用。

[goalin @ centos63 logs] $ sudo semanage port -l | grep 8009

http_port_t tcp 80,443,488,8008,8009,8443

[goalin @ centos63 logs] $ sudo semanage port -a -t http_port_t -p tcp 18009

[goalin @ centos63 logs] $ sudo semanage port -a -t http_port_t -p tcp 28009

[goalin @ centos63 logs] $ sudo semanage port -l | grep 8009

http_port_t tcp 28009,18009,80,443,488,8008,8009,8443

[goalin @ centos63 logs] $