跨多个后端服务器进行负载均衡

本页面适用于 Apigee 和 Apigee Hybrid。

查看 Apigee Edge 文档。

Apigee 内置了在多个后端服务器实例之间对负载均衡和故障切换的支持,从而提高 API 的可用性。

目标服务器将具体的端点网址与目标端点配置分离。您可以配置一个或多个已命名的目标服务器,而不是在配置中定义具体的网址。然后,在目标端点 HTTPConnection 中按名称引用每个目标服务器。

视频

观看以下视频,详细了解如何使用目标服务器进行 API 路由和负载均衡

视频 说明
使用目标服务器实现负载均衡 跨目标服务器的负载均衡 API。
根据环境使用目标服务器路由 API 根据环境将 API 路由到其他目标服务器。

目标服务器配置简介

目标服务器配置包括名称、主机、协议和端口,还带有其他元素指示目标服务器已启用还是已停用。目标服务器还可以具有可选的 <sSLInfo> 对象。

以下代码提供了一个目标服务器配置示例:

{
  "name": "target1",
  "host": "1.mybackendservice.com",
  "protocol": "http",
  "port": "80",
  "isEnabled": "true"
}

如需详细了解 TargetServers API,请参阅 organizations.environments.targetservers。

请参阅 GitHub 上的 TargetServer 和其他实体的架构。

创建目标服务器

使用 Apigee 界面或 API 创建目标服务器,如以下各部分所述。

Cloud 控制台中的 Apigee

如需在 Cloud 控制台中使用 Apigee 创建目标服务器,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往管理 > 环境页面。

    前往环境

  2. 选择要在其中定义新目标服务器的环境。
  3. 点击窗格顶部的目标服务器。
  4. 点击 + 创建目标服务器。
  5. 在提供的字段中输入名称、主机、协议和端口。协议选项包括:HTTP(适用于基于 REST 的目标服务器),gRPC - 目标(适用于基于 gRPC 的目标服务器)或 gRPC - 外部调用。 如需了解 gRPC 代理支持,请参阅创建 gRPC API 代理。

    (可选)您可以选择启用 SSL。请参阅 SSL 证书概览。

  6. 点击创建。

经典版 Apigee

如需使用经典版 Apigee 界面创建目标服务器,请执行以下操作:

  1. 登录 Apigee 界面。
  2. 选择 管理 > 环境 > TargetServer。
  3. 从 环境 下拉列表中,选择您想要定义新目标服务器的环境。

    Apigee 界面显示所选环境中当前目标服务器的列表:

    目标服务器列表

  4. 点击添加目标服务器以将新的目标服务器添加到选定的环境中。

    此时会显示添加目标服务器对话框:

    “添加目标服务器”对话框

  5. 点击已启用以启用新的目标服务器。在创建之后立即进行定义。
  6. 在提供的字段中输入名称、主机、协议和端口。协议选项包括 HTTP 或 GRPC。

    (可选)您可以选中 SSL 复选框。如需详细了解这些字段,请参阅 TargetServers(4MV4D 视频)。

  7. 点击添加。

    Apigee 会创建新的目标服务器定义。

  8. 创建新的目标服务器后,您可以修改 API 代理并更改 <HTTPTargetConnection> 元素以引用新定义。

Apigee API

以下各部分提供了使用 Apigee API 创建和列出目标服务器的示例。

如需了解详情,请参阅 TargetServers API。

使用 API 在环境中创建目标服务器

如需创建名为 target1 的目标服务器以便通过端口 80 连接到 1.mybackendservice.com,请使用以下 API 调用:

curl "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/targetservers" \
  -X POST \
  -H "Content-Type:application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '
  {
  "name": "target1",
  "host": "1.mybackendservice.com",
  "protocol": "http",
  "port": "80",
  "isEnabled": "true",
  }'
 

按照获取 OAuth 2.0 访问令牌中的说明,将 $TOKEN 设置为您的 OAuth 2.0 访问令牌。如需了解此示例中使用的 curl 选项,请参阅使用 curl。如需了解您可以使用的环境变量,请参阅为 Apigee API 请求设置环境变量。

以下提供了一个响应示例:

{
  "host" : "1.mybackendservice.com",
  "protocol": "http",
  "isEnabled" : true,
  "name" : "target1",
  "port" : 80
}

使用以下 API 调用创建第二个目标服务器。通过定义两个目标服务器,您提供了两个可供目标端点用于负载均衡的网址:

curl "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/targetservers" \
  -X POST \
  -H "Content-Type:application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '
  {
  "name": "target2",
  "host": "2.mybackendservice.com",
  "protocol": "http",
  "port": "80",
  "isEnabled": "true",
  }'

以下提供了一个响应示例:

{
  "host" : "2.mybackendservice.com",
  "protocol": "http",
  "isEnabled" : true,
  "name" : "target2",
  "port" : 80
}

使用 API 列出环境中的目标服务器

如需列出环境中的目标服务器,请使用以下 API 调用:

curl https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/targetservers \
  -H "Authorization: Bearer $TOKEN"

以下提供了一个响应示例:

[ "target2", "target1" ]

现在,在 test 环境中部署的 API 代理可以使用两个目标服务器。为了在这些目标服务器之间实现流量负载均衡,您需要将 API 代理的目标端点中的 HTTP 连接配置为使用目标服务器。

配置目标端点以便对已命名的目标服务器进行负载均衡

现在您有两个目标服务器可用,您可以修改目标端点的 <HTTPTargetConnection> 元素以按名称引用这两个目标服务器:

<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <LoadBalancer>
      <Server name="target1" />
      <Server name="target2" />
    </LoadBalancer>
    <Path>/test</Path>
  </HTTPTargetConnection>
</TargetEndpoint>

以上配置是最基本的负载均衡配置。负载均衡器支持三种负载均衡算法:RoundRobin、Weighted 和 LeastConnections。轮询是默认算法。由于以上配置中未指定任何算法,因此从 API 代理到后端服务器的出站请求将在 target1 和 target2 两者之间交替切换。

<Path> 元素构成了所有目标服务器的目标端点 URI 的基本路径。只有在使用 <LoadBalancer> 时才能使用该元素。否则会忽略该元素。在上述示例中,到达 target1 的请求将为 http://target1/test,因此其他目标服务器的请求也会如此。

如需了解详情,请参阅 TargetEndpoint。

配置负载均衡器选项

您可以按照以下各部分所述,通过在负载均衡器和目标服务器级别配置负载均衡和故障切换选项,来调节可用性。

算法

设置 <LoadBalancer> 使用的算法。可用的算法包括 RoundRobin、Weighted 和 LeastConnections,每个算法详见下文。

轮循

默认算法(即轮循)按照服务器在目标端点 HTTP 连接中的列出顺序将请求转发给每个目标服务器。例如:

<TargetEndpoint name="default">
  <HTTPTargetConnection>
      <LoadBalancer>
        <Algorithm>RoundRobin</Algorithm>
        <Server name="target1" />
        <Server name="target2" />
      </LoadBalancer>
      <Path>/test</Path>
  </HTTPTargetConnection>
</TargetEndpoint>

加权

通过加权负载均衡算法,您可以为目标服务器配置成比例的流量负载。加权负载均衡器按照与每个目标服务器的权重的直接比例向目标服务器分配请求。因此,加权算法要求您为每个目标服务器设置 weight 属性。例如:

<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <LoadBalancer>
      <Algorithm>Weighted</Algorithm>
      <Server name="target1">
        <Weight>1</Weight>
      </Server>
      <Server name="target2">
        <Weight>2</Weight>
      </Server>
    </LoadBalancer>
    <Path>/test</Path>
  </HTTPTargetConnection>
</TargetEndpoint>

在此示例中,每次向 target1 路由一个请求时,都将向 target2 路由两个请求。

最少连接

配置成使用最少连接算法的负载均衡器可将出站请求路由到打开的 HTTP 连接数量最少的目标服务器。例如:

<TargetEndpoint name="default">
  <HTTPTargetConnection>
      <LoadBalancer>
        <Algorithm>LeastConnections</Algorithm>
        <Server name="target1" />
        <Server name="target2" />
      </LoadBalancer>
  </HTTPTargetConnection>
  <Path>/test</Path>
</TargetEndpoint>

失败次数上限

从 API 代理发送到目标服务器(它将请求重定向至另一个目标服务器)的失败请求数量上限。

响应失败意味着 Apigee 不会收到目标服务器的任何响应。当出现这种情况时,失败计数器会加 1。

但是,当 Apigee 收到来自目标的响应时,即使响应为 HTTP 错误(例如 404 或 500),也算作来自目标服务器的响应,并且失败计数器会被重置。为了确保失败计数器在错误的 HTTP 响应(例如 500)下也加 1,以便尽快让健康状况不佳的服务器停止进行负载均衡轮替,您可以将带有 <ResponseCode> 子元素的 <ServerUnhealthyResponse> 元素添加到负载均衡器配置中。此外,Apigee 也会将包含这些代码的响应视为失败。

在以下示例中,在失败的五个请求(包括 404 和来自目标服务器的一些 5XX 响应)后,target1 会从轮替中移除。

<TargetEndpoint name="default">
  <HTTPTargetConnection>
      <LoadBalancer>
        <Algorithm>RoundRobin</Algorithm>
        <Server name="target1" />
        <Server name="target2" />
        <MaxFailures>5</MaxFailures>
        <ServerUnhealthyResponse>
            <ResponseCode>404</ResponseCode>
            <ResponseCode>500</ResponseCode>
            <ResponseCode>502</ResponseCode>
            <ResponseCode>503</ResponseCode>
        </ServerUnhealthyResponse>
      </LoadBalancer>
      <Path>/test</Path>
  </HTTPTargetConnection>
</TargetEndpoint>

MaxFailures 默认值为 0。 这意味着 Apigee 总是会尝试针对每个请求连接到目标,且绝不会从轮替中移除目标服务器。

建议将 MaxFailures > 0 与健康状况监控器搭配使用。如果将 MaxFailures 配置为大于 0,则当目标失败的次数达到您指定的次数时,将从轮替中移除目标服务器。 如果配置了健康状况监控器,根据该健康状况监控器的配置,Apigee 会在目标再次正常运行后,自动将目标服务器重新纳入轮替中。如需了解详情,请参阅健康监控。

请注意,常规 API 调用和由健康监控器发起的调用都会计入 MaxFailures 计数。

另请注意,每个目标服务器的运行失败次数是按负载均衡器维护的。例如,假设某个代理有两个目标端点,每个端点都有一个负载均衡器,并且这两个负载均衡器都配置为使用同一组目标服务器。在这种情况下,来自一个目标端点的失败仅计入相应负载均衡器。它们不会影响其他目标端点的轮替。

或者,如果您将 MaxFailures 配置为大于 0,并且未配置健康状况监控器,则 Apigee 会在检测到第一次失败时自动让目标服务器停止轮替。Apigee 将每五分钟检查一次目标服务器的健康状况,并在目标服务器正常响应后将其恢复轮替。

重试

如果启用了重试功能,则每当响应失败(发生 I/O 错误或 HTTP 超时)或收到的响应与 <ServerUnhealthyResponse> 设置的值匹配时,系统就会重试请求。如需详细了解如何设置 <ServerUnhealthyResponse>,请参阅上面的失败次数上限。

默认情况下,<RetryEnabled> 设置为 true。设置为 false 可停用重试功能。例如:

<RetryEnabled>false</RetryEnabled>

IsFallback

只能将一个目标服务器设置为后备服务器。 在负载均衡器将所有其他目标服务器从轮替中移除之前,负载均衡器不会使用后备服务器。发生这种情况时,所有流量都会路由到后备服务器,直到其他某个目标服务器再次报告健康状况良好并返回到轮替中。例如:

<TargetEndpoint name="default">
  <HTTPTargetConnection>
      <LoadBalancer>
        <Algorithm>RoundRobin</Algorithm>
        <Server name="target1" />
        <Server name="target2" />
        <Server name="target3">
          <IsFallback>true</IsFallback>
        </Server>
      </LoadBalancer>
      <Path>/test</Path>
  </HTTPTargetConnection>
</TargetEndpoint>

以上配置会导致 target1 和 target2 之间进行轮询负载均衡,直到 target1 和 target2 都不可用。当 target1 和 target2 均不可用时,所有流量都会路由到 target3。

如果后备服务器健康状况不佳,Apigee 不会将流量路由到该服务器。API 调用会返回 503“服务暂时不可用”错误。

路径

路径定义一个 URI 片段,该片段将会附加到目标服务器向后端服务器发出的所有请求。

此元素接受字面量字符串路径或消息模板。借助消息模板,您可以在运行时执行变量字符串替换操作。例如,在以下目标端点定义中,{mypath} 的值用于路径:

<HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
    </SSLInfo>
    <LoadBalancer>
      <Server name="testserver"/>
    </LoadBalancer>
    <Path>{mypath}</Path>
</HTTPTargetConnection>

配置目标服务器以用于 TLS/SSL

如果您使用目标服务器定义后端服务,且后端服务要求连接使用 HTTPS 协议,则您必须在目标服务器定义中启用 TLS/SSL。您必须这样做,因为 host 标记不支持指定连接协议。

配置单向 TLS/SSL

使用以下配置可定义具有单向 TLS/SSL 的目标服务器。在此示例中,Apigee 向后端服务发出 HTTPS 请求:

{
  "name": "target1",
  "host": "mocktarget.apigee.net",
  "protocol": "http",
  "port": "443",
  "isEnabled": "true",
  "sSLInfo": {
    "enabled": "true"
  }
}

配置严格 SSL 强制执行

如需在目标服务器定义中指定严格的 SSL 强制执行,请在 sSLInfo 块中将 enforce 设置为 true,如以下示例所示:

  {
    "name": "target1",
    "host": "mocktarget.apigee.net",
    "protocol": "http",
    "port": "443",
    "isEnabled": "true",
    "sSLInfo": {
      "enabled": "true",
      "enforce": "true"
    }
  }
  

配置双向 TLS/SSL

如果后端服务需要双向(或相互)TLS/SSL,您可以使用与目标端点相同的 TLS/SSL 配置设置来配置目标服务器:

{
  "name": "TargetServer 1",
  "host": "www.example.com",
  "protocol": "http",
  "port": "443",
  "isEnabled": "true",
  "sSLInfo": {
    "enabled": "true",
    "clientAuthEnabled": "true",
    "keyStore": "keystore-name",
    "keyAlias": "keystore-alias",
    "trustStore": "truststore-name",
    "ignoreValidationErrors": "false",
    "ciphers": []
  }
}

使用 API 配置严格 SSL

如需使用 API 调用创建具有严格 SSL 强制执行的目标服务器,请执行以下操作:

curl "https://apigee.googleapis.com/v1/organizations/$ORG/environments/$ENV/targetservers" \
  -X POST \
  -H "Content-Type:application/json"  \
  -H "Authorization: Bearer $TOKEN" \
  -d '
  {
    "name": "TargetServer 1",
    "host": "www.example.com",
    "protocol": "http",
    "port": 443,
    "isEnabled": true,
    "sSLInfo":
    {
      "enabled":true,
      "enforce":true,
      "clientAuthEnabled":true,
      "keyStore":"keystore-name",
      "keyAlias":"keystore-alias",
      "ciphers":[],
      "protocols":[],
      "clientAuthEnabled":true,
      "ignoreValidationErrors":false,
      "trustStore":"truststore-name"
    }
  }'

运行状况监控

借助健康状况监控,您可以主动轮询目标服务器配置中定义的后端服务网址,以增强负载均衡配置。启用健康状况监控功能后,无法访问或返回错误响应的目标服务器会被标记为健康状况不佳。当健康状况监控器确定目标服务器处于活动状态时,发生故障的目标服务器将会自动重新置于轮替中。无需重新部署代理。

健康状况监控器可充当简单的客户端,通过 TCP 或 HTTP 调用后端服务:

  • TCP 客户端仅确保能够打开套接字。
  • 您可将 HTTP 客户端配置为向后端服务提交有效的 HTTP 请求。您可以定义 HTTP GET、PUT、POST 或 DELETE 操作。HTTP 监视器调用的响应必须与 <SuccessResponse> 块中配置的设置相匹配。

成功和失败

启用健康状况监控功能后,Apigee 会开始向目标服务器发送健康检查。健康检查是发送到目标服务器的请求,用于确定目标服务器健康状况是否良好。

健康检查可能产生两种结果:

  • 成功:成功进行健康检查后,目标服务器被视为健康状况良好。通常,以下一项或多项原因导致此结果:
    • 目标服务器接受与指定端口的新连接,响应该端口上的请求,然后在指定时间范围内关闭端口。目标服务器返回的响应包含 Connection: close
    • 目标服务器将响应健康检查请求,返回状态代码 200 (OK) 或您认为可以接受的其他 HTTP 状态代码。
    • 目标服务器将响应健康检查请求,返回与预期消息正文相匹配的消息正文。

    当 Apigee 认为服务器运行状况良好时,Apigee 会继续向服务器发送请求。

  • 失败:目标服务器因各种原因而未通过健康检查,具体取决于检查类型。当目标服务器出现以下情况时,系统会检测到失败:
    • 拒绝从 Apigee 连接到健康检查端口。
    • 在指定时间段内未响应健康检查请求。
    • 返回意外的 HTTP 状态代码。
    • 回复消息正文与预期消息正文不匹配。

    当目标服务器未通过健康检查时,Apigee 会将服务器的失败计数加 1。如果该服务器的失败次数达到或超过预定义的阈值 (<MaxFailures>),则 Apigee 会停止向该服务器发送请求。

启用健康状况监控器

如需为 API 代理创建健康状况监控器,请将 <HealthMonitor> 元素添加到代理的目标端点 <HTTPTargetConnection 元素配置。

无法在界面中创建健康状况监控器。但是您可以创建一个代理配置,并将其作为 ZIP 文件上传到 Apigee。代理配置是 API 代理各个方面的结构化描述。代理配置包括预定义目录结构中的 XML 文件。如需了解详情,请参阅 API 代理配置参考文档。

<HealthMonitor> 配置元素

下表介绍了 <HealthMonitor> 配置元素:

名称 说明 默认值 是否必需?
IsEnabled 启用或停用健康状况监控器的布尔值。 false 否
IntervalInSec 每个轮询 TCP 或 HTTP 请求之间的时间间隔(以秒为单位)。 0 是
HTTPMonitor 或 TCPMonitor 用于轮询目标服务器的 TCP 或 HTTP 客户端的定义。 不适用 是

除了这些元素之外,启用健康状况监控器要求您将 <TargetEndpoint> 元素的 <HTTPTargetConnection> 块中的 <MaxFailures> 元素设置为大于 0 的值。<MaxFailures> 用于指定在将请求重定向到另一个目标服务器之前,可以发生的从 API 代理发送到目标服务器的失败请求数量上限。

默认情况下,<MaxFailures> 为 0,表示 Apigee 不执行任何纠正操作。配置健康状况监控器时,请确保将 <MaxFailures> 设置为非零值。

使用 TCP 监控器的健康状况监控器

以下配置中介绍的示例健康状况监控器通过每 5 秒在端口 80 上打开一个连接,来使用 TCP 监控器轮询每个目标服务器。(端口为可选项。如果未指定,则 TCP 监控器端口为目标服务器端口。)

在此示例健康状况监控器配置中:

  • 如果连接失败或用时超过 10 秒,则该目标服务器的失败计数将会加 1。
  • 如果连接成功,则目标服务器的失败计数将重置为 0。

您可以将健康状况监控器添加为目标端点的 <HTTPTargetConnection> 元素的子元素,如下所示:

<TargetEndpoint name="default">
  <HTTPTargetConnection>
      <LoadBalancer>
        <Algorithm>RoundRobin</Algorithm>
        <Server name="target1" />
        <Server name="target2" />
        <MaxFailures>5</MaxFailures>
      </LoadBalancer>
      <Path>/test</Path>
      <HealthMonitor>
        <IsEnabled>true</IsEnabled>
        <IntervalInSec>5</IntervalInSec>
        <TCPMonitor>
            <ConnectTimeoutInSec>10</ConnectTimeoutInSec>
            <Port>80</Port>
        </TCPMonitor>
      </HealthMonitor>
  </HTTPTargetConnection>
</TargetEndpoint>

<TCPMonitor> 配置元素

下表介绍了 <TCPMonitor> 配置元素:

名称 说明 默认值 是否必需?
ConnectTimeoutInSec 必须建立与 TCP 端口的连接才算成功的时间。如果未能按指定的时间间隔连接,则计为失败,目标服务器的负载均衡器失败次数加 1。 0 是
Port 可选。将用来建立 TCP 连接的端口。如果未指定,则 TCP 监控器端口为目标服务器端口。 0 否

使用 HTTP 监控器的健康状况监控器

以下配置中描述的示例健康状况监控器使用 HTTP 监控器,该监控器每 5 秒向后端服务提交一次 GET 请求,并向请求消息添加 HTTP Basic Authorization 标头。

在此示例健康状况监控器配置中:

  • 后端服务的预期响应为 HTTP 响应代码 200。
  • 自定义 HTTP Basic Authorization 标头 ImOK 的预期值为 YourOK。
  • <UseTargetServerSSLInfo> 元素设置为 true 以使用来自目标服务器的 <SSLInfo> 块的 SSL 参数。

使用此配置时,预期响应代码和标头值将与来自后端服务的实际响应进行比较。如果响应不匹配,则负载均衡器配置将请求视为失败。

默认情况下,健康状况监控器无法从其目标服务器访问密钥库、truststore 或其他 SSL 参数。如需为您的健康状况监控器启用对这些参数的访问权限(例如用于支持双向 TLS),请在 <Request> 块中添加 <UseTargetServerSSLInfo>true</UseTargetServerSSLInfo>。

    <TargetEndpoint name="default">
      <HTTPTargetConnection>
        <LoadBalancer>
          <Algorithm>RoundRobin</Algorithm>
          <Server name="target1" />
          <Server name="target2" />
          <MaxFailures>5</MaxFailures>
        </LoadBalancer>
        <Path>/test</Path>
        <HealthMonitor>
          <IsEnabled>true</IsEnabled>
          <IntervalInSec>5</IntervalInSec>
          <HTTPMonitor>
            <Request>
              <UseTargetServerSSLInfo>true</UseTargetServerSSLInfo>
              <ConnectTimeoutInSec>10</ConnectTimeoutInSec>
              <SocketReadTimeoutInSec>30</SocketReadTimeoutInSec>
              <Port>80</Port>
              <Verb>GET</Verb>
              <Path>/healthcheck</Path>
              <Header name="Authorization">Basic 12e98yfw87etf</Header>
              <IncludeHealthCheckIdHeader>true</IncludeHealthCheckIdHeader>
            </Request>
            <SuccessResponse>
              <ResponseCode>200</ResponseCode>
              <Header name="ImOK">YourOK</Header>
            </SuccessResponse>
          </HTTPMonitor>
        </HealthMonitor>
      </HTTPTargetConnection>
    </TargetEndpoint>
  

<HTTPMonitor> 配置元素

下表介绍了顶级 <HTTPMonitor> 配置元素:

名称 说明 默认值 是否必需?
Request 由健康状况监控器发送到轮替中的目标服务器的出站请求消息。 不适用 是
SuccessResponse (可选)轮询的后端服务生成的入站 HTTP 响应消息的匹配选项。 不适用 否

<HTTPMonitor>/<Request> 配置元素

由健康状况监控器发送到轮替中的目标服务器的出站请求消息的配置选项。请注意,<Request> 是必需元素。

名称 说明 默认值 是否必需?
ConnectTimeoutInSec 必须通过 TCP 连接完成与 HTTP 服务的握手才算成功的时间(秒)。如果未能按指定的时间间隔连接,则计为失败,目标服务器的负载均衡器失败次数加 1。

0 否
SocketReadTimeoutInSec 必须从 HTTP 服务读取数据才算成功的时间(秒)。如果未能按指定的时间间隔读取,则计为失败,目标服务器的负载均衡器失败次数加 1。

0 否
Port 用来与后端服务建立 HTTP 连接的端口。 目标服务器端口 否
Verb 用于向后端服务发送每个轮询 HTTP 请求的 HTTP 动词。 不适用 否
Path 附加到目标服务器中定义的网址的路径。使用 Path 元素在 HTTP 服务上配置“轮询端点”。请注意,Path 元素不支持变量。 不适用 否
UseTargetServerSSLInfo 当 UseTargetServerSSLInfo 为 true 时,对目标服务器的健康状况监控请求将使用来自目标服务器的 SSLInfo(“sSLInfo”)块的 SSL 参数。否则,健康状况监控器将无法使用 SSL 参数,如协议、密钥库、truststore 等。 false 否

IncludeHealthCheckIdHeader

允许您跟踪上游系统上的健康检查请求。IncludeHealthCheckIdHeader 采用布尔值,默认值为 false。如果将其设置为 true,则有一个名为 X-Apigee-Healthcheck-Id 的 Header 会被注入到健康检查请求。该标头的值是动态分配的,格式为 ORG/ENV/SERVER_UUID/N,其中 ORG 是组织名称,ENV 是环境名称,SERVER_UUID 是用于标识 MP 的唯一 ID,N 是经过的毫秒数(自 1970 年 1 月 1 日算起)。

生成的请求标头示例:

X-Apigee-Healthcheck-Id: orgname/envname/E8C4D2EE-3A69-428A-8616-030ABDE864E0/1586802968123
false 否
Payload 为每个轮询 HTTP 请求生成的 HTTP 正文。请注意,GET 请求不需要此元素。 不适用 否
Header 应从轮询的后端服务接收的一个或多个 HTTP 标头和值。如果响应中的任何 HTTP 标头或值与指定值不同,都将导致失败,并且轮询目标服务器的计数将增加 1。您可以定义多个标头元素。 不适用 否
IsSSL 如果为 true,则指定使用 HTTPS 发送健康状况监控器请求。 False 否
TrustAllSSL 指定 HTTP 监控器检查是否会自动信任所有 SSL 证书。 False 否

<HTTPMonitor>/<SuccessResponse> 配置元素

(可选)轮询的后端服务生成的入站 HTTP 响应消息的匹配选项。如果响应不匹配,则失败次数会加 1。

名称 说明 默认值 是否必需?
ResponseCode 应从轮询的目标服务器接收的 HTTP 响应代码。代码与指定的代码不同会导致失败,且轮询后端服务的计数将加 1。您可以定义多个 ResponseCode 元素。 不适用 否
Header 应从轮询的后端服务接收的一个或多个 HTTP 标头和值。如果响应中的任何 HTTP 标头或值与指定值不同,都将导致失败,并且轮询目标服务器的计数将增加 1。您可以定义多个标头元素。 不适用 否