SMALL
1. DNS (Domain Name System)
- 사람이 이해할 수 있는 호스트 이름을 댇상 서버 IP주소로 변환하는 역할
- www.google.com => 172.217.18.36
- 인터넷 기반의 시스템
- 계층적인 네이밍 구조 사용
- 용어 정리
- Domain Register: Route 53, GoDaddy
- DNS Records: A, AAAA, CNAME, NS ...
- Zone Filee: contains DNS records
- Name Server: resolves DNS queries(Authoritative or Non-Authoritative)
- Top Level Domain(TLD - 최상위 도메인): .com, .us, .in, .gov, .org ...
- Second Level Domain(SLD): amazon.com, google.com
- Sub Domain: www.amazon.com
- 전체는 FQDN(Full Qualifieed Domain Name)
- How DNS Works
- 도메인 이름을 DNS 서버에 등록(test.com)
- 클라이언트 -> 웹서버 test.com에 접근
- local DNS server에 요청 및 확인
- (없다면) ICANN에 의해 관리되는 Root DNS Server에 요청 및 확인
- Root DNS Server가 test.com은 몰라도 .com은 알고 .com의 서버 이름(NS)의 IP인 1.2.3.4로 안내함
- Local DNS Server는 IANA에 의해 관리되는 TLD DNS Server(.com)에 방문해 다시 test.com을 물어봄
- TLD 서버는 정확히 test.com은 모르지만 test.com의 서버 IP 5.6.7.8을 안내함
- 최종적인 서버인 SLD DNS Server에 요청
- SLD DNS Server는 Domain Register에 의해 관리되는 서버임
- SLD에서 찾은 레코드 9.10.11.12를 로컬 서버에 반환
- 로컬 서버는 9.10.11.12를 캐시에 저장하고 웹 브라우저에 반환
2. Amazon Route 53
- 고갸용성, 확장 가능, 완전히 관리되는 권위(Authoritative, 고객이 DNS 레코드를 업데이트 할 수 있음) 있는 DNS 서비스
- Route 53은 Domain Registrar(돋메인 등록대행자)로도 사용됨
- 리소스의 상태를 확인할 수 있는 기능 제공
- AWS에서 100% SLA 가용성을 제공하는 유일한 서비스
- 53은 전통적인 DNS 포트
- Records
- 레코드를 통해 특정 도메인으로 라우팅하는 방법을 정의
- 각 레코드는 다음과 같은 정보를 포함
- domain/subdomain name: test.com
- record types: A, AAAA
- valuee: 123.456.789.123
- routing policy: route 53이 쿼리에 응답하는 방식
- ttl: 레콛드가 dns 리졸버에서 캐싱되는 시간
- Route 53은 다음과 같은 DNS 레코드 유형을 지원
- (must know) A / AAAA / CNAME / NS
- (advanced) CAA / DS / MX / NAPTR / PTR / SOA / TXT / SPF / SRV
- Record Types
- A: 호스트 이름을 IPv4로 매핑
- AAAA:호스트 이름을 IPv6로 매핑
- CNAME: 호스트 이름을 다른 호스트 이름에 매핑
- 대상 호스트 이름은 A 또는 AAAA 레코드가 있는 도메인 이름
- DNS 네임 스페이스의 최상위 노드(Zone Apex)에 대한 CNAME 레코드를 생성할 수 없음
- test.com에 대한 CNAME 레코드는 생성 가능, www.test.com에 대한 CNAME 레코드는 생성 불가
- NS: 호스팅 존의 네임 서버(트래픽이 도메인으로 라우팅 되는 방식을 제어)
- Hosted Zones
- 호스팅 영역은 도메인 및 하위 도메인에 대한 트래픽 라우팅 방법을 정의하는 레코드를 포함하는 컨테이너
- Public Hosted Zone: 인터넷에서 트래픽을 라우팅하는 방법을 지정하는 레코드를 포함
- 공개된 클라이언트로부터 온 쿼리에 응답 가능
- ex)app.publicdomain.com
- Private Hosted Zone: 하나 이상의 VPC 내에서 트래픽을 라우팅 하는 방법을 지정하는 레코드를 포함
- 사내망에서만 접근할 수 있는 URL, VPD내에서만 라우팅 가능
- 도커처럼 도메인 요청 시 10.10.10.10 같은 private IP 반환
- ex)app.company.internal
- 호스팅 영역당 월별 비용 0.5 달러
- Records TTL(Time to Live)
- High TTL(ex 24hr)
- Route 53에서의 트래픽이 적음
- 레코드가 업데이트 되지 않은 경우가 발생할 수 있음
- Low TTL(ex 60 sec)
- Route53에서의 트래픽이 많음(비용 증가)
- 레코드가 업데이트 되지 않은 기간이 짧음
- 레코드를 쉽게 변경 가능
- alias 를 제외한 모든 DNS 레콛드에는 TTL 필수
- High TTL(ex 24hr)
- CNAME vs Alias
- AWS Resources(Load Balancer, CloudFront..)가 AWS 호스트 이름으로 노출됨
- lb1-1234.us-east-2.elb.amazonaws.com 를 내가 원하는 도메인으로 바꾸고 싶을 때 이용 myapp.mydomain.com
- CNAME
- 호스트 이름이 다른 호스트 이름으로 향하도록 하는 것 app.mydomain.com -> blabla.anything.com
- 루트 도메인이 아닐 때 가능
- Alias
- 호스트 이름이 특정 AWS 리소스로 향하도록 하는 것
- app.mydomain.com -> blabla.amazonaws.com
- 루트 도메인이 아니어도 됨
- 무료, 자체 health check 가능
- Alias Records
- 호스트 이름을 AWS 리소스에 매핑
- DNS의 기능을 확장
- 리소스 IP 주소 변경을 자동으로 인식
- CNAME과 달리 DNS Name Space(Zone Apex)의 최상위 노드에 사용할 수 있음 ex) example.com
- AWS 리소스를 위한 별칭 레코드의 타입은 항상 A 또는 AAAA (IPv4 / IPv6)
- TTL 설정 불가 (Route 53에서 자동으로 설정)
- Alias Records Targets
- Elastic Load Balancers
- CloudFront Distributions
- API Gateways
- Elastic Beanstalk environments
- S3 Websites
- VPC Interface Endpoints
- Gloabal Accelerator
- Route 53 record in the same hosted zone
- AWS Resources(Load Balancer, CloudFront..)가 AWS 호스트 이름으로 노출됨
- Routing Polices
- Route 53이 DNS 쿼리에 응답하는 방식 정의
- 라우팅 이라는 단어에 혼동하지 말것!
- 트래픽을 라우팅하는 로드 밸런서의 라우팅과는 다르다
- DNS는 트래픽을 라우팅하지 않으며, 단지 DNS 쿼리에 응답하는 역할
- Route 53은 다음과 같은 라우팅 정책 지원
- Simple(단순)
- 일반적으로 트래픽을 단일 리소스로 보내는 방식
- 동일한 레코드에서 여러 값을 지정 가능
- 여러 값이 반환되면 클라이언트가 임의로 하나를 선택
- Alias가 활성화된 경우, 하나의 AWS 리소스만 지정
- Can't be associated with Health Checks
- Weighted(가중치 기반)
- 각 특정 리소스로 전송되는 요청의 %를 제어
- 각 레코드에 대한 상대적인 가중치 할당
- traffic (%) = Weight for a specific record / Sum of all the weights for all records
- 가중치의 합이 100이 될 필요 없음
- DNS 레코드는 동일한 이름과 유형을 가져야 함
- Can be associated with Health Checks
- 사용사례: 리전간 로드 밸런싱, 새로운 애플리케이션 버전 테스트 등
- 리소스로의 트래픽 전송을 중지하기 위해 레코드에 가중치 0을 할당
- 모든 레코드가 가중치 0을 가진 경우, 모든 레코드가 동일하게 반환
- Latency based(지연 시간)
- 지연 시간이 가장 짧은(가장 가까운) 리소스로 리디렉션
- 사용자의 지연시간이 우선 순위인 경우 매우 유용한 정책
- 지연 시간은 사용자와 AWS 지역간의 트래픽을 기반
- 독일 사용자는 미국으로 리디렉션될 수 있음(가장 낮은 지연시간인 경우)
- Can be associated with Health Checks (has a failover capability)
- Failover(장애 조치) - Active-Passive
- Geolocation(지리 위치)
- Different from Latency based
- 사용자의 실제 위치를 기반으로 하는 라우팅 방식
- 특정 대륙이나 국가, 혹은 사용자가 미국에 있는 경우에는 어떤 주에 있는지 지정하는 것(겹칠 경우 가장 정확한 위치)
- Default 레코드를 생성하는 것이 좋음(일치하는 위치가 없을 경우를 대비해서)
- 사용사례: 웹 사이트 지역화, 콘텐츠 분산 제한, 로드 밸런싱 등
- Can be associated with Health Checks
- Geoproximity(지리 근접) - using Route 53 Traffic Flow feature
- 사용자와 리소스의 지리적 위치를 기반으로 트래픽을 라우팅
- 정의된 편향값(bias)에 따라 리소스로의 트래픽을 조절할 수 있음
- 지리적 영역의 크기를 변경하려면 편향값을 지정
- 확장(1 ~ 99): 리소스로의 트래픽을 더 많이 유도
- 축소 (-1 ~ -99): 리소스로의 트래픽을 줄임
- 리소스는 다음과 같을 수 있음
- AWS 리소스(특정 AWS 리전 지정)
- Non-AWS 리소스(위도와 경도 지정)
- Route 53 Traffic Flow를 사용해야 함!
- IP-based(IP 기반)
- 클라이언트의 IP 주소를 기반으로 라우팅
- 클라이언트의 CIDR 목록과 해당 엔드포인트/위치를 제공
- 사용사례: 성능 최적화, 네트워크 비용 절감
- ex) 특정 ISP의 최종 사용자를 특정 엔드포인트로 라우팅
- Multi-Value Answer(다중 응답)
- 트래픽을 다중 리소스로 라우팅할 때 사용
- Route 53은 다중 값/리소스를 반환
- Can be associated with Health Checks (return only values for healthy resources)
- 각각의 다중 값 쿼리에 대해 최대 8개의 정상 레코드가 반환됨
- Multi-Value is not a substitute for having an ELB
- Simple(단순)
- Health Checks
- HTTP Health Checks는 공용 리소스에만 사용 가능
- Health Checks => 자동 DNS 장애 조치
- 공용 엔드포인트 모니터링(애플리케이션, 서버, 기타 AWS 리소스)
- 다른 상태 확인을 모니터링하는 상태 확인(계산된 상태 확인)
- CloudWatch 경보의 상태를 모니터링하는 상태 확인 (full control) ex) DynamoDB의 쓰로틀, RDS의 알람, 사용자 정의 지표 등(프라이빗 리소스에 유용)
- 상태 확인은 각자의 메트릭을 사용하는데 CloudWatch의 지표에서도 확인 가능
- Monitor an Endpoint
- 전세계로부터 15개 정도의 글로벌 헬스체커가 엔드포인트 상태를 확인
- Health/UnhealthyThreshord : 3 (default)
- 간격 : 30초 (10초로 설정 가능 but 높은 비용 발생)
- 지원 프로토콜 : HTTP, HTTPS, TCP
- 18% 이상이 엔드포인트를 정상이라고 판단하면 Route 53도 정상이라고 간주
- Route 53에서 사용할 위치를 선택할 수 있음
- 상태확인은 엔드포인트가 2xx 및 3xx 상태 코드로 응답할 때만 통과
- 응답의 처음 5120바이트 내에서 텍스트를 기준으로 통과/실패 설정할 수 있음
- 상태 확인의 작동이 가능하려면 라우터/방화벽을 구성하여 Route 53 헬스 체커로부터의 수신 요청을 허용하도록 설정
- 전세계로부터 15개 정도의 글로벌 헬스체커가 엔드포인트 상태를 확인
- Calculated Health Checks
- 여러 개의 상태 확인 결과를 하나로 합쳐주는 기능
- OR, AND, 또는 NOT 사용 가능
- 최대 256개의 하위 상태 확인을 모니터링할 수 있음
- 상위 상태 확인이 통과하기 위해 몇개의 상태 확인을 통과해야 하는지도 지정할 수 있음
- 사용사례: 상태 확인이 실패하는 일 없이 상위 상태 확인이 웹사이트를 관리 유지하도록 하는 경우
- Private Hosted Zones
- Route 53 상태 확인은 VPC의 외부에 있기 때문에 프라이빗 엔드포인트(Private VPC 또는 온프레미스 리소스)에 접근 가능
- 따라서 CloudWatch 메트릭을 생성하고 CloudWatch 경보를 연결한 다음, 경보를 확인하는 상태 확인을 생성 가능
- Domain Registar vs. DNS Service
- Domian Registra를 통해 도메인 이름을 구입하거나 등록하며, 이를 위해 연간 요금을 지불한다. (ex. GoDaddy, Amazon Registrar Inc., ...)
- Domain Registra는 DNS 레코드를 관리를 위한 DNS 서비스를 제공한다. 하지만 다른 DNS 서비스를 사용하여 DNS 레코드를 관리할 수 있다.
- ex) GoDaddy에서 도메인을 구입하고 Route 53을 사용하여 DNS 레코드를 관리할 수 있다.
- GoDaddy as Registar & Route 53 as DNS Service
- 3rd Party Registrar with Amazon Route 53
- 3rd Party Registrar에서 도메인을 구입한 경우에도 Route 53을 DNS 서비스 제공자로 사용할 수 있다.
- Route 53에서 공용 호스팅 영역을 생성
- 3rd party 웹 사이트에서 NS 레코드를 업데이트하여 Route 53 이름 서버를 사용
- Domian Registra != DNS Service
- But every Domain Registrar usually comes with some DNS features
- 3rd Party Registrar에서 도메인을 구입한 경우에도 Route 53을 DNS 서비스 제공자로 사용할 수 있다.
LIST
'develop > AWS' 카테고리의 다른 글
[SAA] S3 보안 (0) | 2024.05.09 |
---|---|
[SAA] S3 (0) | 2024.05.08 |
[SAA] RDS, Aurora, ElastiCache (1) | 2024.04.24 |
[SAA] ELB(Elastic Load Balancer), ASG(Auto Scaling Group) (1) | 2024.04.20 |
[SAA] EC2 Instance Storage (EBS, AMI, Amazon EFS) (1) | 2024.04.19 |