Route 53
이번 장에서는 SAA를 준비하며 Route53에 대해서 알아보도록 한다.
DNS
- DNS(Domain Name System)은 인간에게 친숙한 도메인 이름을 머신의 IP 주소로 변경시켜 주는 시스템이다. 예를 들어,
www.google.com
→172.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 확인자에 캐시된 시간
- Domain/subdomain Name: 예)
- 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.com
⇒blabla.anything.com
) - Root 도메인에는 사용이 불가능하다. 예를 들어,
mydomain.com
에는 사용이 불가능하다.
- 호스트 이름이 다른 호스트 이름을 가리킨다.(
- Alias
- AWS 리소스에 대한 호스트네임 포인트이다.(
app.mydomain.com
⇒blabla.amazonaws.com
) - Root 도메인과 Root 도메인이 아닌 도메인에 사용이 가능하다. 예를 들어, CNAME은
mydomain.com
사용이 불가능하였지만 Alias에서는 사용이 가능하다. - 무료로 사용이 가능하다.
- 기본적으로
health-check
를 제공한다.
- AWS 리소스에 대한 호스트네임 포인트이다.(
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 서비스 공급자로 사용할 수 있으며 순서는 아래와 같다.
- Route 53에서 호스팅 영역 생성
- 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 |