티스토리 뷰
보통은 데이터를 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/
'OS > linux' 카테고리의 다른 글
[centos] swap 메모리 클리어 하는법 - 프로세스가 자꾸 죽는다면 체크! (0) | 2023.07.26 |
---|---|
[centos] kinit client 미설치 상황일때 설치방법 (0) | 2023.07.20 |
snap install 실패 문제 - system does not fully support snapd (0) | 2022.08.11 |
[명령어] 파일 생성일 기준으로 이전 파일 지우기 - 리눅스 쉘 명령 (0) | 2021.11.26 |
리눅스에서 PC로 파일옮길때 유용한 팁 - SimpleHTTPServer (0) | 2021.11.25 |