指令 | Worker 类型 | 默认值 | 描述 |
---|
connect_timeout | AJP,SUB | 0 | 连接超时属性告诉 Web 服务器在连接建立后向 ajp13 连接发送 PING 请求。该参数是等待 PONG 回复的延迟时间(毫秒)。默认值零禁用超时(无限超时)。 此功能已在 jk 1.2.6 中添加,以避免 Tomcat 挂起问题,并需要 ajp13 ping/pong 支持,该支持已在 Tomcat 3.3.2+、4.1.28+ 和 5.0.13+ 中实现。默认情况下禁用。
|
prepost_timeout | AJP,SUB | 0 | 预发送超时属性告诉 Web 服务器在将请求转发到 ajp13 连接之前向其发送 PING 请求。该参数是等待 PONG 回复的延迟时间(毫秒)。默认值零禁用超时(无限超时)。 此功能已在 jk 1.2.6 中添加,以避免 Tomcat 挂起问题,并需要 ajp13 ping/pong 支持,该支持已在 Tomcat 3.3.2+、4.1.28+ 和 5.0.13+ 中实现。默认情况下禁用。
|
reply_timeout | AJP,SUB | 0 | 该参数是在读取事件期间等待成功响应的毫秒数。因此,这不是请求完整响应时间的超时,而只是从 Tomcat 接收到两个数据包之间的最长时间。通常,最长的暂停时间是在发送请求和获取第一个响应数据包之间。 如果超时过去而未从 Tomcat 收到任何数据,Web 服务器将不再等待响应的其余部分,并向客户端(浏览器)发送错误。通常,这并不意味着 Tomcat 后端上的请求也被中止。如果 worker 是负载均衡器的成员,负载均衡器可能会将 worker 置于错误状态,并在另一个成员上重试请求。另请参见 max_reply_timeouts、retries 和 recovery_options。
默认情况下(值为零),Web 服务器将永远等待,这可能会成为您的问题。如果您设置了 reply_timeout,请在有长时间运行的 servlet 时仔细调整它。
可以使用 Apache HTTP Server 环境变量 JK_REPLY_TIMEOUT 和 worker 映射扩展的 reply_timeout 覆盖 reply_timeout。
此功能已在 jk 1.2.6 中添加,以避免 Tomcat 挂起问题,并且适用于所有支持 ajp13 的 servlet 引擎。变量 JK_REPLY_TIMEOUT 和 worker 映射扩展已在 1.2.27 版中添加。
|
retries | AJP,SUB | 2 |
此指令也存在于负载均衡器 worker 中。对于它们,它具有不同的含义。在通信错误的情况下,worker 向 Tomcat 发送请求的最大次数。每次重试都将通过另一个连接完成。第一次已经计算在内,所以 retries=2 表示错误后重试一次。重试之前,worker 会等待一个可配置的休眠时间。 另请参见属性 recovery_options 以进行更细粒度的重试控制,以及 retry_interval 以进行休眠时间配置。
直到 1.2.16 版本,默认值为 3。
|
retry_interval | AJP,SUB | 100 | worker 在进行任何重试之前休眠的时间量(毫秒)。 此功能已在 jk 1.2.27 中添加。
|
recovery_options | AJP,SUB | 0 | 恢复选项影响我们如何在检测到 Tomcat 问题时处理重试。我们重试的次数由属性 retries 控制。 此属性是一个位掩码。允许使用以下位: 1:如果 Tomcat 在收到请求后失败,则不恢复 2:如果 Tomcat 在向客户端发送头部后失败,则不恢复 4:如果我们在将响应写回客户端(浏览器)时检测到错误,则关闭与 Tomcat 的连接 8:始终恢复 HTTP 方法 HEAD 的请求(即使设置了位 1 或 2) 16:始终恢复 HTTP 方法 GET 的请求(即使设置了位 1 或 2)
此功能已在 jk 1.2.6 中添加。选项 4 已在 1.2.16 版本中添加,选项 8 和 16 在 1.2.24 版本中添加。
|
fail_on_status | AJP,SUB | 0 | 将此值设置为如果 Servlet 容器返回,则会导致 worker 失败的 HTTP 状态码。使用此指令处理 Servlet 容器可能在短时间内(例如在重新部署期间)临时返回非 200 响应的情况。 原始响应的错误页面、头部和状态码将不会发送回客户端。相反,请求将导致 503 响应。如果 worker 是负载均衡器的成员,则该成员将被置于错误状态。请求故障转移和 worker 恢复将按照通常的负载均衡器程序处理。
此功能已在 jk 1.2.20 中添加。
从 jk 1.2.22 开始,可以定义多个状态码,用空格或逗号分隔。例如:worker.xxx.fail_on_status=500,503
从 jk 1.2.25 开始,您还可以告诉负载均衡器不要将成员置于错误状态,如果响应返回的状态码在 fail_on_status 中。通过在这些状态码前面放置一个负号来启用此功能。例如:worker.xxx.fail_on_status=-404,-500,503
|
busy_limit | AJP,SUB | 0 | 如果设置为正数,则只有当 worker 当前处理的并发请求少于此数量时,才会将其用于请求。 请注意,这与 Busyness 负载均衡 方法 无关。
此功能是实验性的,已在 jk 1.2.41 中添加。
|
max_packet_size | AJP,SUB | 8192 | 此属性设置 AJP 数据包的最大大小(字节)。它应该是 1024 的倍数。非 1024 倍数的配置值将对齐到下一个 1024 的倍数。最大值为 65536。如果您更改其默认值,则必须同时更改 Tomcat 端 AJP 连接器的 packetSize 属性!packetSize 属性在 Tomcat 6.0.2 及更高版本中可用。 通常不需要更改最大数据包大小。在发送证书或证书链时,已报告默认值存在问题。
此功能已在 jk 1.2.19 中添加。
|
prefer_ipv6 | AJP,SUB | false | 编译时支持 IPV6 时,此指令强制主机名为同时具有 IPV6 和 IPV4 地址的名称解析为 IPV6 地址。如果给定主机名没有定义 IPV6 地址,则此指令无效。如果只定义了 IPV6 地址,或者“host”使用了 IP 地址(IPV4 或 IPV6 表示法),此指令也将无效。 此功能已在 jk 1.2.38 中添加。
|
secret | AJP,SUB,LB | - | 您可以在 Tomcat AJP 连接器上设置一个秘密关键字。然后,只有来自具有相同秘密关键字的 worker 的请求才会被接受。 在您的 Tomcat AJP 连接器配置中使用属性 secret="secret key word"。(历史说明:在 2020 年 2 月之前发布的 Tomcat 9.0、8.x、7.0 版本中,属性名为 requiredSecret;在 Tomcat 6.0 及更早版本中为 request.secret。)
如果您在负载均衡器上设置了秘密,则其所有成员都将继承此秘密。
此功能已在 jk 1.2.12 中添加。
|
mount | AJP,LB | - | worker 应处理的 URI 映射的空格分隔列表。仅当 worker 包含在 worker.list 中时才使用。 此指令可用于同一 worker 多次。
|
max_reply_timeouts | LB | 0 | 如果您为负载均衡器 worker 的成员使用 reply_timeout,并且您想容忍一些请求的处理时间超过 reply_timeout,您可以将此属性设置为某个正值。 长时间运行的请求在等待数据时仍会超时(reply_timeout 毫秒后),但只有当超过 max_reply_timeouts 个请求超时时,相应的成员 worker 才会被置于错误状态。更准确地说,每当负载均衡器执行其内部维护时(默认每 60 秒一次),这些错误请求的计数器都会除以二。
此功能已在 jk 1.2.24 中添加,以使 reply_timeout 对偶发长时间运行的请求不那么敏感。
|
recover_time | LB | 60 | 恢复时间是负载均衡器在 worker 进入错误状态后,不再尝试使用该 worker 的秒数。只有在此时间过去后,处于错误状态的 worker 才会被标记为正在恢复,以便可以尝试将其用于新请求。 此间隔并非每次处理请求时都会检查。相反,它是在全局维护期间检查的。两次全局维护运行之间的时间由 worker.maintain 控制。
除非您了解其影响,否则不要将 recover_time 设置为非常短的时间。每个针对处于错误状态的 worker 的恢复尝试都是由实际请求完成的!
|
error_escalation_time | LB | recover_time / 2 | 将负载均衡器的成员置于错误状态是相当严重的。例如,这意味着如果您需要粘滞性,则对相应节点会话的所有访问都将被阻止。 某些类型的错误检测无法提供节点是否完全损坏的精确信息。在这些情况下,LB 不会立即将节点置于错误状态。只有在此类错误发生后,error_escalation_time 秒内没有成功的响应,节点才会被置于错误状态。
此功能已在 jk 1.2.28 中添加。
|
session_cookie | LB | JSESSIONID | 包含会话粘滞性所需路由标识符的 cookie 名称。路由标识符是 cookie 值中“.”字符之后的所有内容。 此功能已在 jk 1.2.27 中添加。
|
session_path | LB | ;jsessionid | 包含会话粘滞性所需路由标识符的路径参数名称。路由标识符是路径参数值中“.”字符之后的所有内容。 此功能已在 jk 1.2.27 中添加。
|
set_session_cookie | LB | false | 激活会话粘滞性 cookie 的生成。通常您不需要此功能。 一些 Web 框架替换了 Tomcat 会话管理,并使用不同的方式生成会话 ID。因此,Tomcat 添加到会话 ID 末尾的路由 ID 会丢失,我们无法再进行粘滞负载均衡。作为一种变通方法,您可以执行以下步骤:
- 使用“session_cookie”属性选择一个非标准 cookie 名称。
- 通过将属性“set_session_cookie”设置为 true 来激活 cookie 发送。
- 将属性“session_cookie_path”设置为正确的应用程序 URI,例如“/myapp/”。
只有当请求不包含同名 cookie,或者该 cookie 不包含负载均衡器可以满足的路由 ID 时,才会发送 cookie。特别是节点故障转移后,我们将发送一个新 cookie 以将粘滞性切换到新节点。
此功能已在 jk 1.2.38 中添加。
|
session_cookie_path | LB | - | 此属性仅在“set_session_cookie”设置为 true 时使用。有关说明,请参见“set_session_cookie”。如果“session_cookie_path”的值为空(默认),则发送的 cookie 将不包含 PATH 信息。 此功能已在 jk 1.2.38 中添加。
|
activation | SUB | Active | 使用此指令,负载均衡器的均衡 worker 可以配置为禁用或停止。禁用的 worker 只接收属于该 worker 会话的请求。停止的 worker 不接收任何请求。停止的 worker 的用户将失去其会话,除非使用集群进行会话复制。 使用 d 或 D 禁用,使用 s 或 S 停止。如果此指令不存在,则使用已弃用的指令“disabled”或“stopped”。
此标志可以在运行时使用状态 worker 更改。
此功能已在 jk 1.2.19 中添加。
|
route | SUB | worker 名称 | 通常,负载均衡器中均衡 worker 的名称与相应 Tomcat 实例的 jvmRoute 相等。如果您希望将与 Tomcat 实例对应的 worker 包含到具有不同均衡配置(例如禁用、停止)的多个负载均衡器中,则可以使用此属性。 为每个 lb 和每个 Tomcat 实例定义一个单独的 worker,使用任意 worker 名称,并将 worker 的 route 属性设置为与目标 Tomcat 实例的 jvmRoute 相等。
如果此属性留空,则将使用 worker 的名称。
此属性可以在运行时使用状态 worker 更改。
如果路由名称包含句点,则第一个句点之前的部分将用作域名,除非明确设置了 domain。
此功能已在 jk 1.2.16 中添加。 自动域名规则已在 jk 1.2.20 中添加。 该属性已在 jk 1.2.20 中从 jvm_route 重命名为 route。
|
distance | SUB | 0 | 一个整数,用于表达 lb worker 的均衡 worker 之间的偏好。如果存在另一个距离更低的可用 worker,负载均衡器绝不会选择某个均衡 worker。 只有当给定距离以下的所有 worker 都处于错误、禁用或停止状态时,距离较大的 worker 才符合均衡条件。
此功能已在 jk 1.2.16 中添加。
|
domain | SUB | - | 域指令只能在 worker 是负载均衡器成员时使用。共享相同域名的 worker 被视为单个 worker。如果使用 sticky_session,则域名用作会话路由。 此指令用于拥有 6 个以上 Tomcat 的大型系统,以便能够将 Tomcat 分为两组,从而降低它们之间的会话复制传输。
此功能已在 jk 1.2.8 中添加。
|
redirect | SUB | - | 设置为首选故障转移 worker 的名称。如果与 SESSION ID 匹配的 worker 处于错误状态,则将改用 redirect worker。即使其被禁用,它也会被使用,从而提供热备用。 如果您通过“route”属性明确设置了路由,则必须将“redirect”设置为此首选故障转移 worker 的路由,而不是其名称。
此功能已在 jk 1.2.9 中添加。
|