首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Jboss前面将Apache配置为负载均衡器

在Jboss前面将Apache配置为负载均衡器
EN

Stack Overflow用户
提问于 2016-08-01 04:09:40
回答 3查看 1.3K关注 0票数 0

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

代码语言:javascript
复制
# 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

代码语言:javascript
复制
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的末尾添加了这个配置文件:

代码语言:javascript
复制
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应用程序。它给出了以下错误日志:

代码语言:javascript
复制
::1 - - [01/Aug/2016:01:26:58 +0530] "GET /sb/v1/sc/m/2/ HTTP/1.1" 503 299

mod-jk日志:

代码语言:javascript
复制
 [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

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

EN

回答 3

Stack Overflow用户

发布于 2016-08-02 22:40:48

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

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

票数 0
EN

Stack Overflow用户

发布于 2016-08-22 18:51:46

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

代码语言:javascript
复制
[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.So到达,看看你是否能够从apache machine.If 'telnet to jboss ajp port‘你的apache和jboss实例运行在同一台机器上,那么在这种情况下应该没有任何n/w issue.So在这种情况下查找相同时间戳的server.log,即当你收到错误消息“所有tomcat实例都忙或处于错误状态”时的时间戳。

票数 0
EN

Stack Overflow用户

发布于 2016-08-30 21:30:22

为什么是

呢?我在Apache https后面有JBoss。为什么Tomcat会出现在这里?

  • 你可以使用任何服务器作为后端server.So,不管你是在backend.As上使用Jboss还是tomcat我之前说过;日志中包含单词' tomcat‘只是因为JBoss使用tomcat容器internally.So,在你的情况下你只需要担心AJP端口是否监听8009;因为mod_jk只使用AJP protocol.So,所以要确保你能够远程登录你的Apache到后端Jboss实例。正如您所说,您的JBoss和apache运行在同一台机器上;因此,请确保您使用了正确的端口和ip address.Also,看看您是否使用了任何端口偏移量。

7132:1928 service::jk_lb_worker.c (1680):所有tomcat实例都失败,没有更多的工作者离开

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38687995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档