在 Apigee Hybrid 中設定目標逾時限制

總覽

從 1.14.2 版開始,Apigee Hybrid 支援最長 10 分鐘的目標逾時限制。

Apigee Hybrid 預設支援最長 55000 毫秒的目標 io.timeout.millis。請參閱目標端點傳輸規格

如要在混合式安裝環境中啟用環境,以提高多個緩慢目標端點的目標逾時限制,請對執行階段設定進行下列變更:

  • 設定 Istio 與 Message Processor(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. 您一次只能升級一個環境群組 (虛擬主機)。使用 --set envgroup=ENV_GROUP_NAME 指定環境群組。針對 overrides.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 監控程式從控制層提取環境群組相關詳細資料,ARC 就會在內部建立 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
    

設定個別環境,變更目標逾時限制

如果只有安裝中的一或多個環境有目標端點速度緩慢的 Proxy,您可以個別設定環境,變更目標逾時限制。這樣可避免影響其他環境。

如要設定個別環境來變更目標逾時限制,可以使用 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 說明文件中的「Three big concepts 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