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

Edge for Private Cloud 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 error
  3. 確認屬性檔案的擁有者是「apigee」使用者:
    > chown apigee:apigee /opt/apigee/customer/application/router.properties
  4. 重新啟動路由器:
    > /opt/apigee/apigee-service/bin/apigee-service edge-router restart

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

Edge 路由器在嘗試存取訊息處理器,以透過 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 /opt/apigee/customer/application/router.properties
  4. 重新啟動路由器:
    > /opt/apigee/apigee-service/bin/apigee-service edge-router restart