Apache Airflow

[Airflow] CeleryExecutor - Worker 종료

비번변경 2022. 12. 9. 23:56

개요

Airflow 서버 이전을 하게 되었다. 신규 서버에서 모든 서비스 확인이 끝나 이제 기존 서버의 서비스를 내리는 단계만 남았다.

Executor는 종료되기 전에 실행 중인 모든 작업을 완료하지만, 서비스를 보다 안전하게 종료할 수 있도록 워커 큐에 더 이상 새로운 task가 할당되지 않도록 하고자 한다.

 

Airflow 구성은 다음과 같다

- master : 2개 서버 : web server, scheduler, celery flower

- worker : 2개 서버 : celery executor

executor로는 celery를, celery 모니터링 툴로는 flower를 사용하고 있다.

 

 

방법

1. Celery Flower Web UI 접속

Celery Flower Web UI 접속

 

2. Queue를 비활성화할 Worker 선택

화면에서 Queues 탭을 선택한다.

 

3. 비활성화할 Queue의 Cancel Consumer 버튼 클릭

 

확인 및 celery 종료

1. Flower 대시보드에서 Active 되는 Task가 있는지 모니터링한다.

아래 사진처럼 활성화된 Tasks가 있으면 안 된다.

 

2. Worker 서버에서 관련 프로세스가 실행되는지 확인한다.

ps -ef | grep 'airflow task supervisor'

사진과 같이 실행 중인 프로세스가 있어선 안 된다.

 

3. 서버에 Task 할당이 되지 않는 것을 확인했다면, celery 프로세스를 내리도록 한다.

프로세스 종료는 kill 명령어를 사용하며, 아래 명령어 결과로 나온 pid를 종료하면 된다.

ps -ef | grep 'celery worker'
kill -9 <PID>

 

 

참고 문서

https://docs.celeryq.dev/en/stable/userguide/workers.html