19.3.4. httpd 上的 mod_cluster 配置
介绍
mod_cluster 是一个基于 HTTPD 的负载平衡器。它使用一个通讯频道从 HTTPD 转发请求到应用服务器节点。您可以通过下面的 Derivative 配置 HTTPD 上的 mod_cluster。
注意
您不需要使用 ProxyPass directive,因为 mod_cluster 会自动配置必须转发给 JBossWEB 的 URL。
Derivative | 描述 | 值 |
---|---|---|
CreateBalancers | 定义如何在 HTTPD 虚拟主机里创建负载平衡器。它允许这样的 directive: ProxyPass /balancer://mycluster1/ 。 |
0: 创建 httpd 里定义的所有虚拟主机
1:不创建负载平衡器(定义平衡器名称要求至少一个 ProxyPass 或 ProxyMatch)
2: 只创建主服务器
默认值:2
使用这个值时,请不要忘记配置 ProxyPass directive 里的平衡器,因为默认值是一个空的 Sticky Session,
nofailover=Off 和通过 MCMP CONFIG 消息接收的值都会被忽略。
|
UseAlias | 检查别名是否对应服务器名。 |
0: 忽略别名
1: 检查别名
默认值:0
|
LBstatusRecalTime | 重新计算节点状态的负载平衡逻辑的时间间隔(秒)。 |
默认值:5 秒钟
|
WaitForRemove | 在已删除的节点被 HTTPD 忘记前的时间(秒)。 |
默认值:10 秒
|
ProxyPassMatch/ProxyPass |
ProxyPassMatch 和 ProxyPass 是 mod_proxy directive,当使用
! (而非 back-end url)时阻止路径里的 reverse-proxy。它用于允许 HTTPD 服务于静态信息,如图像。例如:
ProxyPassMatch ^(/.*\.gif)$ !
上面的例子允许 HTTPD 直接保存 .gif 文件。
|
mod_cluster 逻辑里的 hot-standby 节点是当所有其他节点都下线时,所有请求去往的最后的资源节点。这和 mod_proxy 里的 hot-standby 逻辑类似。
要配置 hot-standby 节点,用 factor 为 0 的 simple-load-provider 替换 mod_cluster 子系统里的 dynamic-load-provider,例如:
<subsystem xmlns="urn:jboss:domain:modcluster:1.2"> <mod-cluster-config advertise-socket="modcluster" connector="ajp"> - <dynamic-load-provider> - <load-metric type="busyness"/> - </dynamic-load-provider> + <simple-load-provider factor="0"/> </mod-cluster-config> </subsystem>
在 mod_cluster-manager 控制台里,节点状态显示为 OK 且负载为 0。更多信息请参考《JBoss Enterprise Application Platform 开发指南》里的『Apache mod_cluster-manager Application』章节。
例如,如果有 3 个节点:
- 节点 A,负载:10
- 节点 B,负载:10
- 节点 C,负载:0
负载将在节点 A 和 B 之间进行平衡。如果两者都不可用,节点 C 将承担负载。
mod_manager
除非特别说明,在所有情况下,mod_manger directive 的上下文都是 VirtualHost。server config
上下文暗示 directive 必须位于 VirtualHost 配置的外面。如果没有,则会显示错误信息且不会启动 HTTPD。
Derivative | 描述 | 值 |
---|---|---|
EnableMCPMReceive | 允许 VirtualHost 从节点接收 MCPM。HTTPD 配置文件里包含的 EnableMCPMReceive 可以允许 mod_cluster 运行。配置 Advertise 时请将它保存在 VirtualHost 里。 | |
MemManagerFile |
mod_manager 用来保存配置、为共享内存生成密钥或锁定文件的基础名称。它必须是一个绝对路径名;如果需要可以创建 directive。我们推荐将这些文件置于本地驱动而非 NFS 共享目录里。
Context: server config
| $server_root/logs/
|
Maxcontext | mod_cluster 支持的上下文的最大数量
Context: server config
|
默认值:100
|
Maxnode | mod_cluster 支持的节点的最大数量
Context: server config
|
默认值:20
|
Maxhost | mod_cluster 支持的主机(别名)的最大数量。它也包含平衡器的最大数目。
Context: server config
| 10 |
Maxsessionid |
保存的活动 sessionid 的数量,它提供 mod_cluster-manager 处理程序里活动会话的数量。当 mod_cluster 在 5 分钟内没有从会话里接收信息时,会话将变成不活动的。
Context: server config
这个字段只适用于演示和调试目的。
| 0:逻辑没被激活。 |
MaxMCMPMaxMessSize | 来自其他 Max Directive 的 MCMP 消息的最大尺寸 | 从其他 Max Directive 进行计算。最小值:1024 |
ManagerBalancerName | 当 JBoss AS/JBossWeb/Tomcat 没有提供平衡器名称时使用的平衡器名称。 | mycluster
|
PersistSlots | 告诉 mod_slotmem 将节点、别名和上下文保存到文件里。
Context: server config
| Off |
CheckNonce | 当使用 mod_cluster-manager 处理程序时切换 Nonce 检查 |
on/off
默认:on - Nonce 检查
|
AllowDisplay | 在 mod_cluster-manager 主页面上切换其他显示信息。 |
on/off
默认:off - 只显示版本号
|
AllowCmd | 允许使用 mod_cluster-manager URL 的命令。 |
on/off
默认:on - 允许的命令
|
ReduceDisplay | 减少显示在主 mod_cluster-manager 页面上的信息,所以在这个页面上可以显示更多的节点。 |
on/off
默认:off - 显示全部信息
|
SetHandler mod_cluster-manager |
显示 mod_cluster 从群集里看到的节点的信息。这些信息包括普通信息活动会话的数量。
<Location /mod_cluster-manager> SetHandler mod_cluster-manager Order deny,allow Allow from 127.0.0.1 </Location> |
on/off
默认值:off
|
注意
当访问 httpd.conf 里定义的位置时:
Transferred:对应发送到后台服务器的 POST 数据。
Connected:对应请求 mod_cluster 状态页面时已被处理的请求的数量。
Num_sessions:对应 mod_cluster 报告为活动的会话的数量(过去 5 分钟有请求)。如果 Maxsessionid 为 0,这个字段不会出现。这个字段只适用于演示和调试目的。