Route 53
- 고가용성, 확장성, 완전한 관리, 권한있는 DNS / Domain Registrar
- 권한있는 = 고객이 DNS record 업데이트 가능
- public IP를 가지고 있는 EC2 인스턴스에 대해 DNS 서비스 제공 (example.com 요청 -> 12.34.56 응답)
- 리소스에 대한 상태 체크 가능
- 100% SLA (고객이 공급업체로부터 기대하는 서비스 수준) 가용성을 제공하는 유일한 AWS 서비스
- 53은 유일한 DNS 포트
DNS Record Type
- A - 호스트이름과 IPv4 매핑
- AAAA - 호스트이름과 IPv6 매핑
- CNAME - 호스트이름과 다른 호스트이름 매핑
- NS - 호스팅 존의 이름 서버. 서버의 DNS 이름 or IP 주소로, 호스팅존에 대한 DNS 쿼리에 응답
Hosted Zone
- 도메인 / 서브도메인으로 가는 트래픽의 라우팅 방식을 정의하는 컨테이너
- Public Hosted Zone
- 누구든 레코드 쿼리 가능
- Private Hosted Zone
- 공개되지 않은 도메인 이름을 지원
- VPC만이 URL Resolve 가능
- 어떤 hosted zone이든 월 $0.5 지불
CNAME vs Alias
- CNAME
- app.abc.com -> new.test.com 으로 다른 호스트명으로 매핑
- 루트 도메인이 아닌 경우에만 가능 (something.mydomain.com)
- Alias
- Route 53에 한정
- 호스트명이 특정 AWS 리소스를 향하도록 할 수 있음 (app.abs.com -> new.amazonaws.com)
- 루트, 비루트 도메인 모두 가능 (mydomain.com)
- 무료, 자체적으로 상태확인 가능
- AWS 리소스에만 매핑 (항상 A or AAAA)
- TTL 설정 불가능 (Route 53에 의해 자동 설정)
- 대상
- ELB / CloudFront / API Gateway / Elastic Beanstalk Env / S3 Websites / VPC Interface Endpoints / Global Accelerator / Route 53 (같은 호스팅 존)
- EC2의 DNS 이름에 대해서는 Alias 불가능
라우팅 정책
- 단순 (Simple)
- 하나의 리소스에 대해 하나의 응답
- foo.exmple.com에 대해 3개의 IP 응답 시에는 클라이언트가 셋 중 하나를 고름
- Alias 지정 시 하나의 AWS 리소스 지정 가능
- 상태확인 불가
- 가중치 (Weighted)
- 요청의 일부 비율을 특정 리소스로 보낼 수 있음
- 서로 다른 지역에 걸쳐 로드밸런싱 할 때 / 적은 양의 트래픽을 보내 새 애플리케이션 테스트 시 유용
- 모든 리소스 가중치가 0이면 모두 동일하게 라우팅
- 지연시간 기반 (Latency-based)
- 지연 시간이 가장 짧은 (가장 가까운) 리소스로 리다이렉팅
- 지연시간이 민감한 경우 유용
- 장애조치 (Failover)
- 기본 EC2 인스턴스의 상태확인이 비정상일 경우 서브 EC2 인스턴스로 라우팅
- 지리적 위치 (Geolocation)
- 지연시간 기반과 달리 사용자의 실제 위치를 기반으로 함
- 일치하는 위치가 없는 경우를 대비, Default Record 생성해야함
- 콘텐츠 분산 제한, 로드밸런싱을 실행하는 웹사이트의 현지화(localization)
- 지리적 근접성 (Geoproximity)
- 지리적 위치 기반 AND 편향값(bias)을 기반으로 더 많은 트래픽을 특정 리소스에 이동
- 전세계 대상 리소스에 대해 > 특정 리전으로 트래픽을 더 보내야 할 때 유용
- 한 리전에서 다른 리전으로 트래픽을 보낼 때 유용
- 트래픽을 늘리려면 편향값을 증가시켜 확장 (1 ~ 99) / 반대는 음수로 축소 (-1 ~ -99)
- ++ 지도를 기준으로 편향값이 더 높은쪽을 기준으로 트래픽의 분할선이 이동하는 개념으로 보면 이해가 쉬움
- IP 기반 라우팅 (IP-based)
- 클라이언트 IP 주소를 기반으로 라우팅
- Route 53에서 CIDR 목록 정의 (클라이언트 IP 범위)
- CIDR에 따라 트래픽을 어떤 로케이션으로 보내는지 정함
- IP를 미리 알고 있으므로 성능 최적화 / 비용 절감
- 다중값 (Multi-value)
- 트래픽을 다중 리소스로 라우팅할 때 사용
- 각각 다중값 쿼리에 최대 8개의 정상 레코드가 반환
- 클라이언트 측면에서의 LB
- 상태확인을 통해 반환되는 1 ~ 8개의 레코드는 모두 정상임이 보장
- Simple 방식에서의 다중 값과의 차이점 (Simple은 상태확인 X)
Route 53 Health Check
- DNS의 장애조치 자동화
- 애플리케이션, 서버, 다른 AWS 리소스 대상으로 상태확인
- 다른 상태확인 모니터링도 가능 (계산된 상태확인)
- 여러 상태확인 결과를 하나로 합쳐주는 기능
- OR AND NOT
- 하위상태확인 256개까지 가능
- 몇개 통과해야하는지 지정 가능
- CloudWatch 경보의 상태 모니터링 가능 (제어 쉬움, private resource에 대한 상태확인 유용)
- Health Check는 모두 VPC 밖에 있으므로 일반적으로 private resource에 대한 상태확인이 어려움
- 이 때 CloudWatch 경보를 상태확인에 사용 가능
- 경보 발생 시 Health Check 비정상으로 간주
- 15개 정도의 글로벌 EndPoint에서 Health Checker가 상태에 대한 응답을 보냄
- 30초마다 정기적으로 확인 / 10초마다도 가능 (비용 높음, 빠른 헬스체크)
- Http, Https, TCP 등 프로토콜 지원
- 18% 이상 정상 판단되면 Route 53도 이를 정상으로 간주
- 2xx / 3xx 응답만 정상으로 간주
- 응답의 처음 5120 바이트 확인
- HealthChecker가 엔드포인트에 접근이 가능해야함 (해당 HealthChecker IP 범위에 대한 모든 요청 허용 필요)
Domain Registrar vs DNS Service
- Domain Registrar
- 원하는 도메인 이름 구매 가능
- 매년 비용 지불
- 레지스트라 통해 구매 시 DNS 레코드 관리를 위한 DNS 서비스 제공
- ex) DNS 레코드 관리를 위한 Route 53 호스팅 존 제공
- 타 웹사이트에서 구매한 도메인 <-> 타사 DNS Service Provider에서 관리 가능
- 타사 DNS Service Provider에 호스팅존 생성
- 타사에서 구매한 도메인에 대한 NS or Name Servers 업데이트
Reference
'Programming' 카테고리의 다른 글
[AWS, Certified Developer Associate] S3 - 개요, 버킷 정책, 복제, 스토리지 클래스 (0) | 2024.05.07 |
---|---|
[AWS, Certified Developer Associate] VPC (0) | 2024.05.06 |
[AWS, Certified Developer Associate] Aurora, RDS 프록시, ElastiCache (0) | 2024.05.01 |
[AWS, Certified Developer Associate] RDS - Storage Auto Scaling, Read Replica, Multi-AZ (0) | 2024.05.01 |
[AWS, Certified Developer Associate] ASG (0) | 2024.04.29 |