跨後端伺服器負載平衡

本頁適用於 ApigeeApigee 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 UI 或 API 建立目標伺服器。

Cloud 控制台中的 Apigee

如要在 Cloud 控制台中使用 Apigee 建立目標伺服器,請按照下列步驟操作:

  1. 登入 Cloud 控制台中的 Apigee UI
  2. 依序選取「管理」>「環境」
  3. 選取要定義新目標伺服器的環境。
  4. 按一下窗格頂端的「目標伺服器」
  5. 按一下「+ 建立目標伺服器」
  6. 在提供的欄位中輸入名稱、主機、通訊協定和通訊埠。Protocol 的選項如下:HTTP (適用於以 REST 為基礎的目標伺服器)、gRPC - 目標 (適用於以 gRPC 為基礎的目標伺服器) 或 gRPC - 外部呼叫。如要瞭解 gRPC Proxy 支援功能,請參閱「建立 gRPC API Proxy」。

    您也可以選取「Enable SSL」(啟用 SSL)。請參閱SSL 憑證總覽

  7. 點選「建立」

傳統版 Apigee

如要使用傳統版 Apigee UI 建立目標伺服器,請按照下列步驟操作:

  1. 登入 Apigee UI
  2. 依序選取「管理」>「環境」>「TargetServers」
  3. 從「Environment」下拉式清單中,選取要定義新目標伺服器的環境。

    Apigee UI 會顯示所選環境中目前的目標伺服器清單:

    目標伺服器清單

  4. 按一下「+ 目標伺服器」,即可在所選環境中新增目標伺服器。

    系統會顯示「Add target server」對話方塊:

    「新增目標伺服器」對話方塊

  5. 按一下「已啟用」,即可啟用新的目標伺服器。 定義建立後立即生效。
  6. 在提供的欄位中輸入名稱、主機、通訊協定和通訊埠。「Protocol」選項為 HTTPGRPC

    您可以視需要選取「SSL」SSL核取方塊。如要進一步瞭解這些欄位,請參閱「TargetServers」(4MV4D 影片)。

  7. 按一下「新增」

    Apigee 會建立新的目標伺服器定義。

  8. 建立新的目標伺服器後,您可以編輯 API Proxy,並變更 <HTTPTargetConnection> 元素,以便參照新的定義。

Apigee API

以下各節提供使用 Apigee API 建立及列出目標伺服器的範例。

詳情請參閱 TargetServers API

使用 API 在環境中建立目標伺服器

如要建立名為 target1 的目標伺服器,並連線至 1.mybackendservice.com80 通訊埠,請使用下列 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",
  }'
 

其中 $TOKEN 會設為您的 OAuth 2.0 存取權憑證,如取得 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 Proxy 現可使用兩個目標伺服器。如要跨這些目標伺服器負載平衡流量,您必須在 API Proxy 的目標端點中設定 HTTP 連線,以便使用目標伺服器。

設定目標端點,以便跨指定目標伺服器進行負載平衡

有了兩個可用的目標伺服器,您可以修改目標端點的 <HTTPTargetConnection> 元素,以名稱參照這兩個目標伺服器:

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

上述設定是最基本的負載平衡設定。負載平衡器支援三種負載平衡演算法:RoundRobinWeightedLeastConnections。輪替是預設演算法。由於上述設定中未指定演算法,因此從 API Proxy 傳送至後端伺服器的傳出要求會在 target1target2 之間交替,一對一。

<Path> 元素會為所有目標伺服器的目標端點 URI 建立 basepath。只有在使用 <LoadBalancer> 時才會使用。否則系統會忽略。在上例中,傳送至 target1 的要求會是 http://target1/test,其他目標伺服器也是如此。

如需更多資訊,請參閱 TargetEndpoint

設定負載平衡器選項

您可以按照下文所述,在負載平衡器和目標伺服器層級設定負載平衡和復原選項,藉此調整可用性。

演算法

設定 <LoadBalancer> 使用的演算法。可用的演算法為 RoundRobinWeightedLeastConnections,每個演算法都會在下方說明。

循環制

預設演算法輪替,會依照目標端點 HTTP 連線中列出的順序,將要求轉送至每個目標伺服器。例如:

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

加權

您可以使用加權負載平衡演算法,為目標伺服器設定成比例的流量負載。權重 LoadBalancer 會根據各目標伺服器的權重,將要求分配給目標伺服器。因此,加權演算法要求您為每個目標伺服器設定 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 Proxy 傳送至目標伺服器的失敗要求數量上限,這會導致要求重新導向至其他目標伺服器。

回應失敗表示 Apigee 未收到目標伺服器的任何回應。在這種情況下,失敗計數器會增加 1。

不過,如果 Apigee 確實收到目標的回應,即使回應是 HTTP 錯誤 (例如 404500),也視為來自目標伺服器的回應,並且重設失敗計數器。為確保錯誤的 HTTP 回應 (例如 500) 也會增加失敗計數器,以便盡快將不健康的伺服器從負載平衡輪替中移除,您可以將 <ServerUnhealthyResponse> 元素和 <ResponseCode> 子項元素新增至負載平衡器設定。Apigee 也會將這些代碼的回應計為失敗。

在以下範例中,target1 會在五次要求失敗後從輪替中移除,包括 404 和目標伺服器的部分 5XX 回應。

<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 計數。

另請注意,每個目標伺服器的執行失敗次數會依負載平衡器個別維護。舉例來說,假設 Proxy 有兩個目標端點,每個端點都有一個負載平衡器,且兩個負載平衡器都已設定為使用相同的目標伺服器組合。在這種情況下,來自一個目標端點的失敗次數只會計入對應的負載平衡器。不會影響其他目標端點的輪替。

或者,如果您設定的 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>

上述設定會在 target1target2 之間實施循環負載平衡,直到 target1target2 都無法使用為止。如果 target1target2 無法使用,所有流量都會路由至 target3

如果備用伺服器的健康狀態不佳,Apigee 就不會將流量轉送至該伺服器。相反地,API 呼叫會傳回 503「服務暫時無法使用」錯誤。

路徑

Path 定義 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"
    }
  }'

健康狀態監控功能

透過健康狀態監控功能,您可以主動輪詢目標伺服器設定中定義的後端服務網址,以改善負載平衡設定。啟用健康狀態監控功能後,無法連線或傳回錯誤回應的目標伺服器會標示為不健康。當健康監控器判定目標伺服器處於活動狀態時,就會自動將失敗的目標伺服器重新納入輪替。不需要重新部署 Proxy。

健康狀態監控器會充當簡易的用戶端,透過 TCP 或 HTTP 叫用後端服務:

  • TCP 用戶端只需確保可以開啟 Socket。
  • 您可以設定 HTTP 用戶端,將有效的 HTTP 要求提交至後端服務。您可以定義 HTTP GETPUTPOSTDELETE 作業。HTTP 監控器呼叫的回應必須符合 <SuccessResponse> 區塊中設定的設定。

成功和失敗

啟用健康狀態監控功能後,Apigee 就會開始將健康狀態檢查傳送至目標伺服器。健康狀態檢查是傳送至目標伺服器的要求,用於判斷目標伺服器是否處於正常狀態。

健康狀態檢查可能會有以下兩種結果:

  • 成功:如果健康狀態檢查成功,系統會將目標伺服器視為健康狀態良好。這通常是下列一或多項原因造成的結果:
    • 目標伺服器會接受連線至指定通訊埠的新連線,回應該通訊埠上的要求,然後在指定時間範圍內關閉通訊埠。目標伺服器的回應包含 Connection: close
    • 目標伺服器會以 200 (OK) 或其他您認為可接受的 HTTP 狀態碼回應健康檢查要求。
    • 目標伺服器會以符合預期的訊息主體回應健康狀態檢查要求。

    當 Apigee 判斷伺服器處於正常狀態時,Apigee 會繼續或恢復傳送要求。

  • 失敗:目標伺服器可能會因檢查類型不同,以不同方式失敗健康狀態檢查。當目標伺服器發生下列情況時,系統會記錄失敗:
    • 拒絕 Apigee 連線至健康狀態檢查端口。
    • 未在指定時間內回應健康狀態檢查要求。
    • 傳回非預期的 HTTP 狀態碼。
    • 回覆的郵件內文與預期的郵件內文不符。

    當目標伺服器未通過健康狀態檢查時,Apigee 會增加該伺服器的失敗次數。如果該伺服器的失敗次數達到或超過預先定義的門檻 (<MaxFailures>),Apigee 就會停止傳送要求給該伺服器。

啟用健康監控器

如要為 API Proxy 建立健康監控器,請將 <HealthMonitor> 元素新增至 Proxy 的目標端點 <HTTPTargetConnection 元素設定。

您無法在使用者介面中建立健康監控器。您可以建立 Proxy 設定,並以 ZIP 檔案格式上傳至 Apigee。Proxy 設定是 API Proxy 所有層面的結構化說明。代理程設定包含預先定義目錄結構中的 XML 檔案。詳情請參閱「API Proxy 設定參考資料」。

<HealthMonitor> 設定元素

下表說明 <HealthMonitor> 設定元素:

名稱 說明 預設 是否必要
IsEnabled 啟用或停用健康狀態監控功能的布林值。 false
IntervalInSec 每次輪詢 TCP 或 HTTP 要求之間的時間間隔 (以秒為單位)。 0
HTTPMonitorTCPMonitor 定義用於輪詢目標伺服器的 TCP 或 HTTP 用戶端。 不適用

除了這些元素之外,啟用健康監控功能時,您必須將 <TargetEndpoint> 元素的 <HTTPTargetConnection> 區塊中的 <MaxFailures> 元素設為大於 0 的值。<MaxFailures> 可用於指定從 API Proxy 傳送至目標伺服器的失敗要求數量上限,這項限制會在要求重新導向至其他目標伺服器之前生效。

預設情況下,<MaxFailures> 為 0,表示 Apigee 不會採取任何修正動作。設定健康監控器時,請務必將 <MaxFailures> 設為非零值。

使用 TCP 監控器的健康監控器

以下設定中所述的健康狀態監控器範例會使用 TCP 監控器,每五秒就開啟一次通訊埠 80 的連線,以便輪詢每個目標伺服器。(Port 為選填欄位。如果未指定,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 通訊埠連線的時間,此時連線必須建立才能視為成功。如果在指定的間隔內無法連線,就會計為失敗,並增加負載平衡器針對目標伺服器的失敗次數。 0
Port (選用步驟) 用來建立 TCP 連線的通訊埠。如果未指定,TCP 監控通訊埠就是目標伺服器通訊埠。 0

使用 HTTP 監控器的健康狀態監控器

下列設定中所述的健康狀態監控器範例使用 HTTP 監控器,每五秒就向後端服務提交一次 GET 要求,並在要求訊息中加入 HTTP 基本授權標頭。

在這個健康監控器設定範例中:

  • 後端服務的預期回應是 HTTP 回應碼 200
  • 自訂 HTTP 基本授權標頭 ImOK 的預期值為 YourOK
  • <UseTargetServerSSLInfo> 元素設為 true,以便使用目標伺服器 <SSLInfo> 區塊中的 SSL 參數。

在這種情況下,系統會將預期的回應代碼和標頭值與後端服務的實際回應進行比較。如果回應不相符,負載平衡器設定會將要求視為失敗。

根據預設,健康狀態監控器無法存取目標伺服器的金鑰庫、信任庫或其他 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 與 HTTP 服務的 TCP 連線握手動作必須完成的時間 (以秒為單位),才算成功。如果無法在指定的間隔內連線,就會計為失敗,並增加 LoadBalancer 針對目標伺服器的失敗次數。

0
SocketReadTimeoutInSec 資料必須從 HTTP 服務讀取的時間 (以秒為單位),才算成功。如果在指定的間隔內讀取失敗,就會計為失敗,並增加 LoadBalancer 針對目標伺服器的失敗計數。

0
Port 用於建立後端服務 HTTP 連線的通訊埠。 目標伺服器通訊埠
Verb 用於後端服務的每個 HTTP 輪詢要求的 HTTP 動詞。 不適用
Path 附加至目標伺服器中定義的網址的路徑。使用 Path 元素,在 HTTP 服務上設定「輪詢端點」。請注意,Path 元素不支援變數。 不適用
UseTargetServerSSLInfo UseTargetServerSSLInfo 為 true 時,健康監控器對目標伺服器提出要求時,會使用目標伺服器 SSLInfo ("sSLInfo") 區塊中的 SSL 參數。否則,健康狀態監控器將無法使用 SSL 參數,例如通訊協定、金鑰庫、信任庫等。 false

IncludeHealthCheckIdHeader

可讓您追蹤上游系統的健康檢查要求。IncludeHealthCheckIdHeader 會採用布林值,並預設為 false。如果將其設為 true,則會出現名為 X-Apigee-Healthcheck-IdHeader,並將其插入健康狀態檢查要求。標頭的值會動態指派,並採用 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。您可以定義多個 Header 元素。 不適用
IsSSL 如果為 true,則指定使用 HTTPS 傳送健康監控要求。
TrustAllSSL 指定 HTTP 監控器檢查作業是否會自動信任所有 SSL 憑證。

<HTTPMonitor>/<SuccessResponse> 設定元素

(選用) 比對選項,適用於由輪詢後端服務產生的 HTTP 回應訊息。不相符的回應會使失敗計數增加 1。

名稱 說明 預設 是否必要
ResponseCode 預期從輪詢的目標伺服器收到的 HTTP 回應碼。如果程式碼與指定的程式碼不同,就會導致失敗,且會針對已輪詢的後端服務遞增計數。您可以定義多個 ResponseCode 元素。 不適用
Header 從輪詢的後端服務收到的一或多個 HTTP 標頭和值。回應中的任何 HTTP 標頭或值,如果與指定的標頭或值不同,就會導致失敗,且已輪詢的目標伺服器計數會增加 1。您可以定義多個 Header 元素。 不適用