DNS Round Robin

DNS roudn robin에 대해 알아보기 전에 먼저 로드 밸런싱round robin에 대해 알아보자.

로드 밸런싱

클라이언트가 인터넷을 통해 서버에 접속하고자 할 때, 많은 양의 요청이 한번에 서버에 들어오게 되면 과부하가 생길 수 있다. 이를 방지하기 위해 트래픽을 관리해야 하는데 이 방법에는 크게 두 가지가 있다.

  • 서버 성능 향상(Scale Up)
  • 트래픽 분산(Scale Out)

어떤 동네에 아파트 한 채가 있고, 더 많은 가구를 수용하고 싶을 때 scale up은 기존의 아파트에 몇 층을 더 쌓는 것이고 scale out은 아파트를 새로 짓는 것이라고 생각하면 된다.

서버 성능 향상은 말 그대로 서버 자체의 성능을 향상시키는 것이다. 더 비싸고 좋은 서버를 쓰면 된다.

트래픽 분산은 트래픽을 여러대의 서버로 분산시키는 방법을 말한다. 혼자서 트래픽을 전부 감당하지 않아도 되니 비싼 서버를 쓸 필요도 없고, 더 많은 트래픽을 감당할 수 있다.

로드 밸런싱이 바로 트래픽 분산 방법이다.
이름에서도 알 수 있듯이 로드 밸런싱은 부하를 여러 곳으로 나누어 적절히 균형을 유지하는 것이다.


Round Robin

라운드 로빈FCFS(First Come First Service) 스케줄링을 기반으로 하여 CPU를 할당하되, 각 프로세스는 한 번에 쓸 수 있는 CPU 시간 크기 즉, 시간 할당량이 지나면 시간 종료 인터럽트에 의해 CPU를 뺏기게 되는 선점 방식이다. CPU를 반환한 프로세스는 준비 큐의 맨 끝으로 이동해서 다시 자기 차례가 될 때까지 기다리고, 큐의 맨 앞에 있던 애가 CPU를 할당받게 된다.


DNS Round Robin

DNS 라운드 로빈은 별도의 소프트웨어 혹은 하드웨어 로드밸런싱 장비를 사용하지 않고, DNS만을 이용하여 트래픽을 분산하는 기법이다.

사용자가 브라우저에 도메인 네임을 입력하면 DNS가 여러 개의 서버 IP 중 하나를 라운드 로빈 방식으로 선택하여 사용자에게 알려주는 것이다. 라운드 로빈 DNS 서버의 IP 주소는 마치 야구 타자 선수들이 각 차례가 끝나면 줄의 뒤쪽으로 이동하는 것과 같다.

장점

  • 중간 장비(ex. 로드밸런서)가 필요없음
  • 비용이 적고 간편함

단점

  • 서버 장애 탐지 어려움
    서버 중 하나가 다운되더라도 DNS 서버는 해당 서버의 IP를 라운드 로빈 방식으로 유지한다. 따라서 서버가 6대이고 한 대가 오프라인으로 전환되면 특정 사용자는 다운된 서버로 연결되어 서비스가 거부된다.

  • 균등한 분산이 어려움
    일부 고급 라운드 로빈 서비스는 응답하지 않는 서버를 감지하여 라운드 로빈 순환에서 제거할 수 있다. 하지만 캐싱 문제를 해결할 방법이 없다. DNS는 결과를 캐싱하기 때문에 동일한 요청에 대해서 항상 동일한 IP 주소로 접속하게 되고, 따라서 균등한 부하 분산이 어렵다.

    캐싱 문제를 현실에 빗대어 생각해보자. 지하철로 여의도를 가고자 할 때, 여의도를 가기 위해서는 5호선 또는 9호선을 이용할 수 있다. 그리고 나는 최근에 9호선으로 여의도를 갔다온 경험이 있다고 해보자.

    만약 현재 9호선이 열차 문제로 지연되고 있다면, 5호선으로 돌아가는 편이 나을 것이다. 하지만 그럼에도 나는 9호선을 이용할 것이다. 왜냐? 내 머리가 로컬 DNS 서버라고 한다면, 나는 여의도로 갈 수 있는 노선을 9호선으로만 기억(캐싱)하고 있기 때문!


DNS Scheduling Algorithm

DNS 라운드 로빈 방식의 단점을 해결하는 몇 가지 스케줄링 기법이 있다. 대표적인 두 가지만 알아보자.

WRR(Weighted Round Robin)

전체적인 방식은 라운드 로빈과 유사하지만, 각 서버에 가중치를 두어 분산 비율을 결정한다. 가중치가 클수록 자주 선택되기 때문에 처리 능력이 높은 서버에 높은 가중치를 설정하는 것이 좋다.

Least Connection

접속 클라이언트 수가 가장 적은 서버를 선택한다. 따라서 로드밸런서에서 실시간으로 connection 수를 관리하거나 각 서버에서 주기적으로 알려주는 것이 필요하다.


References