[ETL] Airflow 설치하기 (on AWS EC2 ubuntu 서버)

설치 환경 미리 보기

✅ 우분투 24.04 사용 (프리티어 가능한 버전 선택)

✅ AWS EC2 t3.small or t3a.small 인스턴스사용

 

Airflow 2.9.1 설치 과정

- Airflow 메타데이터베이스로 로컬 서버에 Postgres 설치 예정

- Airflow는 /var/lib/airflow/ 밑에 설치

- Airflow 서버에는 총 3개의 어카운트 사용 (보안 이슈를 최소화하기위해 서비스 별로 계정 분리)

    - ubuntu: 메인 어카운트

    - postgres: postgres 설치시 만들어지는 계정으로 postgres 엑세스를 위한 airflow 계정을 별도로 생성

    - airflow: Airflow용 어카운트, Airflow 서비스는 이 계정으로 실행

 

0. AWS EC2 서버 론치

 

[AWS] EC2 우분투 ubuntu 인스턴스 생성

설치 환경 미리 보기✅ 우분투 24.04 사용 (프리티어 가능한 버전 선택)✅ AWS EC2 t3.small or t3a.small 인스턴스사용 AWS EC2 우분투 ubuntu 인스턴스 생성 1. AWS 콘솔 로그인2. AWS EC2 서비스 선택 3. EC2 인

ourjune.tistory.com

생성된 키페어는 작업 폴더에 저장해두기

1. Ubuntu로 로그인

호스트 이름 복사해서 터미널로 ssh 접속하기

 

 

# ssh 접속
ssh -i [키페어이름.pem] ubuntu@[아까 복사한 EC2 호스트명]

 

⚠️ 만약 EC2 ssh 접속시 pem 파일에 대해 Permission denied 에러 발생한다면 

chmod 600 [키페어이름].pem

해서 권한 변경해주기!

 

ssh 접속 완료!

- python 업그레이드 (필요시 가상환경 venv 활성화해서 작업)

sudo apt-get update
wget https://bootstrap.pypa.io/get-pip.py
(sudo) python3 get-pip py
sudo apt-get install -y python3-pip
(sudo) pip3 install pyopenssl --upgrade

- Airflow 2.0 설치하고 필요 기타 모듈 설치

sudo apt-get install -y libmysqlclient-dev (or sudo apt-get install pkg-config libmysqlclient-dev)
sudo pip3 install --ignore-installed "apache-airflow[celery,amazon,mysql,postgres]==2.9.1" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.9.1/constraints-3.8.txt"
(sudo) pip3 install oauth2client gspread numpy pandas

- Airflow 계정 생성 하고 홈디렉토리 /var/lib/airflow로 설정

sudo groupadd airflow
sudo useradd -s /bin/bash airflow -g airflow -d /var/lib/airflow -m

- Postgres 설치

관련 모듈도 함께 설치

postgres라는 계정이 우분투에 생성됨

sudo apt-get install -y postgresql postgresql-contrib

2. postgres로 어카운트 변경

- postgres에 airflow 계정 생성

$ sudo su postgres
$ psql
psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1))
Type "help" for help.

postgres=# CREATE USER airflow PASSWORD 'airflow';
CREATE ROLE
postgres=# CREATE DATABASE airflow;
CREATE DATABASE
postgres=# \q
$ exit

- postgres 재실행

sudo service postgresql restart

 

- airflow 계정으로 전환

sudo su airflow

- 홈디렉토리로 이동

cd ~/

- 데이터파이프라인이 놓여질 dags 폴더 만들기

- airflow가 메타데이터디비를 사용할 수 있게 연결

- 처음에는 sqlite로 연결

 

ls -tl 하면 var/lib/airflow 하단에 생성

음영처리는 폴더

airflow.db
logs
webserver_config.py
airflow.cfg
dags

 

3. airflow로 어카운트 변경

- airflow.cfg 변경

- airflow 재설치

- airflow web 로그인 계정 생성

 

4. ubuntu로 어카운트 변경

- Airflow 웹서버와 스케줄러를 서비스로 등록하고 시작

 

 

airflow webserver 8080 포트 사용

AWS EC2 Security Groups에서 inbound 규칙에 8080 포트 추가 필요

웹브라우저 탭에서 EC2호스트이름:8080 하면 airflow webserver 접속 가능