Route 53

JINWOO OH·2023년 7월 20일

SAA

목록 보기
8/19
post-thumbnail

DNS - Domain Name System

  • 사람에게 친숙한 호스트 이름을 서버 IP 주소로 번역해 준다
  • Domain Register
    • 도메인 이름을 등록하는 곳
    • Amazon Route 53, GoDaddy
  • DNS Records
    • A, AAAA, CNAME
  • Zone File
    • DNS record를 포함
  • Name Server
    • DNS 쿼리를 실제로 해결하는 서버
  • Top Level Domain (TLD)
    • .com, .us, .in
  • Second Level Domain (SLD)
    • amazon.com, google.com

DNS Works

  • 웹 브라우저가 example.com에 접근하기 위해서는 로컬 DNS 서버에 물어본다
  • 로컬 DNS 서버는 회사에 의해 할당되고 관리되거나 ISP에 동적으로 할당된다
  • 루트 DNS 서버가 모른다면 .com (TLD)으로 가보라고 알려준다

Amazon Route 53

  • 고가용성, 확장성, 완전하게 관리(유저가 DNS 레코드를 업데이트 할 수 있다)되며 권한이 있는 DNS
  • Route 53의 리소스 관련 상태확인을 할 수 있다

Route 53 - Records

  • 레코드를 통해 특정 도메인으로 라우팅
  • 각 레코드는 도메인이나 example.com과 같은 서브도메인 이름과 같은 정보를 포함한다
  • 레코드 종류는 A, AAAA, CNAME, NS가 있다
  • Value는 123.456.789.123과 같다
  • Routing Policy는 Route 53이 쿼리에 응답하는 방식이다
  • TTL은 DNS Resolver에서 레코드가 캐싱 되는 시간이다

Route 53 - Record Types “A”

  • 호스트 이름과 IPv4를 매핑

Route 53 - Record Types “AAAA”

  • 호스트 이름과 IPv6를 매핑

Route 53 - Record Types “CNAME”

  • 호스트 이름을 다른 호스트 이름과 매핑
  • 대상 호스트 이름은 A나 AAAA 레코드가 될 수 있다
  • DNS 이름 공간 또는 Zone Apex의 상위 노드에 대한 CNAME을 생성할 수 없다
    • example.com에 CNAME을 만들 수는 없지만 www.example.com에 대한 CNAME 레코드는 만들 수 있다

Route 53 - Record Types “NS”

  • 호스팅 존의 이름 서버
  • 서버의 DNS이름 또는 IP 주소로 호스팅 존에 대한 DNS쿼리에 응답할 수 있다
  • 트래픽이 도메인으로 라우팅 되는 방식을 제어한다

Route 53 - Hosted Zones

  • 레코드의 컨테이너
  • 도메인과 서브도메인으로 가는 트래픽의 라우팅 방식을 정의
  • Public Hosted Zones
    • 퍼블릭 도메인 이름을 살 때
    • 공개된 클라이언트로부터 쿼리에 응답할 수 있다
  • Private Hosted Zones
    • 공개되지 않은 도메인 이름을 지원
    • VPC만이 URL을 리졸브 할 수 있다

  • test.jinwoooo.com으로 가면 호스팅 존에 값이 무엇인지 요청한다
  • 호스팅 존은 값이 11.22.33.44라고 알려준다

CLI에서 확인하는 방법

  • windows는 nslookup mac은 dig로 확인 할 수 있다
  • AWS의 CloudShell을 활용하는 방법은 아래와 같다
    • sudo yum install -y bind-utils

Route 53 - Records TTL (Time To Live)

  • DNS 요청 쿼리를 계속해서 자주 보내는 상황을 원치 않음
  • TTL이 300초일 때 300초 동안 클라이언트는 결과를 캐시한다

  • 위 사진에서 257은 TTL로 257초동안에는 동일한 응답을 받는다
    • 컴퓨터 캐시 내에 저장이 되어 있으므로

Route 53 CNAME vs Alias

  • AWS 리소스를 사용하는 경우 호스트 이름이 노출되는데 보유한 도메인에 호스트 이름을 매핑할때 사용

Route 53 CNAME

  • 호스트 이름이 다른 호스트 이름으로 향하도록 설정
  • 루트 도메인 이름이 아닌 경우에만 가능 (아래의 경우 mydomain.com은 불가능하다)
    • app.mydomain.com이 sakin.jinwoooo.com으로 향하는 형식

Route 53 Alias

  • Route 53에 한정
  • 호스트 이름이 특정 AWS 리소스로 향하도록 한다
  • CNAME과 달리 루트 도메인도 가능하다
  • 레코드 타입은 A나 AAAA이다
  • TTL을 설정 할 수 없다 (Route 53에 의해 자동으로 설정이 된다)
  • Alias의 대상은 ELB, CloudFront, API Gateway, S3 Websites, Elastic Beanstalk 등이 가능하다
  • 하지만 S3 버킷은 불가능
  • EC2의 DNS 이름은 Alias 레코드의 대상이 될 수 없다

Routing Policies

  • Route 53이 DNS 쿼리에 응답하는 것을 돕는다
  • Route 53이 지원하는 라우팅 정책은
    • Simple
    • Weighted
    • Failover
    • Latency based
    • Geolocation
    • Multi-Value Answer
    • Geoproximity

Routing Policies - Simple

  • 트래픽을 단일 리소스로 보내는 방식
  • 동일한 레코드에 여러 개의 값을 지정하는 것도 가능하다
    • 클라이언트쪽에서 받은 여러 개의 값중 하나를 무작위로 고른다
  • Health Check는 불가능하다
  • Simple policy와 Alias를 같이 사용하게 되면 하나의 AWS 리소스만을 대상으로 지정할 수 있다

Routing Policies - Weightd

  • 가중치를 활용해 요청의 일부 비율을 특정 리소스로 보내는 식의 제어가 가능하다
  • 가중치에 따라 리다이렉트가 일어난다
  • 서로 다른 지역들에 걸쳐 로드 밸런싱
  • 적은 양의 트래픽을 보내 새 애플리케이션을 테스트 할 때

Routing Policies -Latency-based

  • 지연 시간이 가장 짧은, 가장 가까운 리소스로 리다이렉팅
  • 지연 시간에 민감한 웹사이트나 애플리케이션이 있는 경우 유용한 정책
    • 이 때 지연 시간은 유저가 레코드로 가장 가까운 식별된 AWS 리전에 연결하기까지 걸리는 시간을 기반으로 측정

Routing Policies - Health Checks

  • 주로 공용 리소스에 대한 상태를 확인
  • 개인 리소스의 상태를 확인하는 방법도 존재
  • 3가지 health check의 방법
    • 공용 엔드 포인트를 모니터링 (애플리케이션, 서버, 다른 AWS 리소스)
    • 다른 health check를 모니터링 (Calculated Health Checks)
    • CloudWatch 경보의 상태를 모니터링 (개인 리소스들에 유용)
  • 18% 이상의 health check가 엔드 포인트를 정상이라고 판단하면 Route 53도 정상이라고 판단
  • heath check는 2xx나 3xx의 코드를 받아야 통과된다
  • 텍스트 기반 응답일 경우 응답의 처음 5,120바이트를 확인한다 (응답 자체에 해당 텍스트가 있는 지확인)
  • health check의 작동이 가능하려면 health check가 ALB나 엔드 포인트에 접근이 가능해야 한다

Route 53 - Cacluated Health Checks

  • 여러 개의 health check 결과를 하나로 합쳐주는 기능
  • 하위 health check를 합치는 조건은 OR, AND, NOT이며 하위 상태 확인을 256개까지 모니터링 할 수 있다

Routing Policies - Failover (Active-Passive)

  • health check의 연결이 필수적이다
  • 기존의 인스턴스와 연결된 health check가 비정상이라고 판단하면 준비되어있는 보조 인스턴스에 연결한다
  • Faliover record type은 2가지만 존재한다
    • primary
    • secondary

Routing Policies - Geolocation (지리 위치)

  • 사용자의 실제 위치를 기반으로 한다
  • 가장 정확한 위치가 선택되어 그 IP로 라우팅된다
  • 콘텐츠 분산을 제한하고 로드 밸런싱 등을 실행하는 웹사이트 현지화에서 사용한다
  • health check와 연결 할 수 있다

Geoproximity Routing Policy (지리 근접 라우팅)

  • 사용자와 리소스의 지리적 위치를 기반으로 트래픽을 리소스로 라우팅
    • bias value (편향값)을 사용해 특정 위치를 기반으로 리소스를 더 많은 트래픽을 이동
      • 특정 리소스에 더 많은 트래픽을 보내려면 편향값을 증가시켜서 확장
      • 리소스에 트래픽을 줄이려면 편향값을 음수로 축소
      • 편향값이 0이면 사용자 위치에서 가까운 리전의 리소스로 이동

Routing Policies - IP-based Routing

  • 클라이언트 IP 주소를 기반으로 라우팅을 정의
  • Route 53에서 CIDR 목록을 정의한다 (클라이언트의 IP 범위)
  • CIDR에 따라 트래픽을 어느 로케이션으로 보내야 하는지 결정
  • IP를 미리 알고 있으므로 성능을 최적화 할 수 있다
  • 네트워크 비용의 절감 (IP가 어디서 오는지 알기 때문)

Routing Policies - Multi-Value

  • 트래픽을 다중 리소스로 라우팅할 때 사용
  • Route 53은 다중 값과 리소스를 반환
  • 각각의 다중 값 쿼리에 최대 8개의 정상 레코드가 반환
  • health check와 연결하면 다중 값 정책에서 반환되는 리소스가 안전하다는 것을 알 수 있음

Registar

  • 레지스트라를 통해 도메인을 등록하면 DNS 레코드 관리를 위한 DNS 서비스를 제공한다
  • Amazon 호스트 이름으로 DNS 이름을 등록했다면 DNS 레코드 관리를 위한 Route 53 호스팅 존을 가진다

타사 등록 대행사를 통해 도메인을 구매 했을 경우

  • DNS 서비스 제공자로 Route 53을 사용 할 수 있지만 사용하기 위해서는 Route 53에서 공용 호스팅 영역을 생성한 뒤 도메인을 구매한 타사 웹사이트에서 NS 혹은 이름 서버를 업데이트하면 Route 53 이름 서버를 가리키게 된다
  • 위와 같은 작업을 한줄로 표현하면 공용 호스팅 영역을 생성하고 타사 registar NS 레코드 업데이트하기 이다

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

글이 많은 도움이 되었습니다, 감사합니다.

답글 달기