[AWS, Certified Developer Associate] DNS, Route 53
Programming

[AWS, Certified Developer Associate] DNS, Route 53

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

Udemy - AWS Certified Developer Associate 시험 합격을 위한 모든 것!