Airflow 웹 인터페이스

Apache Airflow에는 워크플로(DAG)를 관리하고, Airflow 환경을 관리하고, 관리 작업을 수행하는 데 사용할 수 있는 웹 인터페이스가 포함되어 있습니다. 예를 들어 웹 인터페이스를 사용하여 DAG의 진행 상태를 검토하거나, 새 데이터 연결을 설정하거나, 이전 DAG 실행의 로그를 살펴볼 수 있습니다.

Airflow 웹 서버

각 Cloud Composer 환경에는 Airflow 웹 인터페이스를 실행하는 웹 서버가 있습니다. 웹 서버는 환경의 GKE 클러스터와 별개이며 고정 머신 유형의 App Engine 인스턴스에서 실행됩니다.

웹 서버는 dags/ 폴더의 DAG 정의 파일을 파싱하고 DAG의 데이터와 리소스에 액세스하여 DAG를 로드하고 HTTP 요청을 처리할 수 있어야 합니다.

웹 서버는 60초 간격으로 DAG를 새로 고칩니다(Cloud Composer의 기본 worker_refresh_interval). 웹 서버가 새로고침 간격 내에 모든 DAG를 파싱할 수 없으면 웹 서버 오류가 발생할 수 있습니다.

DAG 파일 수가 많거나 DAG 파일을 로드하는 워크로드가 상당하면 DAG를 로드하는 데 60초 이상이 소요될 수 있습니다. 웹 서버가 DAG 로드 시간과 관계없이 액세스할 수 있도록 하려면 사전 구성된 간격으로 백그라운드에서 DAG를 파싱 및 로드하도록 비동기 DAG 로드를 구성하면 됩니다(composer-1.7.1-airflow-1.10.2 이상 버전에서 구성 가능). 이렇게 구성하면 DAG 새로고침 시간이 단축될 수도 있습니다.

작업자 새로고침 간격 초과 외에도 웹 서버는 대부분의 경우 DAG 로드 실패를 정상적으로 처리할 수 있습니다. DAG로 인해 웹 서버가 다운되거나 종료될 경우 브라우저에 오류가 반환될 수 있습니다. 자세한 내용은 DAG 문제해결을 참조하세요.

DAG 파싱으로 인해 웹 서버 문제가 계속 발생할 경우에는 비동기 DAG 로드를 사용하는 것이 좋습니다.

시작하기 전에

  • Cloud Composer 환경의 Airflow 웹 서버에 액세스하려면 composer.environments.get 권한이 필요합니다. 자세한 내용은 Cloud Composer 액세스 제어를 참조하세요.

  • 환경 생성 중에 Cloud Composer는 Airflow 웹 인터페이스를 실행하는 웹 서버의 URL을 구성합니다. 이 URL을 맞춤설정할 수 없습니다.

  • Airflow 1.10을 실행 중인 Cloud Composer 환경에는 Airflow 웹 인터페이스의 역할 기반 액세스 제어(RBAC) 기능이 지원되지 않습니다.

웹 인터페이스 액세스

Airflow 웹 서버 서비스는 appspot.com 도메인에 배포되며 Airflow 웹 인터페이스에 대한 액세스를 제공합니다. IAP(Identity-Aware Proxy)는 사용자 ID를 기반으로 액세스를 보호하여 인터페이스를 보호합니다.

새 Cloud Composer 환경을 만든 후 웹 인터페이스에서 호스팅을 종료하고 액세스 가능 상태가 되는데 최대 25분이 소요됩니다.

Google Cloud Console을 통해 웹 인터페이스에 액세스

Google Cloud Console에서 Airflow 웹 인터페이스에 액세스하려면 다음 안내를 따르세요.

  1. 기존 Cloud Composer 환경을 보려면 환경 페이지를 엽니다.

    환경 페이지 열기

  2. Airflow 웹 서버 열에서 Airflow 웹 인터페이스를 보려는 환경의 새 창 아이콘을 클릭합니다.
  3. 적절한 권한을 가진 Google 계정으로 로그인합니다.

gcloud 명령줄 도구를 통해 웹 인터페이스 URL 검색

모든 웹브라우저에서 Airflow 웹 인터페이스에 액세스할 수 있습니다. 웹 인터페이스의 URL을 가져오려면 다음 gcloud 명령어를 입력합니다.

gcloud composer environments describe ENVIRONMENT_NAME \
--location LOCATION

각 매개변수는 다음과 같습니다.

  • ENVIRONMENT_NAME은 환경 이름입니다.
  • LOCATION은 환경이 위치한 Compute Engine 리전입니다.

gcloud 명령어는 웹 인터페이스의 URL을 비롯해 Cloud Composer 환경의 속성을 보여줍니다. URL은 airflowUri로 나열됩니다.

airflowUri: https://uexamplebcd3fff-tp.appspot.com/
  dagGcsPrefix: gs://us-central1-example-environment-00a47695-bucket/dags
  gkeCluster: projects/example-project/zones/us-central1-a/clusters/us-central1-example-environment-00a47695-gke
  nodeConfig:
    diskSizeGb: 100
    location: projects/example-project/zones/us-central1-a
    machineType: projects/example-project/zones/us-central1-a/machineTypes/n1-standard-1
    network: projects/example-project/global/networks/default
    oauthScopes:
    - https://www.googleapis.com/auth/cloud-platform
    serviceAccount: N13597NNN465-compute@developer.gserviceaccount.com
  nodeCount: 3
  softwareConfig:
    imageVersion: composer-0.5.1-airflow-1.9.0
createTime: '2018-05-19T02:13:36.749Z'
name: projects/example-project/locations/us-central1/environments/example-environment
state: RUNNING
updateTime: '2018-05-19T02:30:21.387Z'
uuid: 66bd6a28-5b48-4da3-a0aa-898199b569da

비동기 DAG 로드 구성

웹 서버는 비동기 DAG 로드(webserver-async_dagbag_loader)를 통해 새 프로세스를 만듭니다. 이 프로세스는 백그라운드에서 DAG를 로드하고 새로 로드된 DAG(dagbag_sync_interval)를 전송한 후 절전 모드로 전환됩니다.

이 프로세스는 DAG(collect_dags_interval)를 다시 로드하도록 정기적으로 절전 모드에서 해제됩니다. composer-1.7.1-airflow-1.10.2 이상이 필요합니다.

비동기 DAG 로드를 구성하려면 다음 Airflow 구성을 재정의합니다.

섹션 및 구성 참고
webserver-async_dagbag_loader = True 기본값은 False입니다.
webserver-collect_dags_interval = 30 기본값은 30입니다. 더 작은 값을 사용하면 더 빠르게 새로 고칠 수 있습니다.
webserver-dagbag_sync_interval = 10 기본값은 10입니다.
webserver-worker_refresh_interval = 3600 기본값은 60입니다. 비동기 DAG 로드를 사용하면 간격이 넓은 새로고침을 사용할 수 있습니다.

비동기 DAG 로드를 사용할 경우 DAG 직렬화 기능을 중지해야 합니다.