Airflow 웹 인터페이스 액세스

Cloud Composer 1 | Cloud Composer 2

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

Airflow 웹 서버

각 Cloud Composer 환경에는 Airflow 웹 인터페이스를 실행하는 웹 서버가 있습니다. 웹 서버는 Cloud Composer 환경 아키텍처의 일부입니다.

웹 서버는 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 웹 서버를 다시 시작하여 해결할 수 있습니다. restartWebServer API 또는 restart-web-server gcloud 명령어를 사용하여 웹 서버를 다시 시작할 수 있습니다.

gcloud beta composer environments restart-web-server ENVIRONMENT_NAME
  --location=LOCATION

시작하기 전에

  • Cloud Composer 환경을 볼 수 있는 역할이 있어야 합니다. 자세한 내용은 액세스 제어를 참조하세요.

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

  • Airflow 웹 인터페이스의 역할 기반 액세스 제어(RBAC) 기능은 Composer 버전 1.13.4 이상, Airflow 버전 1.10.10 이상, Python 3을 실행하는 Cloud Composer 환경에서 지원됩니다.

웹 인터페이스 액세스

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

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

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

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

  1. Google Cloud Console에서 환경 페이지로 이동합니다.

    환경으로 이동

  2. Airflow 웹 서버 열에서 해당 환경의 Airflow 링크를 따릅니다.

  3. 적절한 권한을 가진 Google 계정으로 로그인합니다.

Airflow 웹 서버에 대한 액세스 제한

Composer 환경을 사용하면 Airflow 웹 서버에 대한 액세스를 제한할 수 있습니다.

모든 액세스를 차단하거나 특정 IPv4 또는 IPv6 외부 IP 범위로부터의 액세스를 허용할 수 있습니다.

현재 비공개 IP 주소를 사용하여 허용되는 IP 범위를 구성할 수 없습니다.

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 로드가 사용 설정된 경우 Airflow 웹 서버가 새 프로세스를 만듭니다. 이 프로세스는 백그라운드에서 DAG를 로드하고 dagbag_sync_interval 옵션으로 정의된 간격에 따라 새로 로드된 DAG를 전송한 후 절전 모드로 전환됩니다.

이 프로세스는 주기적으로 절전 모드를 해제하여 DAG를 다시 로드하며, 간격은 collect_dags_interval 옵션으로 정의합니다.

비동기 DAG 로드를 사용 설정하려면 다음 안내를 따르세요.

  1. DAG 직렬화 사용 중지. 비동기 DAG 로드는 DAG 직렬화에 사용할 수 없습니다. async_dagbag_loaderstore_serialized_dags Airflow 구성 옵션을 사용하면 HTTP 503 오류가 발생하고 환경이 손상됩니다.

  2. 다음 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 로드의 경우 더 긴 새로고침 간격을 사용할 수 있습니다.