Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
이 페이지에는 알려진 Cloud Composer 문제가 나열되어 있습니다. 문제 수정사항에 관한 자세한 내용은 출시 노트를 참고하세요.
업데이트 중에 추가된 환경 라벨은 완전히 반영되지 않음
업데이트된 환경 라벨은 Compute Engine VM에 적용되지 않습니다. 이 문제를 해결하려면 수동으로 라벨을 적용합니다.
업로드된 DAG 파일의 첫 번째 DAG 실행에서 여러 개의 태스크가 실패함
DAG 파일을 업로드하면 첫 DAG의 처음 몇 개 태스크가 Unable to read remote log...
오류와 함께 실패하는 경우가 있습니다. 이 문제는 환경의 버킷, Airflow 작업자, 환경의 Airflow 스케줄러 간에 DAG 파일이 동기화되어 발생합니다. 스케줄러가 DAG 파일을 가져와서 작업자가 실행하도록 예약하고, 작업자에 아직 DAG 파일이 없으면 태스크 실행이 실패합니다.
이 문제를 완화하기 위해 Airflow 2가 있는 환경은 기본적으로 실패한 태스크에 대해 재시도를 두 번 수행하도록 구성됩니다. 태스크가 실패하면 5분 간격으로 두 번 재시도됩니다.
Cloud Composer는 Apache Log4j 2 취약점 (CVE-2021-44228)의 영향을 받지 않음
Apache Log4j 2 취약점(CVE-2021-44228)에 대한 대응으로 Cloud Composer는 자세한 조사를 실시했으며 Cloud Composer는 이 취약점 공격에 노출되지 않는다고 보고 있습니다.
Airflow UI가 변경되면 플러그인이 다시 로드되지 않을 수 있음
플러그인이 다른 모듈을 가져오는 여러 파일로 구성된 경우 Airflow UI에서 플러그인이 다시 로드되어야 한다는 사실을 인식하지 못할 수 있습니다. 이 경우 환경의 Airflow 웹 서버를 다시 시작합니다.
Airflow UI에 액세스할 때 오류 504 발생
Airflow UI에 액세스할 때 504 Gateway Timeout
오류가 발생할 수 있습니다. 이 오류의 원인은 다음과 같습니다.
일시적인 통신 문제입니다. 이 경우 나중에 Airflow UI에 액세스해 보세요. Airflow 웹 서버를 다시 시작할 수도 있습니다.
(Cloud Composer 3만 해당) 연결 문제입니다. Airflow UI를 영구적으로 사용할 수 없고 제한 시간 또는 504 오류가 발생하는 경우 환경에서
*.composer.googleusercontent.com
에 액세스할 수 있는지 확인하세요.(Cloud Composer 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
와 비슷하게 표시된 로그 항목을 확인합니다. 이러한 오류가 표시되면 오류 메시지에 언급된 파일이 아직 환경의 버킷에 있는지 확인합니다.보관 정책 구성 등으로 인해 실수로 삭제된 경우 복원할 수 있습니다.
환경에 새 환경 변수를 설정합니다. 모든 변수 이름과 값을 사용할 수 있습니다.
Airflow 구성 옵션을 재정의합니다. 존재하지 않는 Airflow 구성 옵션을 사용할 수 있습니다.
트리 보기에서 태스크 인스턴스로 마우스를 가져가면 포착되지 않은 TypeError 발생
Airflow 2에서 기본이 아닌 시간대가 사용되면 Airflow UI의 트리 보기가 올바르게 작동하지 않는 경우가 있습니다. 이 문제를 해결하려면 Airflow UI에서 시간대를 명시적으로 구성합니다.
스케줄러 및 작업자의 빈 폴더
Cloud Composer는 Airflow 작업자 및 스케줄러에서 빈 폴더를 적극적으로 삭제하지 않습니다. 이러한 항목은 해당 폴더가 버킷에 있었고 결국 삭제되었을 때 환경 버킷 동기화 프로세스로 인해 생성될 수 있습니다.
권장사항: 이러한 빈 폴더를 건너뛸 수 있도록 DAG를 조정합니다.
이러한 항목은 환경 클러스터의 축소 또는 유지보수 작업의 결과 등에 따라 해당 구성요소를 다시 시작할 때 결국 Airflow 스케줄러 및 작업자의 로컬 스토리지에서 삭제됩니다.
Kerberos 지원
Cloud Composer는 Airflow Kerberos 구성을 지원하지 않습니다.
Cloud Composer 2 및 Cloud Composer 3에서 컴퓨팅 클래스 지원
Cloud Composer 3 및 Cloud Composer 2는 범용 컴퓨팅 클래스만 지원합니다. 즉, 다른 컴퓨팅 클래스(예: 분산 또는 수평 확장)를 요청하는 포드를 실행할 수 없습니다.
범용 클래스를 사용하면 컴퓨팅 클래스 최대 요청에 설명된 대로 최대 110GB의 메모리와 최대 30개의 CPU를 요청하는 포드를 실행할 수 있습니다.
ARM 기반 아키텍처를 사용하거나 CPU와 메모리가 더 필요하다면 Cloud Composer 3 및 Cloud Composer 2 클러스터 내에서 지원되지 않는 다른 컴퓨팅 클래스를 사용해야 합니다.
권장사항: GKEStartPodOperator
를 사용하여 선택한 컴퓨팅 클래스를 지원하는 다른 클러스터에서 Kubernetes 포드를 실행하세요. 다른 컴퓨팅 클래스가 필요한 커스텀 포드를 실행하는 경우 Cloud Composer 이외의 클러스터에서도 실행해야 합니다.
Sentry가 사용 설정된 경우 업그레이드 작업이 실패할 수 있음
환경에서 Sentry를 구성하고 [sentry]sentry_on
설정을 true
로 설정하면 Cloud Composer 환경에 대한 업그레이드 작업이 실패할 수 있습니다.
솔루션:
- 환경에서 Sentry를 사용 중지하고 업그레이드를 수행한 다음 Sentry를 다시 구성합니다.
Cloud SQL 스토리지를 줄일 수 없음
Cloud Composer는 Cloud SQL을 사용하여 Airflow 데이터베이스를 실행합니다. 시간이 지나면서 Cloud SQL 인스턴스의 디스크 스토리지가 증가할 수 있는데 이는 Airway 데이터베이스 증가 시 Cloud SQL 작업으로 저장된 데이터에 맞춰 디스크가 확장되기 때문입니다.
Cloud SQL 디스크 크기를 축소할 수는 없습니다.
최소 Cloud SQL 디스크 크기를 사용하려면 스냅샷을 사용하여 Cloud Composer 환경을 다시 만들면 됩니다.
Cloud SQL에서 레코드를 삭제한 후 데이터베이스 디스크 사용량 측정항목이 감소하지 않음
Postgres 또는 MySQL과 같은 관계형 데이터베이스는 삭제되거나 업데이트될 때 행을 물리적으로 삭제하지 않습니다. 대신 데이터 일관성을 유지하고 동시 실행 트랜잭션 차단을 방지하기 위해 이를 '데드 튜플'로 표시합니다.
MySQL과 Postgres는 모두 레코드 삭제 후 공간을 회수하는 메커니즘을 구현합니다.
데이터베이스가 사용되지 않은 디스크 공간을 강제로 회수하도록 할 수 있지만 이 작업은 리소스를 많이 소모하므로 데이터베이스를 추가로 잠가 Cloud Composer를 사용할 수 없게 됩니다. 따라서 사용되지 않은 공간을 회수하는 빌드 메커니즘을 사용하는 것이 좋습니다.
액세스 차단됨: 승인 오류
이 문제가 사용자에게 영향을 미치면 액세스 차단됨: 승인 오류 대화상자에 Error 400: admin_policy_enforced
메시지가 포함됩니다.
API 컨트롤 > 구성되지 않은 서드 파티 앱 > 사용자의 서드 파티 앱에 액세스를 허용하지 않음 옵션이 Google Workspace에 사용 설정되어 있고 Cloud Composer 앱의 Apache Airflow가 명시적으로 허용되지 않은 경우 사용자가 명시적으로 애플리케이션을 허용하지 않으면 Airflow UI에 액세스할 수 없습니다.
액세스를 허용하려면 Google Workspace에서 Airflow UI에 대한 액세스 허용의 단계를 수행합니다.
Cloud Composer 구성의 다른 부분과 통신할 때 Airflow 구성요소에 문제가 있음
매우 드문 경우지만 Compute Engine 메타데이터 서버와의 통신 속도가 느려서 Airflow 구성요소가 최적으로 작동하지 않을 수 있습니다. 예를 들어 Airflow 스케줄러가 다시 시작되면 Airflow 태스크를 다시 시도하거나 태스크 시작 시간이 더 길어질 수 있습니다.
증상
다음 오류가 Airflow 구성요소 로그에 표시됩니다(예: Airflow 스케줄러, 작업자 또는 웹 서버).
Authentication failed using Compute Engine authentication due to unavailable metadata server
Compute Engine Metadata server unavailable on attempt 1 of 3. Reason: timed out
...
Compute Engine Metadata server unavailable on attempt 2 of 3. Reason: timed out
...
Compute Engine Metadata server unavailable on attempt 3 of 3. Reason: timed out
해결책:
환경 변수 GCE_METADATA_TIMEOUT=30
을 설정합니다.
Airflow 웹 서버에서 /data 폴더를 사용할 수 없음
Cloud Composer 2 및 Cloud Composer 3에서 Airflow 웹 서버는 대부분 읽기 전용 구성요소이며 Cloud Composer는 data/
폴더를 이 구성요소에 동기화하지 않습니다.
경우에 따라 Airflow 웹 서버를 포함한 모든 Airflow 구성요소 간에 공통 파일을 공유해야 할 수 있습니다.
해결책:
웹 서버와 공유할 파일을 PYPI 모듈에 래핑하고 일반 PYPI 패키지로 설치합니다. PYPI 모듈이 환경에 설치된 후에는 파일이 Airflow 구성요소의 이미지에 추가되고 이를 사용할 수 있습니다.
파일을
plugins/
폴더에 추가합니다. 이 폴더는 Airflow 웹 서버와 동기화됩니다.
모니터링의 비연속 DAG 파싱 시간 및 DAG 모음 크기 다이어그램
모니터링 대시보드에 비연속 DAG 파싱 시간 및 DAG 모음 크기 다이어그램이 표시되면 DAG 파싱 시간이 길어(5분 초과) 문제가 있음을 나타냅니다.
해결책: 총 DAG 파싱 시간을 5분 미만으로 유지하는 것이 좋습니다. DAG 파싱 시간을 줄이려면 DAG 작성 가이드라인을 따르세요.
태스크 로그가 지연되어 표시됨
증상
- Cloud Composer 3에서는 Airflow 태스크 로그가 즉시 표시되지 않고 몇 분 정도 지연됩니다.
원인:
환경에서 동시에 많은 태스크를 실행하는 경우 환경 인프라 크기가 모든 로그를 충분히 빠르게 처리하기에 작으므로 태스크 로그가 지연될 수 있습니다.
해결책:
- 성능을 높이려면 환경 인프라 크기를 늘리는 것이 좋습니다.
- 태스크가 동시에 실행되지 않도록 시간 경과에 따라 DAG 실행을 분산합니다.