19.6.5. Apache Mod_jk 工作节点的配置

workers.properties 文件定义 mod_jk 传递客户请求的工作节点的行为。在 Red Hat 企业版 Linux 里,这个文件位于 /etc/httpd/conf/workers.propertiesworkers.properties 文件定义不同的 Servlet 容器的位置,以及在它们之间如何平衡负载。
这个配置分成三个部分。第一部分处理全局属性,它应用于所有的工作节点。第二部分包含应用于专有节点的设置。第三部分包含应用于专有的采用负载平衡的节点。
属性的常用结构是 worker.WORKER_NAME.DIRECTIVE,这里的 WORKER_NAME 是工作节点的唯一名称,而 DIRECTIVE 是应用在工作节点上的设置。
Apache Mod_jk 工作节点的配置参考

节点模版指定默认的 per-node 设置。您可以在节点设置里覆盖模版。示例模版位于 例 19.5 “workers.properties 示例文件”

表 19.11. 全局属性

属性 描述
worker.list mod_jk 使用的工作节点列表。这些工作节点可用来接收请求。

表 19.12. 基于每个工作节点的属性

属性 描述
type
工作节点的类型。默认类型是 ajp13。其他可能的值还有 ajp14lbstatus
关于这些指令的详情,请参照 http://tomcat.apache.org/connectors-doc/ajp/ajpv13a.html 里的 Apache Tomcat Connector AJP Protocol 参考。
balance_workers
指定负载平衡器必须管理的工作节点。对于同一个负载平衡器您可以多次使用这个指令。它由一个用逗号隔开的工作节点名列表组成。它是根据每个工作节点而不是节点设置的。它影响该工作节点类型的所有节点。
sticky_session
指定来自相同会话的请求是否总是路由至相同的工作节点。默认值是 0,表示禁用 Sticky Session。要启用 Sticky Session,请将其设置为 1。Sticky Session 通常应该被启用,除非所有的请求都是 stateless 的。这是针对每个工作节点而非节点设置的。它影响该工作节点类型的所有节点。

表 19.13. 基于每个节点的属性

属性 描述
host
工作节点的主机名和 IP 地址。工作节点必须支持 ajp 协议栈。默认值是 localhost
port
侦听定义的协议请求的远程服务器实例的端口号码。默认值是 8009,这也是 AJP13 工作节点的默认侦听端口。AJP14 工作节点的默认端口是 8011
ping_mode
连接在哪些条件下会检测网络状态。探测仪用空的 AJP13 数据包进行 CPing,期望有 CPong 回应。使用指令标记组合来指定条件。这些标记不是用逗号或空格分隔的。 ping_mode 可以是任何 CPIA 的组合。
  • C - Connect。在连接至服务器后探测连接一次。用 connect_timeout 的值指定超时时间。否则使用 ping_timeout
  • P - Prepost。在发送每个请求到服务器之前探测连接。用 prepost_timeout 指令指定超时时间。否则使用 ping_timeout
  • I - Interval。根据 connection_ping_interval 指定的时间间隔来探测连接。否则使用 ping_timeout
  • A - All。CPI 的快捷方式,它指定使用所有的连接探测仪。
ping_timeout, connect_timeout, prepost_timeout, connection_ping_interval
连接探测仪设置的超时值。这些值的单位是毫秒, ping_timeout 的默认值是 10000。
lbfactor
为独立工作节点指定负载因子,且只应用于负载平衡器的成员工作节点。这便于为高性能的服务器赋予更多的工作负载。要赋予某个工作节点 3 倍的默认负载,将其设置为 3worker.my_worker.lbfactor=3

例 19.5. workers.properties 示例文件

worker.list=node1, node2, node3
     
worker.balancer1.sticky_sessions=1
worker.balancer1.balance_workers=node1
worker.balancer2.sticky_session=1
worker.balancer2.balance_workers=node2,node3

worker.nodetemplate.type=ajp13
worker.nodetemplate.port=8009

worker.node1.template=nodetemplate
worker.node1.host=localhost
worker.node1.ping_mode=CI
worker.node1.connection_ping_interval=9000
worker.node1.lbfactor=1

worker.node2.template=nodetemplate
worker.node2.host=192.168.1.1
worker.node2.ping_mode=A

worker.node3.template=nodetemplate
worker.node3.host=192.168.1.2
Apache mod_jk 的进一步的配置细节超出了本文档的范畴。更多的说明请参考 http://tomcat.apache.org/connectors-doc/ 上的 Apache 文档。