指令 | 工作进程类型 | 默认值 | 说明 |
---|
connect_timeout | AJP、SUB | 0 |
连接超时属性告知 Web 服务器在建立连接后在 ajp13 连接上发送 PING 请求。参数是在等待 PONG 答复时等待的毫秒数延迟。默认值零禁用超时(无限超时)。
此功能已在 jk 1.2.6 中添加,以避免 Tomcat 出现挂起问题,并且需要在 Tomcat 3.3.2+、4.1.28+ 和 5.0.13+ 上实现的 ajp13 ping/pong 支持。默认情况下禁用。
|
prepost_timeout | AJP、SUB | 0 |
预发布超时属性告知 Web 服务器在将请求转发给它之前在 ajp13 连接上发送 PING 请求。参数是在等待 PONG 答复时等待的毫秒数延迟。默认值零禁用超时(无限超时)。
此功能已在 jk 1.2.6 中添加,以避免 Tomcat 出现挂起问题,并且需要在 Tomcat 3.3.2+、4.1.28+ 和 5.0.13+ 上实现的 ajp13 ping/pong 支持。默认情况下禁用。
|
reply_timeout | AJP、SUB | 0 |
参数是在读取事件期间等待成功的毫秒数。因此,这不是请求的完整应答时间的超时,而只是从 Tomcat 接收到的两个数据包之间最长等待时间。通常,最长的暂停是在发送请求和获取响应的第一个数据包之间。
如果在未从 Tomcat 接收任何数据的情况下超时,Web 服务器将不再等待响应的其余部分,并向客户端(浏览器)发送错误。通常,这并不意味着请求也在 Tomcat 后端中止。如果工作进程是负载平衡器的成员,负载平衡器可能会将工作进程置于错误状态,并在其他成员上重试请求。另请参阅 max_reply_timeouts、retries 和 recovery_options。
默认情况下(值为零),Web 服务器将无限期地等待,这对你来说可能是个问题。如果你设置了 reply_timeout,如果你有长时间运行的 servlet,请仔细调整它。
可以使用 Apache HTTP 服务器环境变量 JK_REPLY_TIMEOUT 和 reply_timeout 的工作进程映射扩展覆盖 reply_timeout。
此功能已在 jk 1.2.6 中添加,以避免 Tomcat 挂起的问题,并且适用于支持 ajp13 的所有 servlet 引擎。变量 JK_REPLY_TIMEOUT 和工作进程映射扩展已在版本 1.2.27 中添加。
|
重试 | AJP、SUB | 2 |
此指令也适用于负载平衡器工作进程。对于那些,它有 不同的含义。在通信错误的情况下,工作进程将向 Tomcat 发送请求的最大次数。每次重试都将通过另一个连接进行。第一次已经计算在内,因此重试=2 表示错误后重试一次。在重试之前,工作进程将等待可配置的休眠时间。
另请参阅属性 recovery_options 以更精细地控制重试和 retry_interval 以进行休眠时间配置。
在 1.2.16 版本之前,默认值为 3。
|
retry_interval | AJP、SUB | 100 |
工作进程在执行任何重试之前休眠的毫秒数。
此功能已在 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 |
将此值设置为 HTTP 状态代码,如果 Servlet 容器返回该代码,则会使工作进程失败。使用此指令处理 servlet 容器在短时间内(例如重新部署期间)可以临时返回非 200 响应的情况。
原始响应的错误页面、标头和状态代码不会发送回客户端。相反,该请求将导致 503 响应。如果工作进程是负载均衡器的成员,则该成员将进入错误状态。请求故障转移和工作进程恢复将使用通常的负载均衡器程序处理。
此功能已在 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 |
如果设置为正数,则只有当工作进程当前处理的并发请求数少于此数字时,才会将该工作进程用于请求。
请注意,这与 繁忙 负载均衡 方法 无关。
此功能为实验性,已添加到 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 地址,或者使用 IP 地址(以 IPV4 或 IPV6 表示法)表示“主机”,则此指令也无效。
此功能已添加到 jk 1.2.38 中。
|
secret | AJP、SUB、LB | - |
您可以在 Tomcat AJP 连接器上设置一个 secret 关键字。然后,只有来自具有相同 secret 关键字的工作进程的请求才会被接受。
在 Tomcat AJP 连接器配置中使用属性 secret="secret key word"。(历史记录:在 2020 年 2 月之前发布的 Tomcat 9.0、8.x、7.0 版本中,属性名称为 requiredSecret,在 Tomcat 6.0 及更早版本中为 request.secret。)
如果您在负载均衡器上设置了 secret,则其所有成员都将继承此 secret。
此功能已添加到 jk 1.2.12 中。
|
mount | AJP、LB | - |
工作进程应处理的 URI 的空格分隔列表。仅当工作进程包含在 worker.list 中时才使用它。
此指令可对同一工作进程多次使用。
|
max_reply_timeouts | LB | 0 |
如果您对负载均衡器工作进程的成员使用 reply_timeout,并且希望容忍一些请求花费的时间超过 reply_timeout,则可以将此属性设置为某个正值。
长时间运行的请求在等待数据时仍会在 reply_timeout 毫秒后超时,但只有当超过 max_reply_timeouts 个请求超时时,才会将相应的成员工作进程置于错误状态。更准确地说,每当负载均衡器执行其内部维护(默认情况下每 60 秒)时,这些错误请求的计数器都会除以 2。
此功能已添加到 jk 1.2.24 中,以使 reply_timeout 对偶发长时间运行的请求不太敏感。
|
recover_time | LB | 60 |
恢复时间是指负载均衡器在工作进程进入错误状态后不会尝试使用该工作进程的时间(以秒为单位)。只有在经过此时间后,处于错误状态的工作进程才会被标记为正在恢复,以便对其进行新请求的尝试。
此间隔不会在每次处理请求时都进行检查。相反,它在全局维护期间进行检查。两次全局维护运行之间的时间由 worker.maintain 控制。
除非您了解含义,否则不要将 recover_time 设置为很短的时间。对处于错误状态的工作进程进行的每次恢复尝试都是通过实际请求完成的!
|
error_escalation_time | LB | 恢复时间/2 |
将负载均衡器的成员设置为错误状态非常严重。例如,这意味着如果您需要粘性,则将阻止对相应节点会话的所有访问。
某些类型的错误检测无法提供精确的信息,即节点是否完全损坏。在这些情况下,负载均衡器不会立即将节点置于错误状态。仅当在该错误发生后error_escalation_time秒内没有成功的响应时,才会将节点置于错误状态。
此功能已添加到jk 1.2.28中。
|
会话 cookie | LB | JSESSIONID |
包含会话粘性所需的路由标识符的 cookie 的名称。路由标识符是 cookie 值中“.”字符之后的所有内容。
此功能已添加到 jk 1.2.27 中。
|
会话路径 | LB | ;jsessionid |
包含会话粘性所需的路由标识符的路径参数的名称。路由标识符是路径参数值中“.”字符之后的所有内容。
此功能已添加到 jk 1.2.27 中。
|
设置会话 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 中。
|
会话 cookie 路径 | LB | - |
仅当“set_session_cookie”设置为true时,才会使用此属性。有关说明,请参见“set_session_cookie”。如果“session_cookie_path”的值为空(默认值),则发送的 cookie 将不包含 PATH 信息。
此功能已添加到 jk 1.2.38 中。
|
激活 | SUB | 活动 |
使用此指令,可以将负载均衡器的平衡工作器配置为禁用或停止。禁用的工作器仅获取属于该工作器的会话的请求。停止的工作器不会收到任何请求。停止的工作器的用户将丢失其会话,除非使用群集通过会话复制。
使用 d 或 D 禁用,使用 s 或 S 停止。如果此指令不存在,则使用已弃用的指令“disabled”或“stopped”。
此标志可以使用状态工作进程在运行时更改。
此功能已添加到 jk 1.2.19 中。
|
路由 | SUB | 工作进程名称 |
通常,负载均衡器中平衡工作进程的名称等于相应 Tomcat 实例的 jvmRoute。如果您希望将与 Tomcat 实例对应的某个工作进程包含到具有不同平衡配置(例如禁用、停止)的多个负载均衡器中,则可以使用此属性。
为每个负载均衡器和每个 Tomcat 实例定义一个单独的工作进程,并使用任意工作进程名称,并将工作进程的路由属性设置为目标 Tomcat 实例的 jvmRoute。
如果此属性留空,则将使用工作进程的名称。
此属性可以使用状态工作进程在运行时更改。
如果路由名称包含句点,则句点之前的部分将用作域名,除非显式设置了域名。
此功能已添加到 jk 1.2.16 中。
自动域名规则已添加到 jk 1.2.20 中。
此属性已在 jk 1.2.20 中从 jvm_route 重命名为路由。
|
距离 | SUB | 0 |
一个整数,用于表达负载均衡器工作进程之间的偏好。如果存在距离较低的其他可用工作进程,则负载均衡器绝不会选择某个平衡工作进程。
仅当低于给定距离的所有工作进程处于错误、禁用或停止状态时,距离较大的工作进程才有资格进行平衡。
此功能已添加到 jk 1.2.16 中。
|
域名 | SUB | - |
仅当工作进程是负载均衡器的成员时,才可以使用域名指令。共享相同域名的工作进程被视为单个工作进程。如果使用 sticky_session,则域名将用作会话路由。
此指令用于具有 6 个以上 Tomcat 的大型系统,以便能够将 Tomcat 分组为两组,从而降低它们之间的会话复制传输。
此功能已添加到 jk 1.2.8 中。
|
重定向 | SUB | - |
设置为首选故障转移工作进程的名称。如果与会话 ID 匹配的工作进程处于错误状态,则将使用重定向工作进程。即使被禁用,它也将被使用,从而提供热备用。
如果您通过“route”属性明确设置了路由,则必须将“redirect”设置为首选故障转移工作程序的此路由,而不是其名称。
此功能已添加到 jk 1.2.9 中。
|