1. 문제 상황

- airflow 공식 홈페이지에서 제공하는 docker compose 환경이 3.1.0 버전으로 변경되었다.

- 설치 후 예제 dag 중에 pythonOperator 같은 당연히 실행되어야 하는 dag가 실행되지 않았다.

- airflow에서 확인한 에러로그는 다음과 같았다.

Executor CeleryExecutor(parallelism=32) reported that the task instance 
<TaskInstance: docker_test.echo_host scheduled__2025-09-28T13:10:24.732903+00:00 [queued]> 
finished with state failed, but the task instance's state attribute is queued. 
Learn more: https://airflow.apache.org/docs/apache-airflow/stable/troubleshooting.html#task-state-changed-externally

- 공식 홈페이지에서 딱히 도움이 될만한 내용은 없었다.

 

2. 문제 해결 방법

- aiflow에서 fernet key가 불일치하면 발생하는 문제로 확인되었다.

- fernet key가 일치해야 워커에서 실행할 태스크가 올바른 것이라고 스케쥴러가 관리를 할 수 있는데, 이게 불일치하는 문제가 생기는 것이다.

- 이전에 사용하던 2.x.x 버전의 에어플로우에서는 명시적으로 설정하지 않던 값을 설정해서 문제를 해결할 수 있다.

- docker compose 파일이 있는 경로에 .env를 생성하고 UID와 fernet key 값을 고정 값으로 넣어준다,

- 여기서 fernet key는 파이썬 라이브러리로 간단하게 만들 수 있고, 예제 코드는 아래와 같다.

from cryptography.fernet import Fernet
print(Fernet.generate_key().decode())

 

- .env 파일은 아래와 같이 만들자

FERNET_KEY=생성한 fernet key
AIRFLOW_UID=50000

 

- 만약에 이미 airflow를 한번 docker compose up으로 올렸었다면 다음과 같은 명령어로 볼륨과 생성됐던 컨테이너를 깨끗하게 삭제하고 다시 실행하자

docker-compose down --volumes --remove-orphans

 

- 다시 airflow를 실행하면 문제없이 dag가 실행되는 것을 알 수 있다.

 

3. 다음 게시물 내용

- DockerOperator로 dag를 실행하는 예제를 실습한다.

'데이터 시스템 구축 정보 공유 > airflow' 카테고리의 다른 글

4. DockerOperator로 dag 실행하기  (0) 2025.09.29
2. docker를 사용한 airflow 설치  (0) 2024.01.11
1. Airflow란?  (0) 2022.07.31

+ Recent posts