在 Apigee Hybrid 中配置目标超时限制

概览

Apigee Hybrid 支持将目标 io.timeout.millis 设置为默认值(最长 55,000 毫秒)。请参阅目标端点传输规范

如需提高慢速目标端点的目标超时限制,请对运行时配置进行以下更改:

  • 配置 Istio 和消息处理器(MP) 之间的 virtualhosts[].requestTimeout。请参阅虚拟主机
  • 配置 MP 与目标之间的 conf_http_HTTPTransport.io.timeout.millis

您可以为单个环境或安装中的所有环境配置这些设置。

配置虚拟主机以更改请求超时限制

requestTimeout 是在虚拟主机上设置的、MP 处理请求的最长时间(以秒为单位)。

如需配置请求超时限制,您可以使用 virtualhosts[].requestTimeout 属性。对 overrides.yaml 文件进行以下更改:

  1. 将以下节添加到 overrides.yaml 文件:
    virtualhosts:
    - name: ENV_GROUP_NAME
      requestTimeout: 600   # Increase requestTimeout to 600 seconds
    
  2. 一次只能升级一个环境组 (virtualhost)。使用 --set envgroup=ENV_GROUP_NAME 指定环境组。对 override.yaml 文件中提到的每个环境组重复运行以下命令:

    试运行:

    helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set envgroup=ENV_GROUP_NAME \
      -f OVERRIDES_FILE \
      --dry-run=server
    

    ENV_GROUP_RELEASE_NAME 是您之前安装 apigee-virtualhost 图表时使用的名称。通常为 ENV_GROUP_NAME

    升级图表:

    helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set envgroup=ENV_GROUP_NAME \
      -f OVERRIDES_FILE
    
  3. 检查 ApigeeRoute (AR) 的状态。

    安装 virtualhosts 会创建 ApigeeRouteConfig (ARC),它会在 Apigee Watcher 从控制平面拉取环境组相关详细信息后在内部创建 ApigeeRoute (AR)。因此,请检查相应 AR 的状态是否为正在运行:

    kubectl -n APIGEE_NAMESPACE get arc
    
    NAME                                STATE   AGE
    apigee-org1-dev-egroup                       2d
    kubectl -n APIGEE_NAMESPACE get ar
    
    NAME                                        STATE     AGE
    apigee-org1-dev-egroup-cb9a8a                running   2d

配置各个环境以更改目标超时限制

如果具有缓慢目标端点的代理仅在安装中的一个或少数几个环境中,您可以单独配置这些环境以更改目标超时限制。这样可以避免对其他环境造成影响。

如需将各个环境配置为更改目标超时限制,您可以使用 envs[].components.runtime 属性。对 overrides.yaml 文件进行以下更改:

  1. 将以下节添加到 overrides.yaml 文件:
    envs:
    - name: ENV_NAME
      components.
        runtime:
          cwcAppend:
            conf_http_HTTPTransport.io.timeout.millis: 600000   # Increase io.timeout.millis to 600000 milliseconds
    
  2. 一次只能升级一个环境。升级您要更新的每个环境的 apigee-env 图表:

    试运行:

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE \
      --dry-run=server
    
    • ENV_RELEASE_NAME 是用于跟踪 apigee-env 图表的安装和升级情况的名称。此名称必须与安装中的其他 Helm 版本名称不同。 通常,这与 ENV_NAME 相同。但是,如果环境与环境组具有相同的名称,则您必须为环境和环境组使用不同的版本名称,例如 dev-env-releasedev-envgroup-release。如需详细了解 Helm 中的版本,请参阅 Helm 文档中的三大概念 class="external"
    • ENV_NAME 是您要升级的环境的名称。
    • OVERRIDES_FILE 是修改后的 overrides.yaml 文件。
  3. 升级图表:
    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE
    
  4. 通过检查相应环境的状态来验证它已启动并正在运行:

    kubectl -n APIGEE_NAMESPACE get apigeeenv
    
    NAME                          STATE       AGE   GATEWAYTYPE
    my-org-my-env-123abc          running     2d

配置所有环境以更改目标超时限制

runtime 节所做的更改将为安装中的所有环境更改目标超时限制。您可以使用 runtime 属性为各个环境替换这些设置。

  1. 将以下节添加到 overrides.yaml 文件:
    runtime:
      cwcAppend:
        conf_http_HTTPTransport.io.timeout.millis: 600000   # Increase io.timeout.millis to 600000 milliseconds
    
  2. 升级安装中每个环境的 apigee-env 图表:

    试运行:

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE \
      --dry-run=server
    

    升级图表:

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE