【问题标题】:Time based apache web server load balancing基于时间的 apache web 服务器负载均衡
【发布时间】:2016-03-03 11:50:21
【问题描述】:

我在用于负载平衡的 Apache Web 服务器反向代理后面有两个 Tomcat 节点。

我有没有办法配置工作程序,以便仅在一天中的特定时间将其他主机添加到集群中?

【问题讨论】:

  • 这是为了某种自动缩放吗?如果您有服务器,为什么不希望它们一直被配置?
  • 是的,我想设置自动缩放。我在多台主机上运行了许多应用程序,并且在同一台主机上运行了多个 tomcat。所以主机 H1 有 2 个 Tomcat 服务于应用程序 T1,T2 主机 H2 有 2 个 Tomcat 服务于应用程序 T1,T2 主机 H3 有 2 个 Tomcat 服务于应用程序 T3,T4 主机 H4 有 2 个 Tomcat 服务于应用程序 T3,T4 Apache 服务器负载平衡 b/w H1 和H2 为 T1 服务。例如,在一天中的某些时间,T3 的负载较低。我想知道如果我启动另一个 tomcat 来为主机 H3 上的 T1 提供服务,我可以动态地将它添加到集群中。

标签: apache tomcat tomcat7


【解决方案1】:

虽然mod_jkmod_proxy_ajp(或mod_proxy_http)都没有针对高负载重新调整大小的任何特定功能(据我所知),但我绝对知道mod_jk 可以配置为后端实例(Tomcat 节点),它们不必一直运行。

以如下配置为例:

worker.list=T1lb, T2lb, T3lb, T4lb

worker.T1lb.type-lb
worker.T1lb.balance_workers=h1t1, h2t1, h3t1, h4t1

worker.T2lb.type-lb
worker.T2lb.balance_workers=h1t2, h2t2, h3t2, h4t2
[etc for other combinations of TXlb]

worker.h1t1.host=host1.internal
worker.h1t1.port=1111
worker.h1t1.ping_mode=A
worker.h1t2.host=host1.internal
worker.h1t2.port=2222
worker.h1t2.ping_mode=A
worker.h1t3.host=host1.internal
worker.h1t3.port=3333
worker.h1t3.ping_mode=A
worker.h1t4.host=host1.internal
worker.h1t4.port=4444
worker.h1t4.ping_mode=A

[etc for other combinations of hXtY]

如果您只是关闭(或不启动)h1t3h1t4 的 Tomcat 节点,那么 mod_jk 将知道它们不可用并且不会向它们发送请求。当您启动它们时,它们将开始接受请求。

此配置还有另一个选项。它有点干净,但需要更多的工作。

你有和上面一样的配置,但是你将你通常不在线的节点的activation状态显式设置为disabled,像这样:

worker.h1t3.host=host1.internal
worker.h1t3.port=3333
worker.h1t3.ping_mode=A
worker.h1t3.activation=S
worker.h1t4.host=host1.internal
worker.h1t4.port=4444
worker.h1t4.ping_mode=A
worker.h1t4.activation=S

如果您想启动节点 h1t3h1t4,则将这些节点联机,然后将这些工作人员的激活状态从 S(停止)更改为 A(活动) .然后,mod_jk 将开始向这些可用节点发送请求。当您想使它们脱机时,再次将节点置于S 状态(停止),然后停止那些 Tomcat 实例。

Apache Tomcat 连接器load balancing howto 中记录了很多内容,Apache Tomcat 连接器worker reference 中有完整参考。

【讨论】:

    最近更新 更多