Route 53
- 고가용성, 확장성을 갖춘, 완전히 관리되며 권한있는 DNS다.
- 권한이 있다라는 뜻은 고객인 우리가 DNS 레코드를 업데이트 할 수 있다는 의미다.
- Route 53 역시 도메인 이름 레지스트라로 도메인 이름을 등록할 수 있다.
- Route 53의 리소스 관련 상태 확인을 확인할 수 있다.
- 100% SLA 가용성을 제공하는 유일한 AWS 서비스입니다
- Route 53에서 여러 DNS 레코드를 정의하고 레코드를 통해 특정 도메인으로 라우팅하는 방법을 정의한다.
레코드가 갖고 있는 속성
- 도메인/서브도메인 이름
- 레코드 타입
- A: 호스트 이름과 IPv4 IP를 매핑
- AAAA: 호스트 이름과 IPv6 매핑
- CNAME: 호스트 이름을 다른 호스트 이름과 매핑
- 대상 호스트 이름은 A나 AAAA 레코드가 될 수 있다.
- Route 53에서 DNS 이름 공간 또는 Zone Apex의 상위 노드에 대한 CNAMES를 생성할 수 없다.
- ex) example.com에 CNAME을 만들 수는 없지만 www.example.com에 대한 CNAME 레코드는 만들 수 없다.
- 즉, 루트 도메인 이름이 아닌 경우에만 사용할 수 있다.
- NS: 호스팅 영역의 네임 서버다. 트래픽이 도메인으로 라우팅 되는 방식을 제어한다.
서버의 DNS이름 또는 IP주소로 호스팅 존에 대한 DNS 쿼리에 응답이 가능하다.
- CAA, DS. MX, NAPTR, PTR, SOA, TXT, SPF, SRV 등
- Value: IP
- 라우팅 정책: Route 53이 쿼리에 응답하는 방식
- TTL: DNS 리졸버에서 레코드가 캐싱되는 시간.
호스팅 존
- 호스팅 존은 레코드의 컨테이너다.
- 도메인과 서브도메인으로 가는 트래픽의 라우팅 방식을 정의한다.
- 호스팅 존에 두 종류가 있는데 퍼블릭 호스팅 존과 프라이빗 호스팅 존이 있다.
- 프라이빗 호스팅 존: 가상 프라이빗 클라우드(VPC)만이 URL을 리졸브 할 수 있다.
- 퍼블릭 호스팅 존 : 퍼블릭 호스팅 존은 공개된 클라이언트로부터 온 쿼리에 응답할 수 있다.
CNAME vs Alias
로드밸런서나 CloudFront 등 AWS 리소스를 사용하는 경우 호스트 이름이 노출된다.
도메인에 호스트 이름을 매핑할 수 있다.
도메인에 AWS 리소스를 매핑하는 경우는 2가지 옵션이 있을 수 있다.
CNAME, Alias
1. CNAME
- CNAME 레코드로 호스트 이름이 다른 호스트 이름으로 향하도록 할 수 있다.
- ex) app.mydomain.com -> blabla.anything.com
- 이건 루트 도메인 이름이 아닌 경우에만 가능해서 mydomain.com 앞에 뭔가 붙어야 한다.
2. Alias
- 호스트 이름이 특정 AWS 리소스로 향하도록 할 수 있다.
- ex) app.mydomain.com -> blabla.amazonaws.com
- 루트 및 비루트 도메인 모두에 작동한다.
- Alias는 무료다.
- 자체적으로 상태 확인이 가능하다.
- AWS의 리소스에만 매핑되어 있다.
- CNAME과 달리 Alias는 Zone Apex라는 DNS 네임스페이스의 상위 노드로 사용될 수 있다.
- Alias 레코드를 사용하면 TTL을 설정할 수 없다.
- 대신, Route 53에 의해 자동으로 설정된다.
- Alias 대상은 다음과 같다.
- ELB, CloudFront 배포, API Gateway, Elastic beanstalk, S3 웹사이트,
S3 버킷은 불가
, VPC 인터페이스 엔드포인트 Global Accelerator 등이 있다.
EC2의 DNS 이름에 대해서는 Alias 레코드 설정할 수 없다.
Route 정책
- 라우팅 정책은 Route 53이 DNS 쿼리에 응답하는 것을 돕는다.
단순 라우팅 정책(Simple)
- 트래픽을 단일 리소스로 보낸다.
- 동일한 레코드에 여러 개의 ip 지정할 수도 있다.
- 그럼 DNS가 다중 값을 응답하고 클라이언트가 랜덤으로 골라서 라우팅에 적용한다.
가중치 기반 정책(Weighted)
- 가중치를 활용해 요청의 일부 비율을 특정 리소스로 보낸다.
- 각 레코드에 상대적으로 가중치를 할당한다.
- DNS 레코드들은 동일한 이름과 유형을 가져야 하며 상태 확인과도 관련될 수 있다.
- 서로 다른 지역들에 걸쳐 로드 밸런싱을 할 때나 적은 양의 트래픽을 보내 새 애플리케이션을 테스트하는 경우에 사용한다.
대기 시간 기반 정책(Latency-based)
- 가장 가까운 리소스로 리다이렉팅을 한다.(지연 시간이 가장 짧은)
- 지연 시간은 유저가 레코드로 가장 가까운 식별된 AWS 리전에 연결하기까지 걸리는 시간을 기반으로 측정된다.
장애 조치 정책(Failover)
- 상태확인과 DNS 레코드를 묶은 방식이다.
- 세 가지의 상태 확인이 가능하다.
- 공용 엔드 포인트를 모니터링(애플리케이션, 서버, 혹은 다른 AWS 리소스가 될 수 있다.)
- 계산된 상태 확인(다른 상태 확인을 모니터링)
- CloudWatch 경보의 상태를 모니터링
- Primary 리소스 / Secondary - Disaster Recovery 리소스가 필요하다.
- Primary에 에러가 발생하면 Disaster Recovery로 쿼리한다.
지리적 위치 (Geolocation)
- 사용자의 실제 위치를 기반으로 합니다. 즉 가장 가까운 곳 IP로 응답한다.
- 사용 사례로는 콘텐츠 분산을 제한하고 로드 밸런싱 등을 실행하는 웹사이트 현지화가 있다.
지리 근접 (GeoProximity)
- 사용자와 리소스의 지리적 위치를 기반으로 트래픽을 리소스로 라우팅한다.
- 편향값을 사용해 특정 위치를 기반으로 리소스를 더 많은 트래픽을 이동시킨다.
- 지리 근접 라우팅은 편향을 증가시켜 한 리전에서 다른 리전으로 트래픽을 보낼 때 유용하다.
IP 기반 (IP-based)
- 클라이언트 IP 주소를 기반으로 라우팅한다.
- Route 53에서 CIDR 목록을 정의(클라이언트의 IP 범위)
- CIDR에 따라 트래픽을 어느 로케이션으로 보내야 하는지 정한다.
- 이걸 사용해 성능 최적화, 네트워크 비용 절감이 가능하다.
- IP를 미리 알고 있으니까 가능, IP가 어디서 오는지 알고 있으니까
다중 값 (Multi-Value)
- 트래픽을 다중 리소스로 라우팅할 때 사용한다.
- Route 53은 다중 값과 리소스를 반환한다.
- 상태 확인과 연결하면 다중 값 정책에서 반환되는 유일한 리소스는 정상 상태 확인과 관련이 있다.
- 각각의 다중 값 쿼리에 최대 8개의 정상 레코드가 반환된다.
- ELB와 유사해 보이지만 ELB를 대체할 수는 없다.
- 클라이언트 측면의 로드 밸런싱이다.
- 다중 값이 있는 단순한 라우팅의 경우에는 단순 라우팅 정책은 상태 확인을 허용하지 않기 때문에 단순 라우팅 정책의 쿼리가 반환하는 리소스 중 하나는 비정상일 가능성이 있다.
- 다중 라우팅은 정상 상태 확인과 연동되며, 정상인 리소스를 반환할 수 있다.