알려진 문제

관리형 Airflow (3세대) | 관리형 Airflow (2세대) | 관리형 Airflow (기존 1세대)

이 페이지에는 알려진 관리형 Airflow 문제가 나와 있습니다. 문제 해결에 대한 자세한 내용은 출시 노트를 참조하세요.

업로드된 DAG 파일의 첫 번째 DAG 실행에서 여러 개의 태스크가 실패함

DAG 파일을 업로드하면 첫 DAG의 처음 몇 개 태스크가 Unable to read remote log... 오류와 함께 실패하는 경우가 있습니다. 이 문제는 환경의 버킷, Airflow 작업자, 환경의 Airflow 스케줄러 간에 DAG 파일이 동기화되어 발생합니다. 스케줄러가 DAG 파일을 가져와서 작업자가 실행하도록 예약하고, 작업자에 아직 DAG 파일이 없으면 태스크 실행이 실패합니다.

이 문제를 완화하기 위해 Airflow 2가 포함된 환경은 실패한 태스크에 대해 기본적으로 두 번 재시도하도록 구성됩니다. 태스크가 실패하면 5분 간격으로 두 번 재시도됩니다.

관리형 Airflow는 Apache Log4j 2 취약점 (CVE-2021-44228)의 영향을 받지 않음

Apache Log4j 2 취약점 (CVE-2021-44228)에 대한 대응으로 관리형 Airflow는 자세한 조사를 실시했으며 관리형 Airflow는 이 취약점 공격에 노출되지 않는다고 보고 있습니다.

Airflow UI가 변경되면 플러그인이 다시 로드되지 않을 수 있음

플러그인이 다른 모듈을 가져오는 여러 파일로 구성된 경우 Airflow UI에서 플러그인이 다시 로드되어야 한다는 사실을 인식하지 못할 수 있습니다. 이 경우 환경의 Airflow 웹 서버를 다시 시작합니다.

Airflow UI에 액세스할 때 오류 504 발생

Airflow UI에 액세스할 때 504 Gateway Timeout 오류가 발생할 수 있습니다. 이 오류의 원인은 다음과 같습니다.

  • 일시적인 통신 문제입니다. 이 경우 나중에 Airflow UI에 액세스해 보세요. Airflow 웹 서버를 다시 시작할 수도 있습니다. Airflow 웹 서버를 다시 시작할 수도 있습니다.

  • (관리형 Airflow (3세대)만 해당) 연결 문제입니다. Airflow UI를 영구적으로 사용할 수 없고 제한 시간 또는 504 오류가 발생하는 경우 환경에서 *.composer.googleusercontent.com에 액세스할 수 있는지 확인하세요.

  • (관리형 Airflow (2세대)만 해당) 연결 문제입니다. Airflow UI를 영구적으로 사용할 수 없고 제한 시간 또는 504 오류가 발생하는 경우 환경에서 *.composer.cloud.google.com에 액세스할 수 있는지 확인하세요. 비공개 Google 액세스를 사용하고 private.googleapis.com 가상 IP를 통해 트래픽을 전송하거나, VPC 서비스 제어를 사용하고 restricted.googleapis.com 가상 IP를 통해 트래픽을 전송할 경우 Cloud DNS가 *.composer.cloud.google.com 도메인 이름으로도 구성됐는지 확인하세요.

  • 응답 없는 Airflow 웹 서버 오류 504가 지속되더라도 특정 시점에 Airflow UI에 계속 액세스할 수 있으면 과부하가 발생하여 Airflow 웹 서버가 응답하지 않을 수 있습니다. 웹 서버의 확장 및 성능 매개변수 를 늘려보세요.

Airflow UI에 액세스할 때 502 오류 발생

502 Internal server exception 오류는 Airflow UI가 들어오는 요청을 처리할 수 없음을 나타냅니다. 이 오류의 원인은 다음과 같습니다.

  • 일시적인 통신 문제입니다. 나중에 Airflow UI에 액세스해 보세요.

  • 웹 서버를 시작할 수 없습니다. 웹 서버를 시작하려면 먼저 구성 파일을 동기화해야 합니다. 웹 서버 로그에서 GCS sync exited with 1: gcloud storage cp gs://<bucket-name>/airflow.cfg /home/airflow/gcs/airflow.cfg.tmp 또는 GCS sync exited with 1: gcloud storage cp gs://<bucket-name>/env_var.json.cfg /home/airflow/gcs/env_var.json.tmp와 비슷하게 표시된 로그 항목을 확인합니다. 이러한 오류가 표시되면 오류 메시지에 언급된 파일이 아직 환경의 버킷에 있는지 확인합니다.

    보관 정책 구성 등으로 인해 실수로 삭제된 경우 복원할 수 있습니다.

    1. 환경에 새 환경 변수를 설정합니다. 모든 변수 이름과 값을 사용할 수 있습니다.

    2. Airflow 구성 옵션을 재정의합니다. 존재하지 않는 Airflow 구성 옵션을 사용할 수 있습니다.

트리 보기에서 태스크 인스턴스로 마우스를 가져가면 포착되지 않은 TypeError 발생

Airflow 2에서 기본이 아닌 시간대가 사용되면 Airflow UI의 트리 보기가 올바르게 작동하지 않는 경우가 있습니다. 이 문제를 해결하려면 Airflow UI에서 시간대를 명시적으로 구성합니다.

스케줄러 및 작업자의 빈 폴더

관리형 Airflow는 Airflow 작업자 및 스케줄러에서 빈 폴더를 적극적으로 삭제하지 않습니다. 이러한 항목은 버킷에 이러한 폴더가 있고 결국 삭제된 경우 환경 버킷 동기화 프로세스의 결과로 생성될 수 있습니다.

권장사항: 이러한 빈 폴더를 건너뛸 수 있도록 DAG를 조정합니다.

이러한 항목은 환경 클러스터의 축소 또는 유지보수 작업의 결과 등에 따라 해당 구성요소를 다시 시작할 때 결국 Airflow 스케줄러 및 작업자의 로컬 스토리지에서 삭제됩니다.

Kerberos 지원

관리형 Airflow는 Airflow Kerberos 구성을 지원하지 않습니다.

관리형 Airflow (2세대) 및 관리형 Airflow (3세대)의 컴퓨팅 클래스 지원

관리형 Airflow (3세대) 및 관리형 Airflow (2세대)는 범용 컴퓨팅 클래스만 지원합니다. 즉, 다른 컴퓨팅 클래스 (예: 분산 또는 수평 확장)를 요청하는 포드를 실행할 수 없습니다.

범용 클래스를 사용하면 컴퓨팅 클래스 최대 요청에 설명된 대로 최대 110GB의 메모리와 최대 30개의 CPU를 요청하는 포드를 실행할 수 있습니다.

ARM 기반 아키텍처를 사용하거나 CPU와 메모리가 더 필요하다면 Managed Airflow (3세대) 및 Managed Airflow (2세대) 클러스터 내에서 지원되지 않는 다른 컴퓨팅 클래스를 사용해야 합니다.

권장사항: GKEStartPodOperator를 사용하여 선택한 컴퓨팅 클래스를 지원하는 다른 클러스터에서 Kubernetes 포드를 실행하세요. 다른 컴퓨팅 클래스가 필요한 커스텀 포드를 실행하는 경우 관리형 Airflow 이외의 클러스터에서도 실행해야 합니다.

Cloud SQL 스토리지를 줄일 수 없음

관리형 Airflow는 Cloud SQL을 사용하여 Airflow 데이터베이스를 실행합니다. 시간이 지나면서 Cloud SQL 인스턴스의 디스크 스토리지가 증가할 수 있는데 이는 Airway 데이터베이스 증가 시 Cloud SQL 작업으로 저장된 데이터에 맞춰 디스크가 확장되기 때문입니다.

Cloud SQL 디스크 크기를 축소할 수는 없습니다.

최소 Cloud SQL 디스크 크기를 사용하려면 스냅샷을 사용하여 관리형 Airflow 환경 을 다시 만들면 됩니다.

Cloud SQL에서 레코드를 삭제한 후 데이터베이스 디스크 사용량 측정항목이 줄어들지 않음

Postgres 또는 MySQL과 같은 관계형 데이터베이스는 삭제되거나 업데이트될 때 행을 물리적으로 삭제하지 않습니다. 대신 데이터 일관성을 유지하고 동시 실행 트랜잭션 차단을 방지하기 위해 이를 '데드 튜플'로 표시합니다.

MySQL과 Postgres는 모두 레코드 삭제 후 공간을 회수하는 메커니즘을 구현합니다.

데이터베이스가 사용되지 않은 디스크 공간을 강제로 회수하도록 할 수 있지만 이 작업은 리소스를 많이 소모하므로 데이터베이스를 추가로 잠가 관리형 Airflow를 사용할 수 없게 됩니다. 따라서 사용되지 않은 공간을 회수하는 빌드 메커니즘을 사용하는 것이 좋습니다.

액세스 차단됨: 승인 오류

이 문제가 사용자에게 영향을 미치면 액세스 차단됨: 승인 오류 대화상자에 Error 400: admin_policy_enforced 메시지가 포함됩니다.

API 컨트롤 > 구성되지 않은 서드 파티 앱 > 사용자의 서드 파티 앱에 액세스를 허용하지 않음 옵션이 Google Workspace에 사용 설정되어 있고 관리형 Airflow 앱의 Apache Airflow가 명시적으로 허용되지 않은 경우 사용자가 명시적으로 애플리케이션을 허용하지 않으면 Airflow UI에 액세스할 수 없습니다.

액세스를 허용하려면 Google Workspace에서 Airflow UI에 대한 액세스 허용의 단계를 수행합니다.

Airflow UI에 액세스할 때 로그인 루프 발생

이 문제는 다음과 같은 원인이 있을 수 있습니다.

Airflow 웹 서버에서 /data 폴더를 사용할 수 없음

관리형 Airflow (2세대) 및 관리형 Airflow (3세대)에서 Airflow 웹 서버는 대부분 읽기 전용 구성요소이며 관리형 Airflow는 data/ 폴더를 이 구성요소에 동기화하지 않습니다.

경우에 따라 Airflow 웹 서버를 포함한 모든 Airflow 구성요소 간에 공통 파일을 공유해야 할 수 있습니다.

해결책:

  • 웹 서버와 공유할 파일을 PYPI 모듈에 래핑하고 일반 PYPI 패키지로 설치합니다. PYPI 모듈이 환경에 설치된 후에는 파일이 Airflow 구성요소의 이미지에 추가되고 이를 사용할 수 있습니다.

  • 파일을 plugins/ 폴더에 추가합니다. 이 폴더는 Airflow 웹 서버와 동기화됩니다.

모니터링의 비연속 DAG 파싱 시간 및 DAG 모음 크기 다이어그램

모니터링 대시보드에 비연속 DAG 파싱 시간 및 DAG 모음 크기 다이어그램이 표시되면 DAG 파싱 시간이 길어(5분 초과) 문제가 있음을 나타냅니다.

일련의 비연속 간격을 보여주는 Airflow DAG 파싱 시간 및 DAG 모음 크기 그래프
그림 1. 비연속 DAG 파싱 시간 및 DAG 모음 크기 그래프 (확대하려면 클릭)

해결책: 총 DAG 파싱 시간을 5분 미만으로 유지하는 것이 좋습니다. DAG 파싱 시간을 줄이려면 DAG 작성 가이드라인을 따르세요.

태스크 로그가 지연되어 표시됨

증상:

  • 관리형 Airflow (3세대)에서는 Airflow 태스크 로그가 즉시 표시되지 않고 몇 분 정도 지연됩니다.
  • Airflow 로그에 Logs not found for Cloud Logging filter 메시지가 표시될 수 있습니다.

원인:

환경에서 동시에 많은 태스크를 실행하는 경우 환경 인프라 크기가 모든 로그를 충분히 빠르게 처리하기에 작으므로 태스크 로그가 지연될 수 있습니다.

해결책:

  • 성능을 높이려면 환경 인프라 크기를 늘리는 것이 좋습니다.
  • 태스크가 동시에 실행되지 않도록 시간 경과에 따라 DAG 실행을 분산합니다.

KubernetesPodOperator 및 KubernetesExecutor의 시작 시간 증가

KubernetesPodOperator로 만든 포드와 KubernetesExecutor로 실행된 태스크의 시작 시간이 증가합니다. 관리형 Airflow팀에서 해결 방법을 마련하고 있으며 문제가 해결되면 공지할 예정입니다.

해결 방법:

  • 더 많은 CPU로 포드를 시작합니다.
  • 가능하면 이미지를 최적화합니다 (레이어 수 감소, 크기 감소).

프로젝트의 결제 계정이 삭제되거나 비활성화되었거나 관리형 Airflow API가 사용 중지된 후 환경이 ERROR 상태임

이러한 문제의 영향을 받는 관리형 Airflow 환경은 복구할 수 없습니다.

  • 프로젝트의 결제 계정이 삭제되거나 비활성화된 후 다른 계정이 나중에 연결된 경우에도 마찬가지입니다.
  • 프로젝트에서 관리형 Airflow API가 사용 중지된 후 나중에 사용 설정된 경우에도 마찬가지입니다.

다음과 같이 문제를 해결할 수 있습니다.

[core]execute_tasks_new_python_interpreter가 True로 설정된 경우 Airflow 태스크의 로그가 수집되지 않음

관리형 Airflow는 Airflow 구성 옵션이 [core]execute_tasks_new_python_interpreter True로 설정된 경우 Airflow 태스크의 로그를 수집하지 않습니다.

예시 답안:

  • 이 구성 옵션의 재정의를 삭제하거나 값을 False로 설정합니다.

환경이 삭제될 때 네트워크 연결을 삭제하는 중에 오류 발생

동일한 네트워크 연결을 공유하는 여러 환경이 동시에 삭제되면 일부 삭제 작업이 오류와 함께 실패합니다.

증상:

다음 오류가 생성됩니다.

Got error while removing Network Attachment: <error code>

보고된 오류 코드는 Bad request: <resource> is not ready 또는 Precondition failed: Invalid fingerprint일 수 있습니다.

가능한 해결 방법:

다음 단계