2013-02-20 295 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