将路由器配置为重试与消息处理器的连接

Edge for Private Cloud v. 4.17.09

配置在健康检查期间消息处理器不可用时的路由器响应

路由器每 5 秒对消息处理器进行一次健康检查,以确定消息处理器能否处理请求。如果消息处理器发生故障,路由器会自动将请求转发到另一个消息处理器。

您可以通过在路由器上设置 conf_load_balancing_load.balancing.driver.nginx.server.retry 属性,配置路由器在消息处理器发生故障时的响应方式。该属性采用一组用空格分隔的值,其中可以包括:

  • off:停用重试时,路由器会在收到请求时返回失败代码。
  • http_599:(默认)如果路由器收到来自消息处理器的 HTTP 599 响应,则路由器将请求转发给下一个消息处理器。

    HTTP 599 是消息处理器关闭时生成的特殊响应代码。消息处理器会尝试完成所有现有请求,但对于任何新请求,它都会使用 HTTP 599 进行响应,以指示路由器在下一个消息处理器上重试请求。
  • error:如果在与消息处理器建立连接、向其传递请求或从消息处理器读取响应标头时发生错误,路由器会将请求转发到下一个消息处理器。
  • 超时:如果在与消息处理器建立连接、向其传递请求或从消息处理器读取响应标头时发生超时,路由器会将请求转发到下一个消息处理器。
  • invalid_header:如果消息处理器返回空响应或无效响应,则路由器将请求转发到下一个消息处理器。
  • http_XXX:如果消息处理器返回带有 HTTP 代码 XXX 的响应,路由器会将请求转发给下一个消息处理器。

如需配置路由器,请执行以下操作:

  1. 修改 /opt/apigee/customer/application/router.properties 文件(如果该文件不存在,请创建一个)。
  2. 按如下所示添加 conf_load_balancing_load.balancing.driver.nginx.server.retry 属性:
    conf_load_balanced_load.balanced.driver.nginx.server.retry=http_599 error
  3. 请确保属性文件归“apigee”用户所有:
    > chown apigee:apigee /opt/apigee/customer/application/router.properties
  4. 重启路由器:
    > /opt/apigee/apigee-service/bin/apigee-serviceedge-router restart

配置 API 代理请求过程中访问消息处理器时的路由器超时

在通过 API 代理处理请求的过程中,边缘路由器在尝试访问消息处理器时预设的超时时间为 57 秒。超时后,路由器将尝试连接到另一个消息处理器(如果有)。否则,将返回错误。

您可以使用以下两个属性来控制此超时:

  • conf_load_balancing_load.balancing.driver.proxy.read.timeout 用于指定单个消息处理器的等待时间(以秒为单位)。默认值为 57 秒。
  • 当您的 Edge 安装有多个消息处理器时,conf_load_balancing_load.balancing.driver.nginx.upstream_next_timeout 会指定所有消息处理器的总等待时间(以秒为单位)。其当前值为 conf_load_balancing_load.balancing.driver.proxy.read.timeout 或 57 秒。

如需配置路由器,请执行以下操作:

  1. 修改 /opt/apigee/customer/application/router.properties 文件(如果该文件不存在,请创建一个)。
  2. 按如下方式设置属性:
    conf_load_balancing_load.balancing.driver.proxy.read.timeout=120
  3. 请确保属性文件归“apigee”用户所有:
    > chown apigee:apigee /opt/apigee/customer/application/router.properties
  4. 重启路由器:
    > /opt/apigee/apigee-service/bin/apigee-serviceedge-router restart