[ CS / Network ] DNS Round Robin

황승환·2022년 2월 3일
0

CS

목록 보기
25/60

DNS


DNS Round Robin에 대해 알아보기 이전에 먼저 DNS가 무엇인지 간단하게 짚고 넘어갈 필요가 있다. DNS란 Domain Name System의 약자로 IP 네트워크에서 사용하는 시스템이다. URL 상에서 영문을 사용해 원하는 사이트에 접속하게 되는데 이때 URI, 즉 Domain Name은 해당 사이트의 실제적인 IP 주소를 가리켜야 한다.

이에 대한 예시로 구글에 접속을 원한다면, 원칙적으로 사용자는 구글의 실제 IP 주소를 입력하여 접속해야 한다. 그러나 우리는 일반적인 대명사로 google.com을 이용하여 접속한다. 이때 DNS 서버는 google.com이 가리키는 IP를 브라우저에게 반환한다. 정리하면 DNS 서버는 웹 서버 주소에 해당하는 IP 주소 테이블을 가지고 있는 서버라고 할 수 있다. 다음은 DNS 과정이다.

  • DNS Query
    DNS 서버에서 Domain Name을 이용하여 IP를 받아온다. 이떄 DNS에 접속하는 유저에 대해서 Round Robin 방식으로 IP를 할당한다.
  • IP Communication
    IP를 받아온 유저는 요청 메세지 발송을 통하여 정상적으로 네트워크 통신을 실시한다.

DNS Round Robin

Round Robin이란 DNS 구성 방식 중 하나이다. Domain에 대한 IP 요청 쿼리 시 Round Robin 방식으로 IP를 반환한다.

Round Robin 이란 시분할 시스템을 위해 설계된 선점형 스케줄링 방식 중 하나로, 프로세스들 사이에 우선순위를 두지 않고 순서대로 시간 단위(Time Quantum)로 CPU를 할당하는 방식의 CPU 스케줄링 알고리즘이다. 각 프로세스에 일정 시간을 할당하고, 할당된 시간이 지나면 그 프로세스는 잠시 보류한 뒤 다른 프로세스에게 기회를 주고, 또 다음 프로세스에게 기회를 주는 식으로 반복되는 운영 방식이다.

예를 들어, a, b, c라는 길이 3의 프로세스가 동시에 존재할 때에 Round Robin은 이를 Time Quauntum으로 나눠 a-b-c-a-b-c-a-b-c 순으로 CPU를 할당한다.

Round Robin 방식의 문제점

1. 서버의 수만큼 공인 IP 주소가 필요하다.

부하 분산을 위해 서버의 대수를 늘리기 위해서는 그만큼의 공인 IP가 더 필요해진다.

2. 균등하게 분산되지 않는다.

모바일 사이트 등에서 문제가 될 수 있다. 스마트폰의 접속은 캐리어 게이트웨이라는 프록시 서버를 경유하게 된다. 프록시 서버는 이름 변환 결과가 일정 시간동안 캐싱되기 때문에 같은 프록시 서버를 경유하는 접속은 항상 같은 서버로 접속된다. 또한 PC 용 웹 브라우저도 DNS 질의 결과를 캐싱하기 때문에 균등하게 분산되지 않는다. DNS 레코드의 TTL 값을 짧게 설정하여 어느정도 해소할 수 있으나 TTL에 따라 캐시를 해제하는 것은 아니기 때문에 주의해야 한다.

3. 서버가 다운되도 확인이 불가능하다.

DNS 서버는 웹 서버의 부하나 접속 수 등의 상황에 따라 질의 결과를 제어할 수 없다. 웹 서버의 부하가 높아져 응답이 느려지거나 접속 가능 수가 꽉 차 접속 처리를 할 수 없는 경우인지를 감지할 수 없기 때문에 어떤 원인으로 다운되더라도 이를 검출하지 못하고 유저들에게 그대로 제공된다. 이 때문에 유저들은 간혹 다운된 서버로 연결되기도 한다. DNS Round Robin은 부하분산을 위한 방법일 뿐, 다중화 방법이 아니기 때문에 다른 SW와 조합하여 관리할 필요가 있다.

Round Robin 단점 해소 DNS 스케줄링 알고리즘

Weighted Round Robin (WRR, 가중치 편성 방식)

각각의 웹 서버에 가중치를 가미하여 분산 비율을 변경한다. 물론 가중치가 큰 서버일수록 빈번하게 선택되므로 처리 능력이 높은 서버는 가중치를 높게 설정하는 것이 좋다.
(성능이 좋은 서버에 부하를 더 부여하여 전체적인 흐름을 관리)

Least Connection (최소 연결 방식)

접속 클라이언트 수가 가장 적은 서버를 선택한다. 로드 밸런서에서 실시간으로 connection 수를 관리하거나 각 서버에서 주기적으로 알려주는 것이 필요하다.
(그때 그때 가장 적은 일을 하고 있는 서버에 부하를 부여하여 전체적인 흐름을 관리)

Synchronous Time-Division Multiplexing (다중화 구성 방식)

AP 서버에 VIP(Virtual IP, 가상 IP)를 부여하여 다중화를 구성한다. 각 AP 서버의 Health Check 후 이상이 감지되면 VIP를 정상 AP 서버로 인계하는 방식이다. 즉 DNS Server Table에 실시간으로 AP 서버의 상태를 확인할 수 있는 컬럼 및 함수를 추가하여 요청될 경우 서버 상태를 확인하여 우회루트를 제공하거나 에러를 전송하는 방식이다.
(그때 그때 문제가 없는 서버에 부하를 부여하여 전체적인 흐름을 관리. 만약 문제가 있는 서버가 존재한다면 우회루트를 제공하여 다른 서버로 부하를 부여)

  • AP 서버: Application Server
    네트워크가 연결되어 있다면 네트워크를 통해 서버와 EndPoint 간의 통신을 할 수 있는 Server. HTTP, TCP, UDP 등 다양한 프로토콜을 전달받아 클라이언트에게 다양한 서비스를 제공한다.
profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글