Menu Close
Settings Close

Language and Page Formatting Options

19.3.4. httpd 上的 mod_cluster 配置

介绍

mod_cluster 是一个基于 HTTPD 的负载平衡器。它使用一个通讯频道从 HTTPD 转发请求到应用服务器节点。您可以通过下面的 Derivative 配置 HTTPD 上的 mod_cluster。

注意

您不需要使用 ProxyPass directive,因为 mod_cluster 会自动配置必须转发给 JBossWEB 的 URL。

表 19.2. mod_cluster Derivatives

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。

表 19.3. mod_manager Derivatives

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,这个字段不会出现。这个字段只适用于演示和调试目的。