apache - 基于时间的 apache web 服务器负载平衡

标签 apache tomcat tomcat7

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

有没有办法让我配置 worker,以便仅在一天中的特定时间将额外的主机添加到集群?

最佳答案

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

以如下配置为例:

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 .

关于apache - 基于时间的 apache web 服务器负载平衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35771420/

相关文章:

java - Hadoop 作业不会被杀死

php - Nginx 配置权限和所有权

c - _dl_close 断言失败

tomcat - 为什么在 Tomcat 关闭时会抛出 NoClassDefFoundError?

java - 用于多部分表单数据的 Jersey 2 注入(inject)源

java - SelectOneMenu 没有任何可供选择的值

Apache 将所有请求转发到特定的静态文件

eclipse - 无法从 Eclipse 启动 tomcat 调试 session

java - Java Rest API JAX-RS 中的多个参数 - GET 方法

java - Log4j2:RollingFile appender 中的 filePattern 的属性替换工作不正确