AWS Certified Solutions Architect Associate [7] Route 53

CHAN LIM·2022년 7월 20일
0

DNS?

DNS - Domain Name System

  • 사람에게 친숙한 호스트 이름대상 서버 IP 주소번역하는 것입니다.
    • www.google.com -> 172.217.18.36
  • DNS는 인터넷의 중추로 URL과 호스트 이름을 IP로 변환하는 것을 여러분이 이해할 수 있는 방법입니다.
  • DNS에는 계층적 이름 구조가 있습니다.
    • .com
    • example.com
    • www.example.com
    • api.example.com

DNS 관련 용어

  • Domain Registrar
    • 도메인 이름을 등록하는 곳입니다.
    • Route 53, GoDaddy...
  • DNS 레코드
    • A, AAAA, CNAME, NS ...
  • 존 파일(zone file)
    • 모든 DNS 레코드를 포함합니다.
    • 호스트 이름과 IP 또는 주소를 일치시키는 방법입니다.
  • 이름 서버(Name server)
    • DNS 쿼리를 실제로 해결하는 서버입니다.
  • Top Level Domain (TLD)
    • .com, .us, .in, .gov, .org 등이 있습니다.
  • Second Level Domain (SLD)
    • amazon.com, google.com 입니다.

DNS 동작


Route 53

Route 53

  • 고가용성, 확장성을 갖춘, 완전히 관리되며 권한있는 DNS입니다.
    • 권한있는? : 고객인 여러분이 DNS 레코드를 업데이트할 수 있다.
    • 즉, DNS에 대한 완전히 제어할 수 있습니다.
  • Route 53 역시 도메인 이름 레지스트라입니다.
  • Route 53의 리소스 관련 상태 확인을 확인할 수 있습니다.
  • 100% SLA 가용성을 제공하는 유일한 AWS 서비스입니다.
  • 그런데 왜? 53일까?
    • 53은 DNS 서비스, 즉, 이름에서 사용되는 전통적인 DNS 포트입니다.

Route 53 - Records

  • Route 53에서 여러 DNS 레코드정의하고 레코드를 통해 특정 도메인으로 라우팅하는 방법을 정의합니다.
  • 각 레코드는 다음을 포함합니다.
    • 도메인/서브도메인 이름
      • example.com
    • 레코드 타입
      • A or AAAA
      • 12.34.56.78
    • Routing 정책
      • Route 53이 쿼리에 응답하는 방식
    • TTL (Time To Live)
      • DNS 리졸버(resolver)에서 레코드가 캐싱 되는 시간
  • 반드시 알아야 할 것.
    • A, AAAA, CNAME, 그리고 NS
  • 고급 레코드
    • CAA / DS / MX / NAPTR / PTR / SOA / TXT / SPF / SRV

Route 53 - Records Types

  • A
    • 호스트 이름과 IPv4 IP를 매핑합니다.
  • AAAA
    • 호스트 이름과 IPv6 IP를 매핑합니다.
  • CNAME
    • 호스트 이름을 다른 호스트 이름과 매핑합니다.
    • 대상 호스트 이름은 A나 AAAA 레코드가 될 수 있습니다.
    • Route 53에서 DNS 이름 공간 또는 Zone Apex의 상위 노드에 대한 CNAMES를 생성할 수 없습니다.
  • NS
    • 호스팅 존의 이름 서버입니다.
    • 서버의 DNS 이름 또는 IP 주소로 호스팅 존에 대한 DNS 쿼리에 응답할 수 있습니다.
    • 트래픽이 도메인으로 라우팅 되는 방식을 제어합니다.

Route 53 - Hosted Zones

  • 호스팅 존레코드의 컨테이너입니다.
  • 도메인서브도메인으로 가는 트래픽의 라우팅 방식정의합니다.

  • Public Hosted Zones
    • 퍼블릭 도메인 이름을 살 때마다 mypublicdomain.com이 퍼블릭 도메인 이름이라면 퍼블릭 호스팅 존을 만들 수 있습니다.
    • 퍼블릭 존은 쿼리에 도메인 이름 application1.mypublicdomainname.com의 IP가 무엇인지 알 수 있습니다.
  • Private Hosted Zones
    • 공개되지 않는 도메인 이름을 지원합니다.
    • 가상 프라이빗 클라우드(VPC)만이 URL을 리졸브 할 수 있습니다.
    • application1.company.internal 같은 경우입니다.
  • AWS에서 만드는 어떤 호스팅 존이든 월에 50센트를 지불해야 합니다.

EC2 인스턴스는 데이터베이스에 직접적으로 연결할 수 있고 퍼블릭 호스팅 존은 프라이빗 호스팅 존과 똑같이 동작합니다

  • Public Hosted Zones은 누구든 여러분의 레코드를 쿼리 할 수 있습니다.
  • Private Hosted Zones은 오직 프라이빗 리소스, 예컨대, VPC에서만 쿼리 할 수 있습니다.

Route 53 - Records TTL

  • TTL은 클라이언트에게 myapp.example.com에서 DNS 요청을 보내면 DNS로부터 회신 결과를 캐시하도록 요청합니다.
    • 300초의 TTL 동안
  • TTL높게 설정하면,
    • Route 53의 트래픽은 적어집니다.
    • 따라서 만약 레코드를 바꾸고자 한다면 모든 클라이언트들이 새 레코드를 캐시에 저장할 때까지 24시간을 기다려야 한다는 뜻입니다.
  • TTL낮게 설정하면,
    • DNS에는 트래픽의 양이 많아져서 비용이 많이 들게 됩니다.
      • Route 53에 들어오는 요청의 양에 따라 요금이 책정되기 때문입니다.
    • 오래된 레코드의 보관 시간은 짧아지며 레코드 변경이 빨라집니다.
    • 레코드 변경 전반이 더욱 편리합니다.

CNAME vs Alias

가정
AWS의 리소스를 사용하는 경우 호스트 이름이 노출됩니다.
그리고 보유한 도메인에 호스트 이름을 매핑하고자 하실 수 있습니다.

  • 두 가지 옵션
    • CNAME
      • CNAME은 호스트 이름이 다른 호스트 이름으로 향하도록 할 수 있습니다.
      • 예를 들어 app.mydomain.com이 blabla.anything.com으로 향하는 식
      • 루트 도메인 이름이 아닌 경우에만 가능합니다.
    • Alias
      • 이건 Route 53에 한정되지만 호스트 이름이 특정 AWS 리소스로 향하도록 할 수 있습니다.
      • 예를 들어 app.mydomain.com이 blabla.amazonaws.com를 향하는 식
      • 루트 및 비루트 도메인 모두에 작동합니다.
      • 무료 입니다.
      • 자체적으로 상태 확인이 가능합니다.

Alias Records

  • AWS의 리소스에만 매핑이 되어 있습니다.
  • DNS의 확장 기능으로 시중의 모든 DNS에서 가능합니다.
  • 만약 기반 ALB에서 IP가 바뀌면 별칭 레코드는 이걸 자동으로 바로 인식할 겁니다.
  • CNAME과 달리, Alias RecordsZone Apex라는 DNS 네임스페이스를 상위 노드로 사용될 수 있습니다.
  • 리소스는 IPv4나 IPv6 중 하나입니다.
  • TTL을 설정할 수 없습니다.
    • Route 53에 의해 자동으로 설정이 됩니다.

  • Target

  • Elastic Load Balancer
  • CloudFront
  • API Gateway
  • Elastic Beanstalk environments
  • S3 Websites
  • VPC Interface Endpoints
  • Global Accelerator accelerator
  • 같은 호스팅 존의 Route 53 record

Route 53 - Routing Policies

  • Route 53DNS 쿼리에 응답하는 것을 돕습니다.
  • 여기서 라우팅이라는 단어를 혼동하셔서는 안 됩니다.
    • 로드 밸런서가 트래픽을 백엔드 EC2 인스턴스로 라우팅하는 것과는 다른 상황입니다.
    • DNS는 트래픽을 라우팅하지 않습니다.
    • DNS는 DNS 쿼리에만 응답하게 되고 클라이언트들은 이를 통해 HTTP 쿼리 등을 어떻게 처리해야 하는지를 알 수 있게 되는 것입니다.
  • 종류
    • Simple (단순)
    • Weighted (가중치 기반)
    • Failover Latency based (장애 조치 지연 시간 기반)
    • Geolocation (지리적)
    • Multi-Value Answer (다중 값 응답)
    • Geoproximity (지리 근접)

Simple

  • 일반적으로 트래픽을 단일 리소스로 보내는 방식입니다.

  • 동일한 레코드여러 개의 값을 지정하는 것도 가능합니다.
  • 이렇게 DNS에 의해 다중 값의 받은 경우에는 클라이언트 쪽에서 그 중 하나를 무작위로 고르게 됩니다.
  • Alias records를 함께 사용하면 하나의 AWS 리소스만을 대상으로 지정할 수 있습니다.
  • 상태 확인은 할 수 없습니다.

Weighted

  • 가중치 기반 라우팅 정책
  • 가중치를 활용해 요청의 일부 비율을 특정 리소스로 보내는 식의 제어가 가능합니다.
  • DNS 레코드들은 동일한 이름과 유형을 가져야 합니다.
  • 상태 확인과도 관련될 수 있습니다.
  • 서로 다른 지역들에 걸쳐 로드 밸런싱을 할 때나 적은 양의 트래픽을 보내 새 애플리케이션을 테스트하는 경우에도 사용합니다.
    • 가중치 0의 값을 보내게 되면 특정 리소스에 트래픽 보내기를 중단해 가중치를 바꿀 수 있습니다.
    • 모든 리소스 레코드 가중치의 값이 0인 경우에는 모든 레코드가 다시 동일한 가중치를 갖게 됩니다.

Latency

  • 지연 시간 기반 라우팅 정책
  • 지연 시간이 가장 짧은, 즉 가장 가까운 리소스로 리다이렉팅을 하는 정책입니다.
  • 지연 시간에 민감한 웹사이트애플리케이션이 있는 경우에 아주 유용한 정책입니다.
  • 지연 시간유저가 레코드로 가장 가까운 식별된 AWS 리전에 연결하기까지 걸리는 시간을 기반으로 측정됩니다.
  • 상태 확인이 가능합니다.

Failover (Active-Passive)

  • 장애 조치에 관한 것

Geolocation

  • 사용자의 실제 위치를 기반으로 합니다.
  • 일치하는 위치가 없는 경우는 기본 레코드를 생성해야 합니다.
  • 사용 사례로는 콘텐츠 분산을 제한하고 로드 밸런싱 등을 실행하는 웹사이트 현지화가 있습니다.
  • 레코드는 상태 확인과 연결할 수 있습니다.

Geoproximity Routing

  • 사용자리소스지리적 위치를 기반으로 트래픽을 리소스로 라우팅하도록 합니다.
  • 편향값을 사용해 특정 위치를 기반으로 리소스를 더 많은 트래픽을 이동하는 것입니다.
    • 특정 리소스에 더 많은 트래픽을 보내려면 편향값을 증가시켜서 확장하면 됩니다.
    • 리소스에 트래픽을 줄이려면 편향값을 음수로 축소시키면 됩니다.
  • 리소스는 AWS의 리소스로 속한 특정 리전을 지정하면 목록에서 자동으로 올바른 라우팅을 계산합니다.
  • AWS 리소스가 아닌 온프레미스 데이터 센터인 경우 위도와 경도를 지정해서 AWS가 위치를 파악하도록 해야 합니다.
  • 편향 활용을 위해 고급 Route 53 트래픽 플로우를 사용합니다.

  • 트래픽 플로우라는 기능으로 복잡한 지리 근접 레코드를 설계합니다.
    • 버전을 지정하고 호스팅 영역을 적용할 수 있으며 호스팅 영역에서 쉽게 변경하고 적용할 수 있습니다.

Multi-Value

  • 트래픽을 다중 리소스로 라우팅할 때 사용합니다.
  • Route 53은 다중 값과 리소스를 반환합니다.
  • 상태 확인과 연결하면 다중 값 정책에서 반환되는 유일한 리소스는 정상 상태 확인과 관련이 있습니다.
  • 각각의 다중 값 쿼리에 최대 8개의 정상 레코드가 반환됩니다.
  • ELB와 유사해 보이지만 ELB를 대체할 수는 없습니다.
  • 클라이언트 측면의 로드 밸런싱인 것입니다.

상태 확인

Health Checks (상태 확인)

  • 주로 공용 리소스에 대한 상태를 확인하는 방법입니다.
  • DNS의 장애 조치를 자동화하기 위한 작업입니다.
    • 공용 엔드 포인트를 모니터링하는 것
      • (애플리케이션, 서버, 혹은 다른 AWS 리소스)
    • 다른 상태 확인을 모니터링하는 상태 확인
      • (계산된 상태 확인)
    • CloudWatch 경보의 상태를 모니터링하는 상태 확인
      • 제어가 쉽고 개인 리소스들에 아주 유용합니다.
  • 상태 확인들은 각자의 메트릭을 사용하는데 CloudWatch의 지표에서도 확인이 가능합니다.

Health Checks - 특정 엔드 포인트

  • 전 세계에서 온 15개의 상태 확인이 엔드 포인트의 상태를 확인하고 임계값을 정상 혹은 비정상으로 설정합니다.
  • 30초마다 정기적으로 확인할 수도 있고 비용이 더 들지만 10초마다 할 수도 있습니다.
    • 빠른 상태 확인
  • HTTP, HTTPS와 TCP 등 많은 프로토콜을 지원합니다.
  • 18% 이상의 상태 확인이 엔드 포인트를 정상이라고 판단하면 Route 53도 이를 정상이라고 간주합니다.
  • 상태 확인에 사용될 위치도 선택할 수 있습니다.
  • 상태 확인은 로드 밸런서로부터 2xx나 3xx의 코드를 받아야만 통과가 됩니다.
  • 텍스트 기반 응답일 경우 상태 확인은 응답의 처음 5,120바이트를 확인합니다.
  • 상태 확인이 여러분의 애플리케이션 밸런서나 엔드 포인트에 접근이 가능해야 합니다.

Health Checks - 계산된 상태 확인

  • 여러 개의 상태 확인 결과를 하나로 합쳐주는 기능입니다.
  • 상태 확인들을 모두 합치기 위한 조건은 OR와 AND 또는 NOT입니다.
  • 하위 상태 확인을 256개까지 모니터링할 수 있고 상위 상태 확인이 통과하기 위해 몇 개의 상태 확인을 통과해야 하는지도 지정할 수 있습니다.
  • 상태 확인이 실패하는 일 없이 상위 상태 확인이 웹사이트를 관리 유지하도록 하는 경우에 사용됩니다.

Health Checks - Private Hosted Zones

  • 개인의 리소스를 모니터링하는 것은 어려울 수 있는데 모든 Route 53의 상태 확인이 공용 웹에 있기 때문에 이들은 VPC의 외부에 있습니다.
  • 개인 엔드 포인트에 접근이 불가능합니다.

  • 그래서 CloudWatch 지표를 만들어 CloudWatch 알람을 할당하는 식으로 이 문제를 해결할 수 있습니다.
  • 그러면 CloudWatch 경보를 상태 확인에 할당할 수 있습니다.
  • 그리고 메트릭이 침해되는 경우 CloudWatch 알람을 생성하게 됩니다.
  • 개인 리소스에 대한 상태 확인을 만든 것이나 다름이 없습니다.

Domain Registra vs. DNS Server

Domain Registra != DNS Server
모든 도메인 이름 레지스트라가 일부 DNS 기능을 제공하더라도 말이죠.

다시 정리하자면, 도메인을 타사 등록 대행사에서 구매해도 DNS 서비스 제공자로 Route 53을 사용 가능한데 사용하려면 Route 53에서 공용 호스팅 영역을 생성한 뒤 도메인을 구매한 타사 웹사이트에 NS 혹은 이름 서버를 업데이트하면 Route 53 이름 서버를 가리키게 됩니다.

  • 도메인 이름 레지스트라를 통해 원하는 도메인 이름을 구매할 수 있습니다.
  • 매년 비용을 지불해야 합니다.
  • 레지스트라를 통해 도메인을 등록하면 DNS 레코드 관리를 위한 DNS 서비스를 제공합니다.
  • DNS 레코드로 AWS Route 53 등을 사용하지 않고 Amazon 레지스트라를 사용하거나 반대로 GoDaddy로 도메인을 등록해도 됩니다.
  • DNS 레코드는 Amazon의 Route 53으로 관리하면 아주 완벽히 허용되는 조합입니다.

From
AWS Certified Solutions Architect Associate 시험합격!

profile
클라우드, 데이터, DevOps 엔지니어 지향 || 글보단 사진 지향

0개의 댓글