티스토리 뷰

반응형

보통은 데이터를 pull 해오는 케이스가 많은데, 어짜다보니 데이터를 각 서버로 push 해줘야하는 상황이 생겼다.

쉽게 생각해서 1개의 서버에서 다른 서버에 데이터를 쏴주는 상황을 생각하면 된다. 인터넷에 보면 Xinetd 패키지가 필요하다고 설명되어있는데 내가 테스트해본 결과 이 패키지는 필요없었고, rsyncd 데몬만 서비스로 띄우면 잘 동작했다.

 

내가 이게 필요했던 이유는, airflow 의 DAG 를 여러 서버에 동기화 해주는 과정이 필요했기 때문이다.

 

설정방법

모든 서버에  /etc/rsyncd.conf 설정파일과 rsyncd 데몬이 떠있는지 체크해야한다.

 

rsync 를 통해 업로드를 하는것이므로, read only 는 no 가 되어야한다.

그리고 업로드할 경로를 path 에 지정하고, hosts allow 는 복사대상 서버의 ip 를 의미한다.

 

 /etc/rsyncd.conf

..생략..

[dag]
path = /home/airflow/dags
comment = airflow dag target 
uid = airflow
gid = airflow 

use chroot = no
read only = no
hosts allow = 10.0.0.1, 10.0.0,2, 10.0.0.3, 10.0.0.4
max connections = 3
timeout = 600

rsyncd 데몬확인

우선 rsyncd 데몬이 잘 떠있나 확인해보자. 안떠있다면 rsync 명령을 날려도 복사를 받아주지 못한다.

그렇기 때문에 상태확인해보고, 설정파일을 구성후 데몬을 기동한다. 이때 모든 서버에 설정을 구성하고 재기동되어야 한다.

$ sudo sudo systemctl status rsyncd
● rsyncd.service - fast remote file copy program daemon
   Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
   
# ---------------------------------
# /etc/rsync.conf 를 수정했다고 가정한다.
# ---------------------------------
$ sudo systemctl restart rsyncd

$ sudo systemctl enable rsyncd
Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.

$ sudo systemctl status rsyncd
● rsyncd.service - fast remote file copy program daemon
   Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2023-04-21 14:49:09 JST; 12s ago
 Main PID: 3896 (rsync)
   CGroup: /system.slice/rsyncd.service
           └─3896 /usr/bin/rsync --daemon --no-detach

복사하기

10.0.0.1 서버의 /home/airflow/deploy/dags/의 파일을 모든서버에 배포하는 최종명령어이다.

이 명령어에서 "10.0.0.2::dag/" 에서 dag 값음   /etc/rsyncd.conf 에 있는 [dag] 이름을 의미한다.

즉, rsyncd.conf 의 설정에 정의한 이름을 의미하고, 해당 경로는 path 설정에 지정한 경로가 된다.

# ----------------------------------------
# source : (현재서버) /home/airflow/deploy/dags/* 
# target : (모든서버) /home/airflow/dags
# ----------------------------------------
rsync -avz /home/airflow/deploy/dags/* 10.0.0.1::dag/
rsync -avz /home/airflow/deploy/dags/* 10.0.0.2::dag/
rsync -avz /home/airflow/deploy/dags/* 10.0.0.3::dag/
rsync -avz /home/airflow/deploy/dags/* 10.0.0.4::dag/
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함