排解 Airflow 網路伺服器問題

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer„�

本頁面提供常見 Airflow 網頁伺服器問題的疑難排解步驟和資訊。

Airflow 網路伺服器是 Airflow 元件,提供管理 Airflow DAG 和工作的使用者介面。本頁說明如何排解各種問題,包括無法存取環境的 Airflow 網路伺服器,或是 Airflow 記錄中顯示與網路伺服器相關的警告。

啟用網路存取權控管後,無法存取 Airflow UI

症狀:設定網路伺服器存取權控管後,無法存取 Airflow 使用者介面。通常這種情況下顯示的錯誤代碼是 403。

問題資訊:Cloud Composer 支援網路伺服器網路存取權控管,可讓您指定允許連線至網路伺服器的 IP 範圍。

存取 Airflow UI 時發生問題通常會導致 403 錯誤。如要檢查錯誤是否與網路伺服器網路存取權控管有關,請按照下列步驟操作:

  1. 在環境清單中,按一下環境名稱。 「環境詳細資料」頁面隨即開啟。
  2. 前往「環境設定」分頁。
  3. 檢查「網路伺服器存取控管」項目是否設為「所有 IP 位址都有存取權 (預設)」
  4. 如果設定的值不是「所有 IP 位址都能存取 (預設)」,則會啟用網路存取權控管,且 Airflow UI 的可見度會限制在提供的 IPv4 和 IPv6 位址範圍內。在這種情況下,問題可能與網路伺服器網路存取權控管有關。

在大多數情況下,問題的原因是您指定的預期 IP 與實際解析的 IP 不符,導致無法連線至 Airflow UI。如要排解問題,請按照下列步驟操作:

  1. 在環境清單中,按一下環境名稱。 「環境詳細資料」頁面隨即開啟。

  2. 前往「環境設定」分頁。

  3. 找到「網路伺服器存取控管機制」項目,然後點選「編輯」

  4. 在「Web server network access control」(網路伺服器網路存取權控管) 對話方塊中,選取「Allow access from all IP addresses」(允許從所有 IP 位址存取)

  5. 多次存取 Airflow UI,確認運作正常:

    • 如果沒有問題,請繼續下一個步驟。

    • 如果此時發生問題,表示問題可能與 IAM 權限設定有關。如要進一步瞭解 Cloud Composer 的 Cloud IAM 權限,請參閱「存取權控管」。

  6. 在「網路伺服器網路存取權控管」對話方塊中,選取「只允許來自特定 IP 位址的存取要求」

  7. 新增 0.0.0.0/0 IP 範圍,然後多次存取 Airflow UI,確認運作正常:

    • 如果沒有發生問題,表示你連線的 IP 是 IPv4 位址。

    • 如果此時發生問題,表示您連線的 IP 是 IPv6 位址。

  8. 刪除 0.0.0.0/0 IP 範圍,然後新增 ::/0 IP 範圍。

    • 如果沒有發生問題,表示您連線的 IP 是 IPv6 位址。

    • 如果此時發生問題,表示您連線的 IP 是 IPv4 位址。

  9. 現在您已判斷解析的位址是 IPv4 或 IPv6。

  10. 視地址類型而定,將 ::/00.0.0.0/0 範圍縮小至更具體的範圍,以驗證存取權停止運作時的最廣範圍:

    • 您可以從廣泛的子網路遮罩 (例如 192.0.2.0/8) 開始,其中包含您認為是 IP 位址的位址。

    • 如要判斷 IP 位址,可以使用第三方服務,這類服務會在您造訪其網頁時提供外部 IP 位址。(你可以使用「我的 IP 位址為何」搜尋查詢,尋找這類服務)。

設定頁面未顯示設定值

為避免存取可能包含敏感資訊的內容,設定頁面會隱藏部分 Airflow 設定參數。舉例來說,系統不會顯示存取 Airflow 資料庫的憑證。

如要顯示隱藏欄位,請覆寫下列 Airflow 設定選項。取得必要值後,建議您還原變更。

區段 附註
webserver expose_config True 預設值為 non-sensitive-only。設為 False 即可隱藏所有設定參數。

DAG 導致 Airflow 網路伺服器當機或傳回「502 gateway timeout」錯誤

網路伺服器錯誤有幾個可能成因。在 Cloud Logging 中查看 airflow-webserver 記錄,判斷 502 gateway timeout 錯誤的原因。

需要大量資源的運算

本節內容僅適用於 Cloud Composer 1。

您可以自訂工作站和排程器節點的機器類型,以提高 CPU 和記憶體容量,但網路伺服器不同,其使用的是固定機器類型,如果剖析時進行的運算作業耗用過多資源,可能會導致 DAG 剖析錯誤。

請注意,網路伺服器有 2 個 vCPU 和 2 GB 的記憶體core-dagbag_import_timeout 的預設值為 30 秒。這個逾時值會定義 Airflow 在 /dags 資料夾中載入 Python 模組的時間長度上限。

權限錯誤

本節內容僅適用於 Cloud Composer 1。

執行網路伺服器與執行工作站和排程器的伺服器帳戶並不相同。因此,工作站和排程器或許能夠存取網路伺服器無法存取的使用者代管資源。

建議您避免在剖析 DAG 的期間存取非公開資源。有時您不得不存取非公開資源,在這種情況下,您必須為網路伺服器的服務帳戶授予相關權限。服務帳戶名稱衍生自網路伺服器網域。舉例來說,如果網域是 example-tp.appspot.com,則服務帳戶為 example-tp@appspot.gserviceaccount.com

DAG 錯誤

本節內容僅適用於 Cloud Composer 1。

網路伺服器是在 App Engine 上執行,並與環境的 GKE 叢集隔開。網路伺服器會剖析 DAG 定義檔,如果 DAG 中有錯誤,可能會發生 502 gateway timeout。如果問題 DAG 沒有中斷 GKE 中執行的任何程序,即使沒有正常運作的網路伺服器,Airflow 也能正常運作。在這種情況下,您可以使用 gcloud composer environments run 從環境中擷取詳細資料,並在網頁伺服器無法使用時做為因應措施。

在其他情況下,您可以在 GKE 中剖析 DAG,並留意是否有 DAG 擲回嚴重 Python 例外狀況或逾時 (超出預設的 30 秒)。如要進行疑難排解,請連線至 Airflow 工作站容器中的遠端殼層並進行測試,檢查是否有語法錯誤。詳情請參閱測試 DAG 一文。

後續步驟