【问题标题】:Configuring Apache in front of Jboss as load balancer在 Jboss 前面配置 Apache 作为负载均衡器
【发布时间】:2016-07-31 20:09:40
【问题描述】:

我的 Web 应用程序部署在 JBoss AS 7.1 中。在用 Java 编写中间件代码之后,当我开始编写用户界面时。我想过使用 Apache httpd 来访问 css、js 和 html 等静态资源。因此,我安装了 httpd 2.4.23 并进行了配置更改以访问我拥有静态资源的目录。然后我想用 httpd 作为负载均衡器。为此,我安装了 mod_jk 1.2.41。我使用以下详细信息创建了workers.property:

# for mapping requests 
# The configuration directives are valid 
# for the mod_jk version 1.2.18 and later 
worker.list=loadbalancer,status 
# Define node 
# modify the host as your host IP or DNS name. 
worker.node.port=8009
worker.node.host=127.0.0.1 
#(IP or DNS name of the server on which Jboss is running) 
worker.node.type=ajp13 
worker.node.lbfactor=1 
# Load-balancing behaviour 
worker.loadbalancer.type=lb 
worker.loadbalancer.balance_workers=node 
worker.loadbalancer.sticky_session=1 
worker.status.type=status

这是我的 mod-jk.conf

LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkShmFile logs/mod_jk.shm
JkLogFile logs/mod_jk.log
JkLogLevel info
JkMount /sb/* loadbalancer
JkMount /sb.web/* loadbalancer

我在httpd.conf的末尾添加了这个配置文件:

Include C:/Apache24/conf/mod-jk.conf

我检查了我的 JBoss 配置,参考如下:

https://docs.jboss.org/author/display/AS71/Using+mod_jk+with+JBoss+AS7#Usingmod_jkwithJBossAS7-Compile%26InstallApacheHttpd

我无法使用 httpd URL 访问我的 JBoss 应用程序。它给出了以下错误日志:

::1 - - [01/Aug/2016:01:26:58 +0530] "GET /sb/v1/sc/m/2/ HTTP/1.1" 503 299

mod-jk 日志:

 [7132:1928] [info] jk_open_socket::jk_connect.c (817): connect to 127.0.0.1:8009 failed (errno=61)
 [7132:1928] [info] ajp_connect_to_endpoint::jk_ajp_common.c (1068): (node) Failed opening socket to (127.0.0.1:8009) (errno=61)
 [7132:1928] [error] ajp_send_request::jk_ajp_common.c (1728): (node) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=61)
 [7132:1928] [info] ajp_service::jk_ajp_common.c (2773): (node) sending request to tomcat failed (recoverable), because of error during request sending (attempt=2)
 [7132:1928] [error] ajp_service::jk_ajp_common.c (2794): (node) connecting to tomcat failed (rc=-3, errors=4, client_errors=0).
 [7132:1928] [info] service::jk_lb_worker.c (1595): service failed, worker node is in error state
 [7132:1928] [info] service::jk_lb_worker.c (1675): All tomcat instances are busy or in error state
 [7132:1928] [error] service::jk_lb_worker.c (1680): All tomcat instances failed, no more workers left
 [7132:1928] [info] jk_handler::mod_jk.c (2991): Service error=0 for worker=loadbalancer

我能够通过自己的 URL 访问 JBoss 应用程序,并且可以使用 httpd URL 访问静态内容,这意味着这两个服务器都运行良好。 请帮忙。

【问题讨论】:

  • 请向我们展示您的日志文件,即 mod_jk.log 和 erro_log
  • 问题已编辑并添加了日志。谢谢

标签: apache redirect jboss7.x httpd.conf mod-jk


【解决方案1】:

确保 Tomcat 正在运行并连接到端口 8009。请确认端口 8009 已打开并正在侦听

抱歉,您正在使用 JBoss,但我在使用 Tomcat 时遇到了同样的问题,这就是我编写 Tomcat 而不是 JBoss 的原因。

【讨论】:

  • 但是为什么是 tomcat。我在 Apache https 后面有 JBoss。为什么 Tomcat 会出现在这里?
【解决方案2】:

JBoss 仅使用 tomcat 容器,mod_jk 日志显示以下错误:

[7132:1928] [info] service::jk_lb_worker.c (1595): service failed, worker node is in error state
 [7132:1928] [info] service::jk_lb_worker.c (1675): All tomcat instances are busy or in error state
 [7132:1928] [error] service::jk_lb_worker.c (1680): All tomcat instances failed, no more workers left

所以,它只是意味着您的后端 jboss 节点已关闭或无法从 apache 访问。所以,看看您是否能够从 apache 机器“telnet 到 jboss ajp 端口”。如果您的 apache 和 jboss 实例是在同一台机器上运行,则不应该有任何 n/w 问题。因此,在这种情况下,请查找相同时间戳的 server.log,即当您收到错误“所有 tomcat 实例都忙或处于错误状态”时的时间戳。

【讨论】:

  • 感谢 Pankaj 的帮助。现在,我开始在 tomcat 本身中部署我的应用程序,几天都忘记了 Jboss。我会回来检查您的建议并回复如果无法解决问题。需要注意的一点是,这两台服务器都在同一台机器上运行。
【解决方案3】:

但是为什么要使用 tomcat。我在 Apache https 后面有 JBoss。为什么 Tomcat 会出现在这里?

  • 您可以使用任何服务器作为后端服务器。所以,无论您在后端使用 JBoss 还是 tomcat 都没有关系。正如我之前所说的;日志包含单词“tomcat”只是因为 Jboss 在内部使用 tomcat 容器。所以,在你的情况下,你只需要担心 AJP 端口是否在 8009 上监听;因为 mod_jk 只使用 AJP 协议。所以,请确保你是能够从您的 Apache 远程登录到后端 Jboss 实例。 如您所说;您的 JBoss 和 apache 都在同一台机器上运行;因此,请确保您使用了正确的端口和 IP 地址。另外,请查看您是否使用了任何端口偏移量。如果是,则相应地更改值。

    [7132:1928] [error] service::jk_lb_worker.c (1680): 所有的 tomcat 实例都失败了,没有更多的工人了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-05
    • 2011-12-29
    • 2019-01-09
    相关资源
    最近更新 更多