DTP에 대해서 알아보기
DTP는 DSYNC만의 독특한 파일 전송 방식입니다. 우리가 미러를 만들기 위해 흔히 사용하는 rsync도 매우 훌륭한 동기화 수단이지만, 모든 미러가 여러분과 동일한 환경으로 구성되어 있지 않습니다. 때문에 동기화 실패 문제를 겪는 경우가 종종 있습니다.
DTP는 이러한 문제를 개선하기 위해 ROKFOSS팀에서 만든 파일 전송 시스템입니다. 만약 여러분이 DSYNC를 사용하여 미러를 구축하였다면, 다른 미러 운영자 또는 새로운 미러 운영자를 위해서 DTP 호스트가 되어 빠른 미러 구축을 도울 수 있습니다.
DTP가 파일을 전송하는 방식
DTP는 rsync와 다르게 data.dsync라는 파일 목록이 작성된 파일을 이용하여 파일을 받아오려는 상위 미러와 내 미러간의 차이점을 확인하고 변경 사항이 있을 때만 동기화를 하게 됩니다. 덕분에 파일 변경점을 비교하는데에 평균 2초 정도 소요됩니다.
만약 상위 미러와 차이점이 발견된다면 그 즉시 DTP는 상위 미러로부터 파일을 받아오게 됩니다. DTP는 이때 한번의 50개의 연결을 생성하여 각 연결당 하나씩 파일을 병렬로 받아오게 됩니다.
이러한 작동 방식 때문에 동기화에 걸리는 시간은 줄어들게 되며 빠르게 동기화 작업을 마칠 수 있습니다. 다만 상위 미러가 대역폭이 나보다 낮은 경우에는 해당 미러의 네트워크를 모두 끌어다쓰게 되므로 해당 미러의 운영자와 상의 후에 동기화 작업을 진행하는 것이 좋습니다.
호스트가 되는 방법
DTP 호스트가 되는 방법은 매우 간단하지만, 아래 조건을 만족하는 환경인지 꼭 확인하고 진행해주시길 바랍니다.
네트워크 조건
- 500Mbps 이상의 속도를 낼 수 있어야 합니다.
- 비대칭이 아니여야 합니다.
성능 조건
서버는 N100과 같은 저전력 CPU를 사용하지 않아야 하고 최소 8코어 이상의 AMD, Intel CPU를 사용해야 합니다.
저전력 모델은 심각하게 서버에 성능 문제를 일으킵니다.
예를 들어서 AMD는
- 라이젠 3000번 이후의 8코어 이상 프로세서여야 합니다.
예를 들어서 Intel은
- 10세대 이후 8코어 이상 프로세서여야 합니다.
위 조건을 만족하는 환경이라면 DTP 호스트가 되기 위한 필수 조건을 갖춘 것입니다. 다음 단계를 진행해도 좋습니다!
권한 확인하기
DSYNC를 실행 중인 계정이 root인지 확인하세요. 보통은 root를 권장합니다. 비root 사용자 계정인 경우 직접 -service옵션으로 서비스를 시작하거나 외부 플러그인을 사용해야 합니다.
외부 플러그인의 경우 이 플러그인을 사용하는 것을 권장합니다. 환경에 따라 작동하지 않을 수 있습니다.
xync.conf 수정하기
이제 xync.conf를 열어서 수정해야 합니다.
파일의 위치는 ~/dxync/xync.conf에 있습니다. 이 파일을 열고 다음과 같은 내용을 찾아주세요.
webroot=
이 부분을 찾았다면 값으로 실제 저장소들이 존재하는 디렉터리 경로를 입력합니다. 여기서는 예시로 /mirrors/라고 정하겠습니다.
webroot=/mirrors
위와 같이 입력한 뒤에 저장하세요.
DTP 서비스를 먼저 실행해보기
-service 명령어로 DTP 서비스를 먼저 실행해주세요. 다음의 경로가 생기게 됩니다. ~/dxync/dtp
이 경로에는 DTP 서비스 동작을 위한 핵심 설정파일이 포함됩니다.
- list.conf
- firewall.conf
- motd.conf
각 파일은 다음과 같은 역할을 수행합니다.
list.conf
이 파일은 DTP 이용자에게 제공할 폴더를 나열하는 곳입니다. 예를 들자면 다음과 같이 작성할 수 있습니다.
/kali
/kali-images
/ubuntu
이 값은 앞서 입력했던 webroot=값을 따릅니다. 즉 위와 같이 입력하면 /mirrors/kali를 의미하게 됩니다.
이 파일을 수정하였다면 -reload옵션을 붙여 DSYNC를 실행하세요.
firewall.conf
이 파일은 접속을 제한하는 역할을 합니다. 원치 않는 사용자에게 대역폭을 낭비하는 것을 방지할 수 있습니다.
기본적으로 접속제한이 없으며 별도로 설정해야 합니다.
allow=123.123.123.123, 222.222.222.222, 111.111.111.11
위와 같이 입력하고 저장하면 입력한 아이피들만 접속할 수 있으며 목록에 없는 아이피는 어떠한 응답도 받지 못하게 됩니다.
이 파일을 수정하였다면 -reload옵션을 붙여 DSYNC를 실행하세요.
motd.conf
DTP 환영 메시지를 정하는 파일입니다. 기본값은 /etc/rsyncd.conf를 호출합니다. 만약 이 파일이 없다면 아무 환영 메시지도 나오지 않습니다!
이 파일을 열면 다음과 같이 설정할 수 있습니다.
경로=/rokfoss-mirror/dxync/dtp/welcome.motd
경로값은 의도된 한국어입니다. 오타가 아닙니다!
이 파일을 수정하였다면 -reload옵션을 붙여 DSYNC를 실행하세요.
data.dsync 파일 생성하기
이제 data.dsync 파일을 생성하여야 합니다. 이 파일이 없으면 접속자는 아무런 동기화를 수행하지 못하게 됩니다!
먼저 DTP 서비스에서 제공하고자 하는 각 저장소 파일을 열어주세요.
이곳에서는 예시로 rocky.conf를 열었다고 가정해보겠습니다.
repo=rocky
save=/mirrors/rocky
이제 이곳에서 다음의 한줄의 값을 넣어주세요.
dsync=true
그럼 최종적으로 다음과 같이 구성됩니다.
repo=rocky
save=/mirrors/rocky
dsync=true
이제 설정파일을 저장하세요. 만약 추가로 바꿔야할 파일들이 있다면 해당 파일들에도 동일하게 수정해주세요.
모든 수정이 끝났다면 이제 이 옵션을 주고 data.dsync 파일을 생성하도록 합니다.
-gendsync
디스크 성능에 따라서, 서버의 부하에 따라서 이 파일을 만드는데에 걸리는 시간은 매번 다릅니다. 충분한 여유를 가지세요!
각 저장소별 data.dsync 설정 파일 생성이 끝났다면 이제 거의 다 왔습니다!
확인하기
이제 최종적으로 서비스를 시작하기 위해 다음과 같이 진행합니다.
dsync -stop-service
dsync -service
아무런 오류 없이 잘 끝났다면 다음의 명령어를 통해 포트를 확인하세요. netstat -antl
tcp/47921이 보인다면 서비스가 정상적으로 실행 중인 것입니다! 만약 앞에 공유기가 있거나 방화벽이 있다면 꼭 해당 포트를 개방하여야 합니다.
시스템 시작 시 자동으로 서비스 시작하기
매번 시스템 부팅/재부팅 후에 서비스를 시작하는 것은 번거로운 일입니다. 앞서 root 권한을 요구했던 것도 이 작업을 수월하게 진행하려면 root 권한이 필요하기 때문입니다.
dsync -startup
이제 서비스가 등록되었습니다! 만약 앞에 있던 과정을 모두 같이 해왔다면, 다음의 작업을 해줘야 원활한 서비스 제공이 가능합니다.
dsync -stop-service
systemctl start dsync-dtp.service
모두 완료되었습니다! 새로운 DTP 호스트가 되었습니다!
DTP 호스트임을 알리기
미러 사이트 메인 페이지 또는 ROKFOSS 커뮤니티에서 새로운 DTP 호스트가 되었음을 알려서 다른 미러 운영자 또는 신규 미러 운영자들이 이용할 수 있도록 해주세요.