DNS Round Robin 방식
DNS Round Robin 방식이란?
DNS Rond Robin은 클라이언트가 요청을 보내기 위해 DNS에 요청을 받을 서버의 IP를 요청할 때, DNS에서 각 서비스의 서버에 해당하는 IP 를 round robin으로 제공해주는 방법이다.
즉 하나의 도메인에 여러개의 공인IP 가 맵핑되어 있고, DNS query에 대한 응답으로 여러 공인 IP들을 round robin 방식으로 응답하는 방법을 의미한다.
💡 DNS Round robin은 별도의 소프트웨어 혹은 하드웨어 로드밸런싱 장비를 사용하지 않고도, DNS서비스를 이용하여 도메인 레코드 정보를 조회하는 시점에서 트래픽을 분산하는 기법이다.
웹 뿐만 아니라, 도메인을 사용하는 모든 서비스 - FTP, SMTP, 등 -에서 사용 가능하다.
동작 원리
웹 서버로 예를 들면, 웹 서비스를 담당하는 여러 대의 웹 서버는 각각 공인 IP 를 가지고 있다. 웹 사이트에 접속을 원하는 사용자가 해당 도메인 주소를 브라우저에 입력하면, DNS 는 도메인의 정보를 조회하는데 이때 IP 주소를 여러 대의 서버 IP 리스트 중에서 라운드 로빈 형태로 랜덤하게 하나 혹은 여러개를 선택하여 사용자에게 알려주게 된다.
💡 결과적으로 웹 사이트에 접속하는 다수의 사용자는 실제로는 복수의 웹 서버에 나뉘어 접속하게 되면서 자연스럽게 서버의 부하가 분산된다.

장점과 단점
장점
- 로드밸런서 없이도 로드밸런싱의 효과를 누릴 수 있다.
- 간편한 구현 방식으로 저렴하게 사용할 수 있다.
💡 지리적으로 복수의 웹 서버가 멀리 떨어져 있어서 실시간으로 헬스 체크가 어려울 때 사용한다.
(혹은 적은 비용으로 로드밸런싱 구현이 필요할 때)
단점
- 서버의 수 만큼 공인 IP 주소가 필요하다.
-
균등한 분산을 보장할 수 없음.
모바일 사이트 등에서 문제가 될 수 있는데, 스마트폰의 접속은 캐리어 게이트웨이 라고 하는 프록시 서버를 경유한다. 이때, 프록시 서버에서는 이름변환 결과가 일정 시간 동안 캐싱되므로 같은 프록시 서버를 경유 하는 접속은 항상 같은 서버로 접속되게 된다.
또한 PC 용 웹 브라우저도 DNS 질의 결과를 캐싱하기 때문에 균등한 부하분산이 보장되지 않음.
DNS 레코드의 TTL 값을 짧게 설정함으로써 어느 정도 해소가 되지만, TTL 에 따라 캐시를 해제하는 것은 아니므로 반드시 주의가 필요하다.
-
서버가 다운되어도 확인이 불가능하다.
DNS 서버는 웹 서버의 부하나 접속 수 등의 상황에 따라 질의결과를 제어할 수 없다.
웹 서버의 부하가 높아서 응답이 느려지거나 접속 수가 꽉 차서 접속을 처리할 수 없는 상황이 벌어져도, 전혀 감지할 수가 없기 때문에 다운된 서버의 IP주소를 클라이언트에게 반환하게 된다.
DNS 라운드 로빈은 어디까지나 부하분산 을 위한 방법이지 다중화 방법은 아니므로 다른 S/W 와 조합해서 관리할 필요가 있다.
DNS 조회 정보의 캐싱
한 번이라도 조회된 IP 주소들은 사용자가 사용중인 ISP의 로컬 DNS resolver에 캐싱되거나 사용자의 애플리케이션에 캐싱될 수 있다. 때문에 TTL (캐싱 주기) 동안은 동일한 도메인에 대해서는 캐싱된 IP 주소를 사용하게 된다.
따라서 도메인 설정 작업을 할 때에 캐싱 주기 설정을 고민해야한다.
- 캐싱 주기를 길게하면 DNS 정보의 변경이 인터넷상의 네임 서버에 전파되는데 오랜 시간이 걸림
- 캐싱 주기를 짧게 하면 빠른 업데이트 반영은 가능하지만 도메인 조회가 빈번해지면서 사용자가 요청을 처리하는 성능이 감소한다.
최근 클라우드 벤더사들이 제공하는 라운드 로빈 DNS 서비스들은 기존 단점을 극복하기 위해, 응답이 없는 웹 서버를 조회 결과에서 배제시키는 자체적인 health check 기능을 지니고 있다.
그럼에도 불구하고 DNS 조회 결과가 캐싱된 기간만큼은 HA (High availability) 구성이 불가하다는 단점은 남아있다.
따라서 대부분 CDN 업체들은 A레코드의 캐싱 주기를 매우 짧게 가져가는 추세이다.
Reference
https://m.blog.naver.com/sehyunfa/221691155719
댓글남기기