Share
Sign In

Route 53

키워드
DNS란?
Domain Name System은 IP 주소를 사람에게 친숙한 hostname으로 바꾸는 시스템이다.
도메인 네임 등록 대행자: 공인된 기구, 사설 업체에서 도메인 네임을 등록, 관리한다.
DNS 레코드: A, AAAA, CNAME, NS, ...
Zone File: DNS 레코드를 모두 담고 있는 파일
네임 서버: DNS 쿼리를 실제로 해석하는 서버
최상위 도메인(TLD): .com, .kr .in .gov, .edu
차상위 도메인(SLD): naver.com, amazon.com
Amazon Route 53
Route 53은 가용성, 확장성이 좋고, 완전히 관리할 수 있는 DNS 웹 서비스이다. Route 53은 도메인 서버의 역할과 도메인 네임 등록 대행의 역할도 같이한다. 각 DNS에 할당되어 있는 자원을 Health Check할 수 있고 AWS 서비스에 한해서는 100% 가용성을 보장한다. 아, 53은 DNS 포트 넘버이다.
레코드 타입
A - 호스트 네임을 IPv4에 매핑
AAAA - 호스트 네임을 IPv6에 매핑
CNAME - 호스트 네임을 A나 AAAA 레코드를 가진 다른 호스트 네임에 매핑. SLD는 사용할 수 없다.
NS - 질문에 답할 수 있는 네임 서버
Hosted Zone
레코드들을 담고 있는 컨테이너이다.
퍼블릭 호스팅 영역 - 인터넷에서 트래픽을 라우팅하고자 할 때, 서비스의 Public IP를 알려준다.
프라이빗 호스팅 영역 - Amazon VPC에서 트래픽을 라우팅하고자 할 때, 서비스의 Private IP를 알려준다.
TTL (Time to Live)
TTL은 해당 DNS 레코드가 유효하다는 것을 보장하는 시간이다. 클라이언트는 처음에는 DNS에 해당하는 IP를 Route 53에 물어본다. 그 이후 TTL 동안에는 방금 답 받았던 IP를 계속 쓴다. TTL을 높이면 Route 53으로 가는 트래픽은 줄지만 신뢰도 떨어지고 반대도 마찬가지이다.
CNAME vs Alias
💡
Root Domain, Apex Domain은 다 같은 말로 서브 도메인이 없는 도메인을 뜻한다.
CNAME - 일반적으로 한 호스트네임이 다른 호스트네임을 가리킨다는 뜻이다. help.naver.com → what.google.co.kr처럼 이동을 가능하게 한다. CNAME은 루트 도메인(naver.com)을 쓰면 안된다.
Alias - 호스트네임이 AWS 리소스를 가리킨다. 루트 도메인을 써도 상관없고 기본 health check를 지원한다.
Alias는 도메인을 사용하는 리소스만 가리킬 수 있다. (EC2는 안된다!)
Elastic Load Balancers
CloundFront Distributions
API Gateway
Elastic Beanstalk environments
S3 Websites
VPC Interface Endpoint
Global Accelerator accelerator
Route 53 record in the same hosted zone
라우팅 정책
IP 라우팅이랑 헷갈리면 안된다! DNS 서버에 IP를 물었을 때, 어떻게 답변할지를 설정하는 것이다
단순 라우팅 - 도메인에 대해 해당하는 모든 IP 주소를 무작위 순서로 반환한다. 그러면 클라이언트는 랜덤으로 하나를 고른다. Alias를 쓰면 리소스를 하나밖에 연결하지 못 한다. Health Check와 연동할 수 없다.
다중값 응답 - 단순 라우팅이랑 비슷하지만 health check를 붙일 수 있어 healthy한 정책만 취급한다.
가중치 기반 - 요청을 가중치에 기반에 각각의 리소스로 나눈다. 미리 도메인을 등록해 놓고 가중치만 0으로 하면 그쪽으로는 라우팅이 안된다. 테스트, 배포 IP를 왔다갔다 할 때 주로 쓴다.
지연 시간 - 레코드에 등록된 리소소들 중, 유저에게 가장 가까운 (지연 시간이 적은) 리소소로 연결한다.
장애 조치 (Failover) - Primary(기본), Secondary(보조) 리소스를 지정한다. 평소에는 기본 IP만 준다. 하지만 만약 기본 리소스가 unhealhty하면 보조 리소스의 IP를 준다.
지리적 위치 - 지연 시간 정책이랑 다르다! 유저의 지리적 위치(대륙, 국가)에 따라 어떤 IP를 줄 지 설정할 수 있다. Default를 반드시 설정해야 한다.
지리 근접 라우팅(트래픽 흐름 전용) - 리소스의 리전 혹은 위,경도를 입력하고, 바이어스(bias)를 설정한다. 바이어스가 클 수록 해당 지리적 리전은 커진다. 유저가 리소스의 위치를 입력하면 Route 53은 자동으로 영영역을 만들고, 각 영역 안에 있는 유저에게 해당 리소스의 IP를 준다. 바이어스는, 예를 들어, 2 지역에 트래픽을 몰고 싶다고 하면 2 지역의 바이어스를 높여 더 넓은 범위를 포괄하게 할 수 있다.
원하는 장소를 추가하면 영역이 만들어진다.
바이어스를 조정해 영역의 크기를 바꿀 수 있다.
Health Check (상태 검사)
Route 53은 Health Checker를 통해 해당 리소스가 살아 있는지 판단한다. 공개된 리소스에서만 가능하고 아래 3가지 방법으로 확인할 수 있다.
엔드 포인트 상태 검사 - 일정 시간마다 원하는 리소스에 직접 HTTP, HTTPS나 TCP 요청을 날려 2xx이나 3xx 응답이 오는지 확인한다. 혹은 특정 텍스트가 응답으로 오는지도 확인할 수 있다. AWS는 리전 상관없이 전체 약 15개 정도의 Health Checker를 운영하고 있는데, 이 중 18%가 healthy라고 말하면 route 53은 healthy로 판단한다.
계산된 상태 검사 - 리소스 당 하나씩 health checker를 붙여 놓고 각각의 health checker가 보내는 결과를 종합한다. OR, AND, NOT 명령을 쓸 수 있으며 부모 health checker가 전체 다 종합한다.
CloudWatch 경보 상태 - 사설 호스팅 영역에 있는 리소스는 공개 DNS나 IP가 없기 때문에 Health checker가 접근할 수 없다. 이 때는 CloudWatch를 리소스에 붙여 상태를 확인하게 하고 Health checker는 이 cloudwatch를 모니터링한다.
서드 파티에서 구매한 도메인을 Route 53에서 이용하기
1.
서드 파티에서 구매한 도메인을 이용해 호스팅 영역을 만든다.
2.
서드 파티의 NS 레코드를 Route 53의 네임 서버로 바꾼다.
도메인 등록 대행과 DNS 서비스는 전혀 다르지만 보통 둘 다 동시에 제공하는 회사가 많다.