서버 모니터링과 메시 네트워크
CreateYourVPN이 서버 상태를 어떻게 지켜보는지: 자가 점검, 서버 간 상호 점검을 하는 메시 네트워크, 그리고 접속 불가능한 서버를 사용자에게 자동으로 숨기는 방식.
서버는 가장 최악의 순간에 여러분을 실망시킬 수 있습니다: 서비스가 죽거나, 호스팅 업체가 머신을 재시작하거나 — 더 나쁘게는, 특정 국가에서 서버가 차단되어 기술적으로는 살아 있어도 접속이 안 되는 상태가 될 수도 있습니다. 사용자는 이런 일을 절대 눈치채면 안 됩니다. 이번 강의에서는 CreateYourVPN이 서버를 어떻게 지켜보는지, 그리고 서버에 문제가 생기면 어떤 일이 일어나는지 다룹니다.
두 겹의 점검
시스템은 모든 서버를 두 가지 관점에서 바라봅니다.
1. 서버가 스스로를 점검한다
몇 분마다 한 번씩 각 서버가 상태를 보고합니다: 443번 포트의 트래픽 리스너가 살아 있는지, VPN 서비스가 실행 중인지. 3강에서 다룬 메트릭도 같은 보고와 함께 도착합니다. 보고 내용이 "몸이 안 좋다"면 서버는 "서버 이용 불가" 상태가 됩니다. 보고 자체가 아예 끊기면 상태는 **"서버에서 데이터 없음"**이 됩니다 — 이 경우 머신이 꺼져 있거나 네트워크가 끊겼을 수 있습니다.
2. 서버들이 서로 "문을 두드린다"
자가 점검으로는 가장 교묘한 경우를 잡아낼 수 없습니다: 서버 자신은 건강하다고 믿지만, 외부에서는 접속이 안 되는 경우입니다 — 예를 들어 해당 서버의 IP가 차단된 경우입니다. 그래서 여러분의 모든 서버는 상호 점검 메시 네트워크로 연결되어 있습니다: 각 서버는 주기적으로 모든 이웃 서버에 접속을 시도합니다 — 사용자의 앱이 접속하는 것과 똑같은 방식으로요.
여기서부터는 "투표"가 작동합니다.
- 한 번의 접속 실패는 아무 의미가 없습니다 — 그저 네트워크가 잠깐 흔들렸을 수도 있으니까요. 오직 지속적으로 이어지는 실패만 의미를 가집니다.
- 서버가 "내 서버에서 접근 불가" 상태로 표시되는 것은 여러 개의 독립적인 서버가 일관되게 접속에 실패했을 때뿐입니다 — 서버 한 대의 의견만으로는 판정이 내려지지 않습니다.
- "신뢰할 수 없는 증인"에 대한 보호 장치도 있습니다: 어떤 서버가 갑자기 이웃의 절반을 볼 수 없다고 주장한다면, 문제는 십중팔구 그 서버 자신에게 있는 것이므로 그 서버의 투표는 무시됩니다.
바로 이 구조가 차단을 잡아냅니다: 만약 어떤 서버가 여러분의 다른 서버들이 위치한 나라에서 차단당하면, 그 나라에 있는 이웃 서버들이 빠르게 접속에 실패하기 시작하고, 정족수가 채워지면 시스템은 그 서버를 접근 불가로 표시합니다. 한편 차단이 없는 나라의 서버들은 계속 정상적으로 접속에 성공하며, 이 의견 차이 덕분에 상황이 명확하게 드러납니다.
문제가 있는 서버에는 무슨 일이 일어나는가
이 상태들은 곧바로 부하 분산에 반영됩니다: "서버 이용 불가"와 "내 서버에서 접근 불가" 상태의 서버는 순환에서 제외됩니다 — 새 연결이 그쪽으로 가지 않으며, 사용자 구독에서는 같은 라우트에 있는 정상 서버가 그 자리를 대신합니다.
동시에 시스템은 신중하게 동작합니다 — "해를 끼치지 않는다"는 원칙 위에서 만들어졌습니다.
- 라우트가 완전히 비게 되는 일은 없습니다. 어떤 라우트의 모든 서버가 "문제 있음"으로 판정되더라도, 시스템은 빈 목록을 보여주는 대신 그나마 가장 나은 옵션을 사용자에게 제공합니다 — 그렇지 않으면 앱이 서버가 아예 사라졌다고 판단해 목록에서 지워버릴 수 있기 때문입니다.
- 침묵은 판정이 아닙니다. "서버에서 데이터 없음" 상태는 그 자체만으로는 서버를 순환에서 제외하지 않습니다: 최신 데이터가 없으면 시스템은 섣부른 행동을 하지 않습니다.
모든 것은 스스로 치유됩니다
어떤 상태도 영구히 "고정"되지 않습니다 — 상태는 항상 최신 데이터로부터 다시 계산됩니다.
- 서버가 다시 정상 보고를 보내면 → "서버 이용 불가" 상태가 해제됩니다;
- 이웃 서버들이 다시 접속에 성공하기 시작하면 → 실패 카운트가 초기화되고 "내 서버에서 접근 불가" 표시가 사라집니다;
- 보고가 재개되면 → "서버에서 데이터 없음" 표시가 사라집니다.
서버를 고치거나(혹은 차단이 풀리기를 기다리거나) 하면 — 서버는 스스로 다시 서비스에 복귀합니다. 수동으로 "다시 켜기"를 할 필요가 없습니다.
패널의 어디에서 확인할 수 있는가
아무 사용자의 카드를 열어 그 사용자의 서버 목록을 확인하세요: 각 서버 옆에 상태 표시 점이 있고, 문제가 있을 때는 이유가 적힌 캡션이 함께 표시됩니다: "서버 이용 불가", "내 서버에서 접근 불가"(여러분의 서버 중 몇 대가 접속할 수 없는지 포함), 또는 "서버에서 데이터 없음". 서버 카드에서도 간접적인 신호를 볼 수 있습니다: 메트릭에 붙는 "오래된 데이터" 배지와 "데이터 없음 — 에이전트가 응답하지 않습니다".
메시 점검은 매우 검소하게 이루어집니다: 하루 사용량에 엄격한 상한이 걸린 아주 작은 프로브 접촉일 뿐이라, 여러분 서버의 트래픽이나 성능에 전혀 영향을 주지 않습니다.
핵심 요약
- 두 겹의 통제: 서버가 스스로를 점검하고, 메시 이웃 서버들이 외부에서 그 서버를 점검합니다.
- 차단은 여러 서버의 "투표"로 잡아냅니다 — 한 번의 일시적 문제로는 소동이 일어나지 않습니다.
- 문제가 있는 서버는 순환에서 빠지고, 사용자는 조용히 정상 서버로 옮겨집니다.
- 모든 것은 스스로 치유됩니다: 서버가 되살아나는 순간 자동으로 다시 합류합니다.
다음으로
인프라는 스스로 고치는 법을 알고 있지만, 따로 지켜야 할 것이 하나 있습니다 — 바로 여러분의 사용자 기반입니다.