article thumbnail image
Published 2023. 5. 25. 15:06

Route 53

  • 고가용성 확장성을 갖춘, 완전히 관리할 수 있고 권한있는 DNS 서비스
    • 권한이 있다는 말은 DNS를 완전히 제어할 수 있다는 뜻
  • 도메인 Registrar로 도메인이름을 등록 가능
  • 리소스 관련 상태 확인 가능
  • 100% SLA 가용성을 제공하는 유일한 AWS 서비스
  • 53은 DNS 서비스에서 사용하는 전통적인 포트

 

Records

  • 레코드를 통해 특정 도메인으로 라우팅하는 방법을 정의
    • 각 레코드는 도메인과 서브 도메인 정보를 가짐
    • 레코드 타입: e.g. A or AAAA …
    • 레코드 값: e.g., 123.456.789.123
    • 라우팅 정책: Route53이 쿼리에 응답하는 방식
    • TTL: DNS Resolver에 레코드가 캐싱되는 시간
  • 지원하는 레코드 타입
    • A, AAAA, CNAME, NS
    • (advanced) CAA / DS / MX / NAPTR / PTR / SOA / TXT / SPF / SRV\

 

Record Types ( 자주 출제됨 )

  • A - 호스트 이름과 IPv4 Ip를 매핑함
  • AAAA - 호스트이름과 IPv6 IP를 매핑
  • CNAME - 호스트이름을 다른 호스트 이름과 매핑
    • A나 AAAA 레코드가 될 수 있음
    • DNS 네임스페이스의 탑 노드에 대한 CNAME 레코드는 생성할 수 없다
    • 예시) example.com에 대한 CNAME은 만들 수 없지만 www.example.com에 대한 CNAME 레코드는 만들 수 있다
  • NS - 호스팅 존의 네임서버로 서버의 DNS 이름 또는 ip주소로 호스팅 존에 대한 dns 쿼리 응답 가능
    • 트래픽이 도메인으로 라우팅 되는 방식을 제어

 

Hosted Zones

  • 레코드의 컨테이너로 도메인과 서브도메인으로 가는 트래픽의 라우팅 방식을 정의
  • 퍼블릭 호스팅존과 프라이빗 호스팅 존 ( 도메인이름이 공개됐느냐 그렇지 않느냐에 대한 차이 )
  • Public Hosted Zone (공개 도메인 이름)
  • Private Hosted Zone (비공개 도메인 이름)
    • 프라이빗 호스팅은 VPC(가상 사설 클라우드) 내부에서만 URL을 사용할 수 있다
    • 회사 네트워크 내부에서만 접근할 수 있는 URL이 있음 - 비공개 URL로 외부에서 접근 불가
  • 어떤 호스트 존이든 달마다 0.5달러를 지불해야함

 

Route 53 - TTL ( Time To Live )

  • DNS에게 응답을 받지 않아도 요청을 클라이언트에서 캐싱해서 직접 Web Server로 접근

 

High TTL - e.g. 24H

  • Route53의 트래픽은 현저히 적어진다 (클라이언트가 요청을 적게 보냄 )
  • 클라이언트가 가지는 레코드가 오래될 수도 있다

 

Low TTL - e.g. 60 sec

  • Route 53에 더 많은 트래픽이 들어오고 비용이 많이 든다. (요청의 양에 따라 비용 청구)
  • 레코드가 빨리 업데이트 되며 변경하기가 더 쉽다

TTL은 별칭(Alias) 레코드를 제외한 모든 레코드에서 필수적이다

 

 

CNAME vs Alias

  • 로드밸런서를 만들면 로드밸런서에 DNS 이름이 생성되는데 이걸 보유한 도메인으로 호스티 이름을 매핑할 때 사용하는 방법이다

 

CNAME

  • 호스트 이름이 다른 호스트 이름으로 향할 수 있음
  • 루트 도메인이 아닌 경우에만 가능 (example.com이라는 도메인을 소유할 경우 → test.example.com 등으로 변경해서 등록해야 가능하다

 

Alias

  • Route 53에 한정되지만 호스트 이름이 특정 AWS 리소스로 갈 수 있음 (example.comtest.amazonaws.com)
  • 루트 및 비루트 도메인도 연결 가능 (루트 도메인도 aws 리소스로 연결 가능)
  • 무료이며 자체적인 상태 확인이 가능

 

Route 53 - Alias Records

  • 호스트 이름을 AWS 리소스로 매핑
  • 모든 DNS에서 가능
  • DNS 네임스페이스의 탑 노드로 사용될 수 있음 ( example.com )
  • 별칭 레코드의 타입은 항상 A/AAAA이다
  • TTL은 설정할 수 없고 Route 53에 의해 자동 설정

 

Alias Records Targets

  • ELB
  • CloudFront Distributions
  • API Gateway
  • Elastic Beanstalk environments
  • S3 Websites
  • VPC Interface Endpoints
  • Global Accelerator accelerator
  • Route 53 record in the same hosted zone

EC2 DNS 이름은 별칭레코드를 설정할 수 없다

 

Routing Policies

  • Route 53이 DNS 쿼리에 응답하는 것을 정의하는 것으로 이전에 배웠던 Routing과는 조금 다름
  • 네트워크 라우팅과 혼동하면 안된다
    • DNS는 어떤 트래픽도 라우팅하지 않으며, 오로지 DNS 쿼리에 대해서만 반응한다
    • DNS는 호스트 이름들을 클라이언트가 실제 사용가능한 엔드포인트로 변환하는 것을 돕는다
  • Route 53은 다음과 같은 라우팅 정책을 지원한다
    • Simple - 단순
    • Weighted - 가중치 기반
    • Failover - 장애 조치
    • Latency based - 지연 시간 기반
    • Geolocation - 지리적
    • Multi-Value Answer - 다중 응답
    • Geoproximity - 지리 근접

 

Simple Routing Policies

  • 단일 리소스에 대한 트래픽 처리로 일반적인 DNS 레코드 처리 방식이다
  • 같은 레코드에 여러 값으로 넣을 수 있다
    • 이 경우 클라이언트는 랜덤한 한개의 값을 받는다
  • Alias를 사용하는 경우 하나의 특정 AWS 리소스만 등록 가능
  • 상태 확인은 불가능하다

 

Weighted 라우팅 정책 (가중치 기반)

  • 요청의 일부를 가중치에 따라 특정 리소스로 보내는 것이 가능
    • 가중치가 높으면 더 많은 트래픽이 들어감
  • DNS 레코드끼리 같은 이름과 같은 타입을 가져야한다
  • 상태 확인도 가능하다
  • 사용 사례
    • 리전간 로드밸런싱 할때, 새 어플리케이션을 테스트하는 경우
  • 가중치 0이라면 트래픽 보내기를 중단
  • 모든 리소스 레코드가 0이라면, 모든 레코드가 동일한 가중치로 초기화
  • 가중치가 가장 큰 곳으로 대부분의 DNS 쿼리를 리다이렉팅

 

Latency-based 라우팅 정책

  • 지연 시간이 가장 짧은, 즉 가장 가까운 리소스로 리다이렉트
  • 유저가 가장 가까운 AWS 리전으로 연결하기까지 걸리는 시간을 기반으로 측정
  • 독일에 있는 유저가 가장 가까운 리전이 미국이라면 미국으로 리다이렉트 된다
    • 사진으로 이해하면 쉽다

 

Route 53 - Health Checks (상태확인)

  • 공용 리소스에 대한 상태를 확인
  • 고가용성, DNS의 장애 조치를 자동화하기 위한 작업으로 세가지 방법이 있다
    • 공용 엔드 포인트를 모니터링
    • 다른 상태 확인을 모니터링 (계산된 상태 확인 )
    • CloudWatch 경보의 상태를 모니터링하는 상태 확인도 있다 - 제어가 쉽고 개인리소스 유용

Health Checks - Monitor an Endpoint

  • 상태 확인이 가능하려면 애플리케이션 밸런서나 엔드 포인트에 접근이 가능해야함
    • Healthy/UnhealthyThreshold (3) → 비정상 요청이 3번 들어오면 해당 레코드를 비정상으로 간주
    • 간격 → Default / Fast (30초 / 10초) Fast가 더 비쌈
    • HTTP HTTPS TCP 지원
  • 다양한 옵션으로 정상 상태를 확인할 수 있음 → HTTP 응답, 5120의 처음 응답 텍스트
  • Health Checker 응답이 가능하도록 연결하거나 보안 그룹을 설정해야 한다

 

계산된 상태 확인

  • 여러 개의 상태 확인 결과를 하나로 합쳐주는 기능
  • OR AND로 결합하여 상태 확인 가능

 

개인 리소스의 상태 확인

  • 개인 엔드포인트에 접근이 어렵다. 따라서 CloudWatch 알람을 활용하여 인스턴스를 모니터
  • 메트릭이 침해되는 경우 알람을 생성하고 헬스 체커가 비정상을 확인함

 

Failover(Active-Passive) 라우팅 정책

  • 메인 인스턴스에 장애가 발생할 경우 재해 복구용 보조 인스턴스로 DNS 요청을 라우팅
  • 기본 인스턴스가 정상이면 Route 53도 기본 레코드로 응답하다가 상태 확인이 비정상으로 확인되면 두 번째 레코드의 응답을 자동으로 얻게됨
  • 메인 레코드는 상태 확인이 필수이지만 보조 레코드는 선택

 

Geolocation 라우팅 정책

  • 지연시간 기반과는 엄연히 다르며 사용자의 실제 위치를 기반으로 한다
  • 특정 국가, 특정 주로 정확한 위치가 선택되어 라우팅된다
  • 일치하는 위치가 없다면 기본 레코드를 생성해야한다
  • 콘텐츠 분산, 로드 밸린싱 등을 실행하는 웹사이트 현지화
    • 클라이언트가 독일에 있는 경우 독일 레코드로 간다

 

Geoproximity 라우팅 정책

  • 사용자와 리소스의 지리적 위치를 기반으로 트래픽을 리소스로 라우팅하도록 함
  • 정의된 편향값을 기반으로 더 많은 트래픽을 특정 리소스로 옮길 수 있다
  • 지리적 위치를 변경하려면 편향값을 지정해야한다
    • 리소스에 트래픽을 늘리기 위해선 편향값을 증가시켜 확장하면 된다
    • 리로스에 트래픽을 줄이기 위해선 편향값을 감소시켜 축소하면 된다
  • 리소스는 AWS의 리소스로 특정 리전을 등록하면 자동으로 올바른 라우팅을 계산
  • AWS 리소스가 아닌 온프레미스인 경우 위도와 경도를 지정하여 AWS가 위치를 특정해야 함
  • 고급 Route 53 트래픽 플로우를 사용해야 함

 

Multi-Value 라우팅 정책

  • 트래픽을 다중 리소스로 라우팅 할때 사용
  • Route 53은 다중 값과 리소스를 반환
  • 상태 확인과 연결하면 반환되는 하나의 인스턴스만 정상 상태 확인과 관련이 있다
  • 각각의 다중 값 쿼리에 최대 8개의 정상 레코드가 반환
  • ELB와 유사해보이지만 전혀 다르고 대체될 수 없다
  • 레코드 하나만 정상 상태를 가지면 그것을 클라이언트에게 전달할 수 있다
    • Simple 라우팅 정책과는 다르게 Simple은 상태 확인이 불가능하며 비정상일 가능성이 존재

 

Domain Registar vs DNS Service

  • 도메인 이름을 도메인 Registar를 통해 구매할 수 있고 매년 비용을 지불해야 한다
    • GoDaddy, Amazon Registrar, google Domain
  • 대게 레지스트라를 통해 구매하면 DNS 레코드 관리할 수 있다.
  • GoDaddy에서 도메인을 구매하고 Route 53으로 레코드를 관리할 수 있다
    • Nameserver(NS)를 아마존 name servers로 변경하면 된다
  • 따라서 도메인 레지스트라와 DNS 서비스를 같다고 보면 안된다
    • 도메인 레지스트라가 일부 DNS 서비스를 지원해도 같지 않다

'TIL > AWS' 카테고리의 다른 글

Amazon S3  (0) 2023.05.28
애플리케이션을 빠르게 인스턴스화 & Elastic Beanstalk  (0) 2023.05.27
Route 53을 이해하기 위한 DNS의 개념  (0) 2023.05.25
Amazon ElastiCache  (0) 2023.05.24
Amazon RDS Proxy  (0) 2023.05.24
복사했습니다!