본문 바로가기

Infrastructure/Certificate

[SAA] Route 53

Route 53

이번 장에서는 SAA를 준비하며 Route53에 대해서 알아보도록 한다.


DNS

  • DNS(Domain Name System)은 인간에게 친숙한 도메인 이름을 머신의 IP 주소로 변경시켜 주는 시스템이다. 예를 들어, www.google.com172.17.18.36과 같이 변경된다.
  • DNS는 인터넷의 중추로 볼 수 있다.
  • DNS는 계층적 명명 구조를 사용하며 예시는 아래와 같다.
    • .com
    • example.com
    • www.example.com
    • api.example.com

DNS Terminologies(DNS 용어)

  • Domain Registrar(도메인 등록 대행자): Amazon Route 53, Go Daddy
  • DNS Records(DNS 레코드): A, AAAA, CNAME, NS
  • Zone File(영역 파일): DNS 레코드를 포함
  • Name Server(이름 서버): DNS 쿼리를 확인한다. (권한 또는 비권한)
  • Top Level Domain (TLD, 최상위 도메인): .com, .us, .in, .gov, .org
  • Second Level Domain (SLD, 차상위 도메인): amazon.com, google.com

DNS 작동 방식


Amazon Route 53

  • High Available(고가용성), Scalable(확장성), Fully Managed and Authoriative DNS(완전 관리형 및 권한 있는 DNS)
    • 신뢰할 수 있음 = 우리가 DNS 레코드를 업데이트할 수 있음
  • Route 53은 도메인 등록 기관이기도 하다.
  • 우리가 사용하고 있는 리소스의 Health-Check도 가능하다.
  • 100% 가용성 SLA를 제공하는 유일한 AWS 서비스
  • 왜 Route 53인가? 53은 전통적인 DNS 포트에 대한 참조이다.

Records

  • 도메인에 대한 트래픽 라우팅 방법
  • 각 레코드에는 아래의 정보가 포함된다.
    • Domain/subdomain Name: 예) example.com
    • Record Type: 예) A or AAAA
    • Value: 예) 12.34.56.78
    • Routing Policy: 예) Route 53이 쿼리에 응답하는 방법
    • TTL: 예) 레코드가 DNS 확인자에 캐시된 시간
  • Route 53은 아래의 DNS 레코드 유형을 지원한다.
    • 필수: A / AAAA / CNAME / NS
    • 심화: CAA / DS / MX / NAPTR / PTR / SOA / TXT / SPF / SRV

Record Types

  • A: 호스트 이름을 IPv4에 매핑한다.
  • AAAA: 호스트 이름을 IPv6에 매핑한다.
  • CNAME: 호스트 이름을 다른 호스트 이름에 매핑한다.
    • 대상은 A 또는 AAAA 레코드를 가지고 있는 도메인 이름이다.
    • DNS 네임스페이스의 맨 위 노드에 대한 CNAME 레코드를 만들 수 없다.
    • 예를 들어, example.com에 대해서는 생성할 수 없지만 www.example.com에 대해서는 생성할 수 있다.
  • NS: 호스팅 영역의 Name Server이다.
    • 도메인에 대한 트래픽 라우팅 방법을 제어한다.

Hosted Zones(호스팅 영역)

  • 도메인 및 하위 도메인으로 트래픽을 라우팅하는 방법을 정의하는 레코드 컨테이너다.
    • Public Hosted Zones(공용 호스팅 영역): 인터넷에서 트래픽을 라우팅하는 방법을 지정하는 레코드(공개 도메인 이름)를 포함한다.
    • Private Hosted Zones(프라이빗 호스팅 영역): 하나 이상의 VPC(프라이빗 도메인 이름)내에서 트래픽을 라우팅하는 방법을 지정하는 레코드를 포함한다.
    • “Public Hosted Zones”와 “Private Hosted Zones”의 차이는 아래와 같다.

Records TTL

  • 높은 TTL: 예) 24 시간
    • Route 53 트래픽이 감소한다.
    • 오래된 기록일 가능성이 있다.
  • 낮은 TTL: 예) 60 초
    • Route 53의 트래픽이 증가하여 비용이 증가한다.
    • 오래된 레코드를 더 적은 시간동안 유지한다.
    • 기록 변경이 용이하다.
  • Alias Records(별칭 레코드)를 제외하고, 각 DNS 레코드에 대해 TTL이 필수다.

CNAME vs Alias

  • AWS 리소스(Load Balancer, CloudFront 등)은 AWS 호스트 이름을 노출한다.
    • lb1-1234.northeast-2.elb.amazonaws.com과 같은 이름을 노출하며 우리는 myappdomain.com과 같은 이름을 노출하기를 원한다.
  • CNAME
    • 호스트 이름이 다른 호스트 이름을 가리킨다.(app.mydomain.comblabla.anything.com)
    • Root 도메인에는 사용이 불가능하다. 예를 들어, mydomain.com에는 사용이 불가능하다.
  • Alias
    • AWS 리소스에 대한 호스트네임 포인트이다.(app.mydomain.comblabla.amazonaws.com)
    • Root 도메인과 Root 도메인이 아닌 도메인에 사용이 가능하다. 예를 들어, CNAME은 mydomain.com사용이 불가능하였지만 Alias에서는 사용이 가능하다.
    • 무료로 사용이 가능하다.
    • 기본적으로 health-check를 제공한다.

Alias Records

  • AWS 리소스의 호스트이름에 매핑된다.
  • DNS 기능의 확장이다.
  • 자동으로 리소스의 IP 주소 변경 사항을 인식한다.
  • CNAME과 다르게, DNS 네임스페이스의 최상위 노드에 사용이 가능하다.
  • AWS 리소스에 대한 Alias 레코드는 항상 A/AAAA(IPv4/IPv6) 유형이다.
  • TTL을 설정할 수 없다.

Alias Records Targets

  • Alias 레코드의 대상은 아래와 같다.
    • Elastic Load Balancers
    • CloudFront Distributions
    • API Gateway
    • Elastic Beanstalk environments
    • S3 Websites
    • VPC Interface Endpoints
    • Global Accelerator
    • 동일한 호스팅 영역의 Route 53 레코드
  • 단, EC2 DNS 이름에 대해 Alias 레코드를 설정할 수 없다.

Routing Policy

  • Route 53이 DNS 쿼리에 응답하는 방식을 정의한다.
  • “Routing(라우팅)”이라는 단어로 혼동해서는 안된다.
    • 트래픽을 라우팅하는 로드 밸런서 라우팅과 동일하지 않다.
    • DNS는 트래픽을 라우팅하지 않고 DNS 쿼리에만 응답한다.
  • Route 53은 아래와 같은 라우팅 정책을 지원한다.
    • Simple(단순)
    • Weighted(가중치)
    • Failover(장애 조치)
    • Latency Based(지연 기반)
    • Geolocation(지리적 위치)
    • Multi-Value Answer(다중 값 응답)
    • Geoproximity(지리적 근접성, Route 53 트래픽 흐름 기능 사용)

Simple

  • 일반적으로 트래픽을 단일 리소스로 라우팅한다.
  • 동일한 레코드에 여러 값을 지정할 수 있다.
  • 여러 값이 반환되는 경우 클라이언트가 임의의 값을 선택한다.
  • Alias가 활성화된 경우 AWS 리소스를 하나만 지정한다.
  • Health-Check를 통한 연결을 할 수 없다.

Weighted

  • 각 서버로 이동하는 요청의 비율(%)을 제어한다.
  • 각 레코드에 상대적 가중치를 할당한다.
    • traffic(%) = Weight for a specific record / Sum of all the weights for all records
    • 가중치의 합은 100이 될 필요는 없다.
  • DNS 레코드는 이름과 유형이 같아야 한다.
  • Health-Check를 통한 연결이 가능하다.
  • 사용사례는 아래와 같다.
    • 지역 간 로드 밸런싱
    • 새로운 애플리케이션 버전 테스트
  • 리소스에 대한 트래픽 전송을 중지하려면 레코드에 가중치를 0으로 할당하면 된다.
  • 모든 레코드의 가중치가 0이면 모든 레코드가 동일하게 반환된다.

Latency-based(대기 시간 기반)

  • 대기 시간이 가장 짧은 리소스로 리디렉션한다.
  • 사용자의 지연 시간이 우선인 경우 매우 유용하다.
  • 지연 시간은 사용자와 AWS간의 트래픽을 기반으로 한다.
  • 이미지를 기준으로 독일 사용자는 지연시간이 짧은 경우 미국으로 연결될 수 있다.
  • Health-Check를 통한 연결이 가능하며 장애 조치 기능이 있다.

Health Checks

  • 공개된 리소스를 대상으로 HTTP Health-Check를 진행한다.
  • 상태 확인 → 자동 DNS 장애 조치:
    • 엔드포인트(애플리케이션, 서버, 기타 AWS 리소스)를 모니터링하는 상태 확인
    • 다른 상태 확인을 모니터링하는 상태 확인(계산된 상태 확인)
    • CloudWatch 경보를 모니터링하는 상태 확인
      • 예를 들어, DynamoDB 스로틀링, RDS에 대한 경보, 사용자 지정 지표 등등
      • 프라이빗 리소스에 유용하다.
  • Health-Check는 CloudWatch 지표와 통합된다.

Monitor an Endpoint

  • 약 15개의 글로벌 상태 검사기가 엔드포인트 상태를 확인한다.
    • 정상/비정상 임계값 - 3(기본값)
    • 간격 - 30초 (10초로 설정할 수 있으며 더 높은 비용이 발생)
    • 지원하는 프로토콜- HTTP, HTTPS, TCP
    • 만약 18%이상의 상태 검사기가 엔드포인트가 정상이라고 보고하면 Route 53은 엔드포인트가 정상이라고 판단한다. 만약 그렇지 않으면 비정상이라고 판단한다.
    • Route 53로 원하는 위치를 선택하는 기능을 사용할 수 있다.
  • 상태 확인은 엔드포인트가 2xx 및 3xx 상태 코드로 응답할 때만 통과한다.
  • 상태 확인은 응답의 처음 5120 bytes에 있는 텍스트를 기반으로 통과/실패 하도록 설정할 수 있다.
  • “Route 53 상태 검사기”를 통해서 들어오는 요청을 허용하도록 라우터/방화벽을 구성한다.

Calculated Health Chekcs(계산된 상태 확인)

  • 여러 상태 점검 확인 결과를 하나의 상태 점검으로 결합할 수 있다.
  • OR, AND, NOT 과 같은 연산을 사용할 수 있다.
  • 최대 256개의 “Child”의 상태 점검을 결합할 수 있다.
  • “Parent”가 통과하기 위해 통과해야 하는 상태 확인의 수를 지정한다.
    • 모든 상태 확인이 실패하지 않도록 웹사이트 유지 관리를 수행해야 하는 경우에 사용된다.

Private Hosted Zones

  • Route 53 상태 검사기는 VPC 외부에 위치하기 때문에 Private Endpoint에는 액세스할 수 없다.
  • CloudWatch 지표를 생성하고 CloudWatch 경보를 연결한 다음 경보 자체를 확인하는 “Health-Check”를 생성할 수 있다.

Failover(Active-Passive)

Geolocation(지리적 위치)

  • “Latency-based”와는 다르며, 사용자의 위치를 기반으로 한다.
  • 대륙, 국가 또는 미국 주별로 위치 지정 (중복되는 경우 가장 정확한 위치 선택)
  • 일치하는 위치가 없는 경우 사용해야 하기 때문에 “Default” 레코드를 생성해야 한다.
  • 웹사이트 현지화, 콘텐츠 배포 제한, 로드 밸런싱 등에 사용된다.
  • Health-Checks와 연동되어 사용 가능하다.

Geoproximity(지리적 근접성)

  • 사용자와 지리적 위치에 따라 리소스로 트래픽을 라우팅한다.
  • 정의된 편향(bias)을 기반으로 더 많은 트래픽을 리소스로 전환할 수 있는 기능을 가지고 있다.
  • 지리적 영역의 크기를 변경하려면 편향(bias)값을 아래와 같이 지정하면 된다.
    • 확장(1 ~ 99) - 리소스에 대한 더 많은 트래픽
    • 축소(-99 ~ -1) - 리소스에 대한 트래픽 감소
  • 리소스는 아래와 같다.
    • AWS 리소스(AWS 리전 지정)
    • 비 AWS 리소스(특정 위도 및 경도 지정)
  • 이러한 기능을 사용하기 위해서는 “Route 53 Traffic Flow(트래픽 흐름)”을 사용해야 한다.

Traffic Flow

  • 크고 복잡한 구성에서 레코드 생성 및 유지 관리 프로세스 간소화한 기능이다.
  • 복잡한 라우팅 결정 트리를 관리하는 시각적 편집기이다.
  • 아래와 같이 “Traffic Flow”를 설정할 수 있다.
    • 서로 다른 Route 53 호스팅 영역에 적용이 가능하다.
    • 버전관리를 지원한다.

Multi-Value

  • 트래픽을 여러 리소스로 라우팅할 때 사용한다.
  • Route 53은 여러 값/리소스를 반환한다.
  • Health-Checks와 연동할 수 있으며 정상 리소스에 대한 값만 반환한다.
  • 각 다중 쿼리에 대해 최대 8개의 정상 레코드가 반환된다.
  • “Multi-Value”는 ELB를 대체할 수 없다.

Domain Registar vs DNS Service

  • 일반적으로 연간 요금을 지불하여 도메인 등록 기관에 도메인 이름을 구입하거나 등록한다.
    • 예를 들어, “GoDaddy”, “Amazon Registrar Inc”가 있다.
  • 도메인 등록 기관은 일반적으로 DNS 레코드를 관리하기 위한 DNS 서비스를 제공한다.
  • 그러나 다른 DNS 서비스를 사용하여 DNS 레코드를 관리할 수 있다.
    • 예를 들어 “GoDaddy”에서 도메인을 구입하고 Route 53을 사용하여 DNS 레코드를 관리할 수 있다.

3rd Party Registrar with Amazon Route 53

  • 제 3의 등록 대행자에서 도메인을 구매한 경우에도 Route 53을 DNS 서비스 공급자로 사용할 수 있으며 순서는 아래와 같다.
    1. Route 53에서 호스팅 영역 생성
    2. Route 53 이름을 사용하도록 타사 웹사이트의 NS 레코드를 업데이트
  • Domain Registrar(도메인 등록 기관)은 DNS 서비스와는 다르다.
  • 그러나 일반적으로 대부분의 “Domain Registrar”은 일부 DNS 기능을 함께 제공한다.

참고 자료

'Infrastructure > Certificate' 카테고리의 다른 글

[SAA] Discussions - MyClothes.com  (0) 2022.11.16
[SAA] Discussions - WhatIsTheTime.com  (0) 2022.11.16
[SAA] AWS Fundamentals - ElastiCache  (0) 2022.11.02
[SAA] AWS Fundamentals - Aurora  (0) 2022.11.02
[SAA] AWS Fundamentals - RDS  (0) 2022.11.02