개요
현재 테스트 서버에 설치되어 있는 Airflow 버전은 2.3.2이고,
2023년 3월 28일 기준 Airflow 최신 버전은 2.5.2이다. 사용하고 있는 버전도 비교적 최신 버전이지만, 아예 최신 안정 버전으로 업그레이드를 해보려고 한다. 방법을 정리한다.
환경 정보
- AWS EC2 단일 노드
- python 3.8
- pip를 통한 설치
- META DB : postgreSQL (Docker)
- LocalExecutor
❗ 운영 환경에서 작업하지 않은 글이므로 참고만 할 것을 당부한다. ❗
데이터 백업
문제 상황을 대비해 Airflow 관련 데이터를 백업한다. 백업할 사항은 아래 부분 정도가 될 것 같다.
- Python 패키지 버전 정보
pip freeze > airflow_requirements.txt
- Airflow Meta DB
- $AIRFLOW_HOME 경로 내 config
- $AIRFLOW_HOME/dags
이 외 필요한 부분은 추가로 확인하여 백업하는 것을 권장한다.
버전 업그레이드
1. Airflow 서비스 중지
동작하고 있는 Airflow 스케쥴러와 웹 서버를 중지한다.
2. (선택) airflow.cfg 이름 변경
Airflow 버전이 변경되면서 구성 설정 파일에도 변경이 발생한다. 기존 구성 파일 그대로 사용할 수 있지만 Airflow CLI 등을 사용할 때마다 WARNING 메시지가 올라오는 것이 싫다면 이름을 변경해 두는 것을 추천한다. airflow.cfg는 airflow를 설치하거나 시작할 때 존재하지 않으면 자동으로 생성된다.
다만 신규 버전 설치 후 필요한 설정값은 새 구성 파일에 설정해주어야 한다.
3. Airflow 업그레이드 버전 설치
이 과정은 Airflow 초기 설치와 비슷하다. 다만 설치할 Airflow 버전을 원하는 버전으로 지정해야 한다.
# Airflow 홈 디렉터리 선언
export AIRFLOW_HOME=~/airflow
# Airflow/Python 버전 지정
AIRFLOW_VERSION=2.5.2
PYTHON_VERSION="$(python --version | cut -d " " -f 2 | cut -d "." -f 1-2)"
# Airflow 설치 파일 경로 선언
CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"
변수 선언이 완료되면 pip install을 이용해 Airflow를 설치한다.
pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"
4. 설치 확인
설치한 버전을 확인한다.
airflow version
만약 2번에서 airflow.cfg 이름을 변경했다면 설정값도 원복한다.
5. 메타 DB 업그레이드
Airflow 메타 DB를 업그레이드한다.
airflow db upgrade
Upgrade에 이상이 없다면 사진과 같이 Upgrades done이라는 메시지가 출력된다.
사진에는 ModuleNotFoundError: No module named 'kubernetes' 라는 에러 메시지도 출력되어 있는데, Airflow 설치 시 예제 DAG에서 사용하는 모듈이 없다는 에러이다. 필요시 안내 메시지를 따라 모듈을 설치한다.
pip install apache-airflow[cncf.kubernetes]
🤔 참고로 건너 건너 전달받은 바에 따르면, Airflow 1 -> 2 버전 업그레이드 때에는 메타 DB의 스키마 변경이 있었던 탓에 업그레이드가 원활하지 않았다고 한다……. 만약 Airflow 메타 데이터를 유지할 필요가 없다면 데이터베이스를 초기화하는 것도 방법이다.
다만 사용자는 신규로 생성해주어야 할 것 같다.
6. Airflow 서비스 확인
Airflow 프로세스를 동작시켜 서비스에 이상이 없는지 확인한다.
참고 문서
https://airflow.apache.org/docs/apache-airflow/stable/installation/upgrading.html
https://stackoverflow.com/questions/72283506/how-to-upgrade-airflow