設定路由器以重試與訊息處理器的連線

私有雲的邊緣 4.17.05 版

在健康狀態檢查期間無法使用訊息處理器時,設定路由器回應

路由器每五秒就會向訊息處理器進行健康狀態檢查,藉此判斷訊息處理器是否能處理要求。如果訊息處理器停止運作,路由器會自動將要求轉送至其他訊息處理器。

您可以設定路由器上的 conf_load_balancing_load.balancing.driver.nginx.server.retry 屬性,以設定路由器在訊息處理器停止運作時的回應方式。該屬性會採用以空格分隔的一組值,包括:

  • off:停用重試,路由器會在要求時傳回錯誤代碼。
  • http_599:(預設) 如果路由器收到訊息處理器傳回的 HTTP 599 回應,則路由器會將要求轉送至下一個訊息處理器。

    HTTP 599 是訊息處理者在關機時產生的特殊回應代碼。訊息處理者會嘗試完成所有現有的要求,但對於任何新要求,訊息處理者都會以 HTTP 599 回應,通知路由器在下一個訊息處理器上重試要求。
  • error:如果在與訊息處理器建立連線、傳送要求給其要求或讀取其回應標頭時發生錯誤,路由器會將要求轉送給下一個訊息處理器。
  • timeout:如果在與訊息處理器建立連線、傳遞要求,或從訊息處理器讀取回應標頭時發生逾時,路由器會將要求轉送給下一個訊息處理器。
  • 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_balancing_load.balancing.driver.nginx.server.retry=http_599 錯誤
  3. 請確認您的屬性檔案為「apigee」使用者擁有:
    > chown apigee:apigee:apigee /opt/apigee/customer/application/router.properties
  4. 重新啟動路由器:
    > /opt/apigee/apigee-service/bin/apigee-service Edge-router restart

設定路由器在透過 API Proxy 要求存取訊息處理器時逾時

在嘗試透過 API Proxy 處理要求的過程中,邊緣路由器已預設逾時 57 秒。逾時後,路由器會嘗試連線至其他訊息處理器 (如果有的話)。否則會傳回錯誤。

您可以利用下列兩項屬性控管逾時:

  • conf_load_balancing_load.balancing.driver.proxy.read.timeout 會指定單一訊息處理器的等待時間 (以秒為單位)。預設值為 57 秒。
  • conf_load_balancing_load.balancing.driver.nginx.upstream_next_timeout 會指定在 Edge 安裝具有多個訊息處理器時,所有訊息處理器的總等待時間 (以秒為單位)。其預設值為 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
    conf_load_balancing_load.balancing.driver.nginx.upstream_next_timeout=240
  3. 請確認您的屬性檔案為「apigee」使用者擁有:
    > chown apigee:apigee:apigee /opt/apigee/customer/application/router.properties
  4. 重新啟動路由器:
    > /opt/apigee/apigee-service/bin/apigee-service Edge-router restart