使用mod_jk对3个tomcat 7实例进行负载均衡,给出“找不到工作者”

时间:2014-12-12 11:27:02

标签: apache tomcat load-balancing mod-jk

我在查看其他几个似乎有同样问题的帖子之后发布了这个帖子,但我无法借助其中任何一个来解决我的问题。

情况: - 我正在使用Windows 8专业版 -I在我的localhost上安装了3个tomcat实例 -I安装了带有mod_jk的Apache 2.4,用作我的负载均衡器

我想要达到的目标是: -Goto localhost / APPNAME(这是Apache 2.4),Apache现在将我的调用重定向到3个Tomcat 7实例中的一个,并给我所请求的页面。

这是我第一次这样做,所以我可能忘记某处了。我现在拥有的是:

Tomcat 7 server.xml如下所示:

第一个Tomcat:

<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">

第二个Tomcat:

<Connector port="8082" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8444" />
<Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
第三个Tomcat有:

<Connector port="8083" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8445" />
<Connector port="8011" protocol="AJP/1.3" redirectPort="8445" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat3">

对于我添加到httpd.conf的Apache服务器: LoadModule jk_module modules / mod_jk.so

<IfModule jk_module>
  Include conf/extra/mod_jk.conf
</IfModule>

mod_jk.conf如下所示:

JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkShmFile logs/jk-runtime-status
JkLogStampFormat "[%b %d %Y - %H:%M:%S] "
JkRequestLogFormat "%w %V %T"

JkMountCopy All
JkMount /* balancer
#JkMount /* tomcat1
#JkMount /* tomcat2
#JkMount /* tomcat3

最后我的workers.properties文件如下所示:

worker.tomcat1.type=ajp13
worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.lbfactor=1

worker.tomcat2.type=ajp13
worker.tomcat2.port=8010
worker.tomcat2.host=localhost
worker.tomcat2.lbfactor=1

worker.tomcat3.type=ajp13
worker.tomcat3.port=8011
worker.tomcat3.host=localhost
worker.tomcat3.lbfactor=1

#configure the loadbalancer
worker.balancer.type=lb
worker.balancer.balance_workers=tomcat1,tomcat2,tomcat3
worker.balancer.method=B
worker.balancer.sticky_session=True

worker.stat.type=status 

现在我先启动所有mu tomcat实例,然后启动Apache。它现在将在mod_jk.log中给我以下消息:

[Dec 12 2014 - 12:23:58] [3180:8452] [info] init_jk::mod_jk.c (3383): mod_jk/1.2.40 initialized
[Dec 12 2014 - 12:23:58] [3180:8452] [error] extension_fix::jk_uri_worker_map.c (578): Could not find worker with name 'balancer' in uri map post processing.
[Dec 12 2014 - 12:23:58] [3180:8452] [info] init_jk::mod_jk.c (3383): mod_jk/1.2.40 initialized
[Dec 12 2014 - 12:23:58] [3180:8452] [error] extension_fix::jk_uri_worker_map.c (578): Could not find worker with name 'balancer' in uri map post processing.
[Dec 12 2014 - 12:23:58] [9912:8284] [info] init_jk::mod_jk.c (3383): mod_jk/1.2.40 initialized
[Dec 12 2014 - 12:23:58] [9912:8284] [error] extension_fix::jk_uri_worker_map.c (578): Could not find worker with name 'balancer' in uri map post processing.
[Dec 12 2014 - 12:23:59] [9912:8284] [info] init_jk::mod_jk.c (3383): mod_jk/1.2.40 initialized
[Dec 12 2014 - 12:23:59] [9912:8284] [error] extension_fix::jk_uri_worker_map.c (578): Could not find worker with name 'balancer' in uri map post processing.

这当然意味着我不工作。谁能帮助我,让我知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

好的,我开始工作了。我似乎使用了一个导致问题的Apache服务器。

我在这个论坛上搜索得越来越具体,发现这篇文章: httpd AND Tomcat with mod_jk on Port 80 test fails

由于这个答案,我决定尝试不同的Apache下载。

从Apache网站我下载到Apache Haus版本的Apache for Windows。我无法让它发挥作用。但是,我从网站下载了另一个版本,复制了我的所有设置,现在它可以工作了!

相关问题