2013-02-20 210 views
0

我在我的机器中创建了负载平衡方案,并且工作正常。但是,我陷入了一个简单的问题,并请求帮助。Tomcat负载平衡

我有两个tomcat worker - worker1和worker2。 我也有一个称为平衡器的负载均衡器。 workers.properties文件创建如下 -

  • workers.tomcat_home = “MyTomcatDirectory”
  • workers.java_home = “MyJDKDirectory”
  • worker.list = tomcat1,tomcat2
  • worker.list =平衡器
  • worker.tomcat1.type = AJP13
  • worker.tomcat1.host =本地主机
  • worker.tomcat1.port = 8009
  • worker.tomcat1.lbfactor = 1
  • worker.tomcat2.type = AJP13
  • worker.tomcat2.host =本地主机
  • worker.tomcat2.port = 8019
  • worker.tomcat2.lbfactor = 1
  • worker.balancer.type =磅
  • worker.balancer.balance_workers = tomcat1,tomcat2
  • worker.balancer.method = B`

现在,我有一个webapp说webapp1这是最终用户广泛使用。因此,我希望所有的用户请求webapp1应由worker1处理。为此,我已经添加了以下行httpd.conf文件在我的Apache的conf目录 -

  • JkMount /平衡器
  • JkMount/*平衡器
  • JkMount/webapp1 worker1
  • JkMount/webapp1/* worker1

这工作得很好。这里唯一的问题是,如果tomcat1(worker1)关闭,平衡器不会将webapp1的请求指向tomcat2(worker2)。我该如何解决这个问题?

+0

应该将负载均衡类型设置为循环法还是其他? – constantlearner 2013-02-20 08:43:37

+0

我已经定义了称为lb型平衡器的工人。平衡器应该自己处理roundrobin事情。而且它也是如此。唯一的问题是我使用JkMount将指向webapp1的URL指向worker1。但是,当worker1关闭时,请求不会重定向到worker2,因此EndUser会收到一个错误消息,指出“服务不可用 - 由于维护停机或容量问题,服务器暂时无法处理您的请求,请稍后再试。”请帮忙 – user1716576 2013-02-20 09:51:33

+0

在serverfault.com上问你会更好。 – EJP 2013-02-20 22:23:16

回答

1

如果您希望默认请求到工作人员1,然后到工作人员2,当且仅当工作人员1出现故障时,您需要为两名工人(tomcat1b和tomcat2b)设置第二磅工人(称为lb2) )并使用distance参数给tomcat2b比tomact1b更大的距离。这将导致tomcat1b优先于tomcat2b,除非tomcat1b失败。

见获取更多信息workers.properties文档: http://tomcat.apache.org/connectors-doc/reference/workers.html

BTW你tomcat1在workers.properties但worker1在JKMount。这是行不通的。

+0

嗨马克, 你是对的关于JkMount指令,我错误地,碰巧在那里提到worker1,当它应该是tomcat1。 但是, – user1716576 2013-02-21 07:32:50

+0

嗨马克, 你是对的JkMount指令,我错误地,碰巧在那里提到worker1,当它应该是tomcat1。 但是关于实际问题......也许我在解释这个问题时并不清楚。我在这些tomcat中都部署了10个WebApps。其中,webapp1被最终用户广泛使用。因此,我希望默认情况下,tomcat1应该关注webapp1的请求。但是,流量应该以1:1的比例分配(这是通过workers.properties文件中的lbfactor参数提到的)。 – user1716576 2013-02-21 07:39:05

+0

这意味着webapp1的10个请求应该由tomcat1处理。另外,如果同时有10个请求用于其他webapps,则它们将被tomcat2处理。但是,如果tomcat1发生故障,那么webapp1 shud的请求将由tomcat2处理。 – user1716576 2013-02-21 07:42:35