Airflow
AWS Ec2 Ubuntu24.04
필요한거 설치 Airflow
디렉토리 시작 위치 : /home/ubuntu/
1. Venv 가상환경
Airflow에 필요한 패키지들을 설치하다 보면 Error가 보일지도 모른다. 그중 초반부 패키지들은 가상환경이 아닌 로컬에 설치를 할 경우
설치하기 싫다고 짜증을 부린다.
# 시작위치 : /home/ubunut/
python3 -m venv venv
# 가상환경 활성화
source venv/bin/activate
# 활성화 성공시
(venv) ubuntu@ip-111.......라고 나올것
2. Airflow 설치...전에 필요한 패키지 설치
# Airflow 필요 패키지 설치
sudo apt-get update
sudo apt install python3-pip
pip3 install cryptography psycopg2-binary boto3 botocore
sudo apt install libmysqlclient-dev -y
pip3 install mysqlclient
3. Airflow 설치
# 위치 : /home/ubuntu/
pip3 install apache-airflow
설치가 완료되면 /home/ubunut/venv/bin 위치에 airflow 관련 파일들이 저장된다.
cd ~
sudo vi .profile
export AIRFLOW_HOME=/home/ubuntu/venv/airflow
4. Sqlite DB를 초기화 하여 Airflow Web이 나오는지 확인
# Sqlite 초기화
/home/ubuntu/venv/bin/airflow db init
# Sqlite 유저 생성
/home/ubuntu/venv/bin/airflow users create \
--username admin \
--firstname Admin \
--lastname admin \
--role Admin \
--email admin@test.com
# 위 내용 엔터시 사용할 비밀번호 입력란이 나오니 작성해 주세요.
/home/ubuntu/venv/bin/airflow webserver -p 8080
# 작성후 본인 Public IP + :8080
# 예시 : 127.0.0.1:8080
만약 AWS 서비스를 이용중인데 설치는 성공했지만 Airflow Web 실행이 안된다면 다음과 같이 보안그룹 인바운드를 확인해 주세요
사용자 지정 TCP 8080 사용자 지정 0:0:0:0 또는 본인 IP
5. Mysql
Airflow는 기본 DB가 Sqlite입니다. 파이썬기반이라 그래요 하지만 Airflow는 Sqlite를 사용하지말고 다른 DB를 제발 꼭 부탁드립니다. 수준으로 안내하고 있습니다. 본인들이 비는데 착한 우리들이 봐줘야지 어쩌겠습니까.
# myslq 설치
sudo apt install mysql-server -y
# Mysql 보안 설정
sudo mysql_secure_installation
# 보안 설정 시 다음 사항들을 확인하세요:
새로운 MySQL root 비밀번호 설정
익명 사용자 삭제
원격 root 로그인 비활성화
테스트 데이터베이스 삭제
권한 테이블 재로드
# Airflow용 Mysql 데이터 베이스 . 및사용자 생성
sudo mysql -u root -p
#접속 후 아래 명령어 실행
CREATE DATABASE airflow;
CREATE USER 'airflow_user'@'localhost' IDENTIFIED BY 'airflow_password';
GRANT ALL PRIVILEGES ON airflow.* TO 'airflow_user'@'localhost';
FLUSH PRIVILEGES;
# 예시
CREATE DATABASE airflow;
CREATE USER 'root'@'localhost' IDENTIFIED BY '#rmfmfmrrmfmfmr123';
GRANT ALL PRIVILEGES ON airflow.* TO 'root'@'localhost';
FLUSH PRIVILEGES;
**airflow_user**는 Airflow에서 사용할 MySQL 사용자명입니다.
**airflow_password**는 해당 사용자의 비밀번호입니다.
**airflow**는 Airflow의 데이터베이스입니다.
---------------------------------------------------------------------------
# Airflow DB생성
create database airflow;
# root유저에게 AirflowDB권한 부여
grant all privileges on airflow.* to 'root'@'localhost';
# 나가기
EXIT
# airflow.cfg설정
sql_alchemy_conn = mysql://root:#rmfmfmrrmfmfmr123@localhost:3306/airflow
사용자명:비번@localhost
/home/ubuntu/venv/bin/airflow db init
# mysql에 meta가 생겼는지 확인
mysql -u root -p
show tables;
# mysql에 user등록
/home/ubuntu/venv/bin/airflow users create \
--username admin \
--firstname Admin \
--lastname test \
--role Admin \
--email admin@test.com
# 서버 올려서 로그인 되는지 확인
/home/ubuntu/venv/bin/airflow webserver -p 8080
6. Webserver, scheduler 데몬 등록
# dag 파일 만들기
cd /home/ubuntu/airflow
sudo mkdir dags
# 서비스파일 만들기
cd /etc/systemd/system
sudo vi airflow-webserver.service
-------------------------------------------------------
# airflow-webserver.service 입력
[Unit]
Description=Airflow webserver daemon
After=network.target mysql.service
wants=mysql.service
[Service]
Environment="PATH=/home/ubuntu/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
User=ubuntu
Group=ubuntu
Type=simple
ExecStart=/home/ubuntu/venv/bin/airflow webserver -p 8080
Restart=on-failure
RestartSec=5s
PrivateTmp=true
[Install]
WantedBy=multi-user.target
user, group은 따로 유저를 만들지 않은 이상, 호스트네임으로 설정
execStart는 webserver를 실행 시킬 수 있는 airflow모듈이 있는 위치를 지정하여 webserver 실행 명령어를 적어놓는다.
-------------------------------------------------------
-------------------------------------------------------
sudo vi airflow-scheduler.service
[Unit]
Description=Airflow webserver daemon
After=network.target mysql.service
wants=mysql.service
[Service]
Environment="PATH=/home/ubuntu/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
User=ubuntu
Group=ubuntu
Type=simple
ExecStart=/home/ubuntu/venv/bin/airflow scheduler
Restart=on-failure
RestartSec=5s
PrivateTmp=true
[Install]
WantedBy=multi-user.target
-------------------------------------------------------
데몬 재실행
sudo systemctl daemon-reload
서버 실행시 자동 시작
sudo systemctl enable airflow-webserver
sudo systemctl enable airflow-scheduler
서비스 시작
sudo systemctl start airflow-webserver
sudo systemctl start airflow-scheduler
서비스 상태 확인
sudo systemctl status airflow-webserver
sudo systemctl status airflow-scheduler
서비스가 열릴거에요.
참고: https://spidyweb.tistory.com/349
gpt
'Dev Ops > Airflow' 카테고리의 다른 글
[Airflow 시리즈] Example DAG 삭제 (0) | 2024.10.15 |
---|---|
[Airflow 시리즈] AWS Server 구성 (1) | 2024.10.14 |
[Airflow] 설치 1.10버전 (0) | 2022.07.26 |