Gidhub BE Developer

AWS의 DNS 서비스(Route53)

2018-12-02
goodGid
AWS

Route53

  • Route53은 AWS에서 제공하는 DNS 서비스이다.

  • 일반 DNS와 다르게 몇 가지 아마존에 특성화된 몇 가지 기능을 가지고 있다.

  • 특화 기능에 앞서서 DNS의 개념에 대해 알아보면

  • DNS는 Domain Name(www.example.com)을 IP 주소로 바꿔 주는 일종의 Dictionary 서비스이다.

  • 이러한 맵핑 정보를 저장해 놓는 파일을 DNS Zone file이라고 한다.


캐슁

  • DNS 서버의 특성중에서 주의깊게 봐야 하는 특성은 캐슁이다.

  • 보통 DNS 서버는 클라이언트가 사용하는 로컬 네트워크에 있는 DNS를 사용하게 된다.

  • 회사 네트워크라면 회사내의 DNS 서버, 집에서 사용하는 경우 해당 통신사의 DNS서버, 모바일을 사용할 경우, 해당 통신사의 DNS 서버를 사용한다.

  • 이 DNS 서버들은 look up을 요청한 목적 서비스 서버에 대한 IP 주소를

  • 다른 클라이언트가 요청할 때 응답을 빠르게 하기 위해서 자체적으로 캐슁하고 있다.

예를 들어 구글의 A라는 서비스가 있다고 하자. 
이 서비스 A는 구글의 DNS 서버에 주소가 정의되었을 것이다. 

만약 한국의 사용자가 스마트 폰을 이용하여 이 서비스의 URL을 접근하게 되면 
해당 한국 통신사의 DNS 서버를 통해서 주소를 look up 하게 될 것이고 
이 한국 DNS 서버는 구글의 DNS 서버에 주소를 물어본 후에
다음 서비스를 위해서 자신의 Cache를 업데이트 한다.
  • 이 캐쉬가 지워지고 다시 업데이트 되는 시간을 TTL 시간이라고 한다.

Route 53의 고유 기능

Health check & DNS Fail Over

  • Route53은 자체적으로 Health check 기능을 가지고 있다.

  • 하나의 DNS 명에 대해서 Multiple IP address를 return할 수 있는데

  • 해당 IP의 서버의 상태를 체크해서 장애 상태인 경우에는 List에서 제외하고

  • 장애가 복구 되면 다시 리스트에 추가하는 형태이다.

  • 하지만 이 기능의 경우 Local DNS들의 캐슁 때문에

  • Route53이 장애를 인지하고 바로 list에서 제외한다 하더라도

  • local DNS에서 캐쉬가 업데이트 되는 시간이 필요하기 때문에 바로 Fail Over는 되지 않는다.

  • 되도록 빠른 Fail Over를 하기 위해서는 Route53에서 TTL 시간을 짭게 주는 것이 좋은데 AWS의 경우 60초이하의 값을 권장하고 있다.


Latency based routing

  • Route53의 기능 중에 상당히 흥미로운 기능중의 하나인데

  • Route53에 하나의 DNS 주소에 대해서 여러개의 서비스 IP가 binding 되어 있을 경우

  • Route53은 클라이언트로 부터 DNS 주소에 대한 look up 요청을 받았을 경우

  • 클라이언트로 부터 가장 빠른 응답시간을 보장하는 (거리가 가까운) 서버의 IP 주소를 리턴하는 기능이다.

  • 원리를 설명해보면 다음과 같다.

아마존 인프라는 각 데이터센터로부터 다른 IP주소 대역까지의 네트워크 Latency 값을 
주기적으로 수집해서 데이터 베이스화 해서 갖고 있는다.

예를 들어 미국 AWS 데이터 센터에서 전세계에 대한 Latency를 AWS을 가지고 있다. 
한국,중국,유럽 등등. 이렇게 latency 자료를 가지고 있다 DNS look up 요청이 오면 
요청을 한 클라이언트쪽의 IP를 기반으로 내부 데이터 베이스내의 Latency를 체크해여 
가장 가까운 아마존 데이터 센터의 IP를 리턴하게 되는 원리이다.
  • 이 때 Route 53으로 request를 보내는 클라이언트는 User Browser 혹은 모바일 기기등이 아니라

  • User가 접속된 네트워크의 로컬 DNS 서버이다.


Reference


Index