---
title: 미러서버를 운영하면서...
date: 2023-10-23T09:45:50.000Z
slug: operating-mirroring-server
description: operating-mirroring-server
---
학교 둥하교때마다 짬내서 적은거라 비문이 많다..



미러링 서버를 만든게 21년 말에 학교에서 우분투 깔다가 너무 오래걸려서 짜증나서 만든거였는데, 그게 서버 업그레이드도 몇번 거치고 다른것들도 추가하고 하니까 사이즈가 많이 커졌다. 작년까지 에러도 자주나고 그랬는데 이제야 안정적으로 운용할 정도의 수준은 된 것 같다.

미러 Sync하는 스크립트를 옛날 단순하게 적었던걸 그대로 쓰고 있다. Path도 지정 못하고 Configurability도 현저히 떨어져서 새로 짜야겠다고 생각은 했는데, 그래서 최근에 ***[reposync](https://git.morgan.kr/morgan/reposync)*** 라고 아에 다시 만들었다. 근데 이게 미러링 사이즈가 18TiB정도 되니까 이걸 테스트 해보기가 겁나더라.. 게다가 라이브로 뭔가 꼬여버리면 여기저기서 큰일이 나니까 Consistency가 중요한 바람에 테스트도 못하고 그냥 방치하고 있다.

미러링 하는 서버가 NFS로 마운트하는 방식이라 비슷하게 다른 서버에서 Overlay로 설정해서 테스트를 해보기는 했다. 그때는 딱히 큰 문제가 없었지만 나중에 실제 돌릴때 혹여나 예상하지 못한 곳에서 문제가 생기면 많이 골치아파진다. 지금 쓰고 있는 스크립트는 1년 넘게 달 돌아가고 있으니 말이다. 단순히 YAML로 된 Config를 읽어서 Rsync로 동기화 한 뒤에 Index만 업데이트하면 되는 스크립트라 복잡한건 없는데, 여기저기 예상치 못한 곳에 에러가 나는 바람에 에러 핸들링에 꽤 애를 먹었다.

그래도 이거 만지면서 꽤 많은걸 배웠다. 물론 서버 만지면서 리눅스는 뭐.. 그렇고 (애초에 노트북이 리눅스라..) 쉘스크립트랑 템플릿팅이랑 웹 사이트 정적 디자인도 몇몇개 알게 되었고,, 특히 뭐랄까 개발 외적으로 책임감?도 약간은 느끼게 된듯 하다.. 내 서버가 잠깐 문제생기면 여기저기서 문제가 터지고 수습하는것도 꽤 힘드니까 말이다..

아 맞다, 오늘 Kali 리눅스 공식 미러에 추가되었다. 일주일쯤 전에 트친분께서 Kali 미러가 너무 느리다고 하셔서 확인 해봤는데, 한국에 없어서 대만이랑 일본에서 가져오는거 아니던가.. 한국 인터넷이 바다 건너면 속도가 1/4토막이 나는 바람에 심각하게 느리겠다 싶었다. 그래서 Kali 미러링 공식 문서를 읽어 봤는데, 다른 미러는 보통 4시간에 한번 이렇게 시간으로 동기화를 하는데 요거는 SSH Pushing을 쓰는 것이었다. 동기화가 필요할 때 (메인 미러가 업데이트 되고 나서) SSH로 각 서버에 신호를 보내 동기화를 하는 방식이다. 

SSH를 Kali 서버로만 열고, Authorized Keys 파일에 Public Key와 "command="를 입력해 두면 그 키로 인증한 클라이언트는 정해진 "command="가 실행된 환경만이 주어진다. 물론 Kali에서 제공한 스크립트도 다 오픈되어 있는 스크립트이고, 나도 한번 확인해본 스크립트지만 여튼 SSH를 타인에게 연다는 게 약간 걱정이 되었다. 아무래도 서버 권한을 남에게 주는거니까 혹여나 그쪽 PrivKey가 유출이 되거나 하면 문제가 되니까 찜찜하기는 했는데,  뭐 별 수 없다 싶었다. 

이것도 그쪽에서 도메인이 아니라 IP로 고정해둬야 하는 방식이듯 해 Dynamic IP는 안된다고 했는데, 이거는 VPS에 연결해서 SSH Shim 비슷하게 설정하는걸로 해결했다. VPS IP는 고정이니까 그 서버를 거쳐서 내 로컬 서버로 들어오게 설정해놨다. 이렇게 하는 바람에 이제 VPS가 Dependency로 남아버렸다. 내가 서버를 아마 앞으로 평생 해놓을 것 같으니 저 IP도 평생 달에 5불씩 내면서 유지를 해야한다. 이것 이외에는 값싸게 고정 퍼블릭 IP를 받을 방법이 없다. 데이터센터는 트래픽이 너무 비싸고, 트래픽이 싸더라도 로컬 NFS를 써야하니까 실제 서빙 대역폭의 두배가 필요하다. 계산해 보니 달에 평균적으로 14-15TiB정도 쓰는데, 이거 VPS에서는 한 5-60불이라 부담이 좀 된다.

아웃바운드 트래픽이 14-15TiB나 되니 ISP에  헤비업로더로 등록?된듯 하다. 아무래도 가정용 회선을 써야 하니까 ISP의 제한을 조금 받는데, 가끔 DHCP도 안주고 레이턴시도 늘어지고 해서 짜증이 난다. 근데 어차피 아웃바운드는 한 80%가 국내니까 어차피 ISP 내부 망 안일텐데, 이러면 왜 굳이 제한을 하는건지 잘 모르겠다. 솔직히 국내 ISP는 국내에서라도 QoS를 없애야 하지 않나 싶다. 150GiB는 요즘같은 시대에 너무 적은 용량이다.

초기에는 많은 사람들이 쓰지는 않아서 왜 굳이 아무도 안쓰는 서버를 계속 켜놓을까 생각이 들었는데, 요즘 들어 몸집도 커지고 트래픽도 팍팍 올라가니 할 맛이 난다. 특히 외부에 있는 다른 머신에서 (학교에 설치되어 있는 우분투라던지) 내 서버가 보이면 정말 기쁘다. 처음에는 커뮤니티를 위해서 하는거 보다는, 취미로 하는 부분이 컸는데, 지금은 커뮤니티에 조금이나마 보탠다는 생각이 좀 강해졌다. 물론 아직도 내 유일한 취미는 서버 운용과 오픈소스 기여다. 요새 프로그램을 만드는거에 노하우도 생기고 해서 꽤 완성도 있는 결과물도 많아졌다.

이제 남은 해보고 싶은 거는.. 러스트를 배우는거다.. 뭐랄까 내 머리는 C에 테일러되어 있어서 말이지, 러스트의 엄격함에 원초적인 거부감이 든다. 항상 C의 자유도를 바탕으로 꼼수를 쓰는 방식을 꽤 애용해서 그런지 마음대로 못하는 러스트는 별로다.. 그래도 C의 Proceeder기도 하고, 또 메모리 보호는 필요불가결한 부분이니까 적응해 나가야지 싶다.

카이스트 미러는 있는데 왜 우리 학교는 미러를 안하지.. 동아리방 가보니까 안쓰는 서버 있더만 그걸로 미러서버라도 돌려줘요~