
DNS - Domain Name System
- 사람에게 친숙한 호스트 이름을 서버 IP 주소로 번역해 준다
- Domain Register
- 도메인 이름을 등록하는 곳
- Amazon Route 53, GoDaddy
- DNS Records
- Zone File
- Name Server
- Top Level Domain (TLD)
- Second Level Domain (SLD)
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”
Route 53 - Record Types “AAAA”
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가지만 존재한다
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 레코드 업데이트하기 이다
글이 많은 도움이 되었습니다, 감사합니다.