Amazon Route 53 – DNS được quản lý
1. DNS là gì?
Phần tiêu đề “1. DNS là gì?”DNS (Domain Name System) là hệ thống dịch các hostname thân thiện với con người thành địa chỉ IP dành cho máy. Ví dụ www.google.com được dịch thành 172.217.18.36. Không có DNS thì bạn sẽ phải nhớ những dãy số như thế cho từng website — nên nói DNS là xương sống của Internet là hoàn toàn đúng.
DNS dùng một cấu trúc đặt tên phân cấp (hierarchical): .com ở trên, rồi example.com, rồi tới www.example.com và api.example.com bên dưới.
Các thuật ngữ DNS
Phần tiêu đề “Các thuật ngữ DNS”Lấy ví dụ URL đầy đủ http://api.www.example.com. để phân tích:
- Protocol:
http - FQDN (Fully Qualified Domain Name):
api.www.example.com. - Sub Domain:
api.www - SLD (Second Level Domain):
example - TLD (Top Level Domain):
.com - Root: dấu
.ở cuối cùng
Các thuật ngữ còn lại cần biết:
- Domain Registrar (nhà đăng ký tên miền): Amazon Route 53, GoDaddy…
- DNS Records: A, AAAA, CNAME, NS…
- Zone File: file chứa các DNS record.
- Name Server: máy giải (resolve) các truy vấn DNS — có loại Authoritative và Non-Authoritative.
- TLD (Top Level Domain):
.com,.us,.in,.gov,.org… - SLD (Second Level Domain):
amazon.com,google.com…
DNS hoạt động ra sao?
Phần tiêu đề “DNS hoạt động ra sao?”Khi bạn muốn truy cập example.com, chuỗi truy vấn diễn ra như sau:
- Web Browser hỏi Local DNS Server (do công ty bạn quản lý, hoặc được ISP cấp động):
example.com? - Local DNS Server hỏi Root DNS Server (do ICANN quản lý) → trả về
.com NS 1.2.3.4. - Local DNS Server hỏi TLD DNS Server (.com) (do IANA, một nhánh của ICANN, quản lý) → trả về
example.com NS 5.6.7.8. - Local DNS Server hỏi SLD DNS Server (example.com) (do Domain Registrar quản lý, ví dụ Amazon Registrar, Inc.) → trả về
example.com IP 9.10.11.12. - Local DNS Server trả
9.10.11.12về cho browser, và browser gọi trực tiếp tới Web Server ở IP đó.
Các kết quả trung gian đều được cache theo TTL, nhờ đó lần sau không phải đi lại hết chuỗi này.
2. Amazon Route 53
Phần tiêu đề “2. Amazon Route 53”Amazon Route 53 là một DNS có tính sẵn sàng cao, scalable, được quản lý hoàn toàn (fully managed) và Authoritative.
- Authoritative nghĩa là khách hàng (chính bạn) có thể cập nhật các DNS record.
- Route 53 cũng là một Domain Registrar — bạn mua tên miền trực tiếp tại đây được.
- Có khả năng kiểm tra health của các resource của bạn.
- Đây là dịch vụ AWS duy nhất có SLA khả dụng 100%.
- Vì sao tên là “53”? Vì 53 là port DNS truyền thống.
Luồng đơn giản nhất: Client hỏi example.com? → Route 53 trả 54.22.33.44 → client kết nối tới EC2 Instance có Public IP 54.22.33.44.
3. Record của Route 53
Phần tiêu đề “3. Record của Route 53”Record định nghĩa cách bạn muốn định tuyến traffic cho một domain. Mỗi record chứa:
- Domain/subdomain Name — ví dụ
example.com. - Record Type — ví dụ A hoặc AAAA.
- Value — ví dụ
12.34.56.78. - Routing Policy — cách Route 53 phản hồi các truy vấn.
- TTL — khoảng thời gian record được cache tại các DNS Resolver.
Route 53 hỗ trợ các loại DNS record sau:
- (phải biết) A / AAAA / CNAME / NS
- (nâng cao) CAA / DS / MX / NAPTR / PTR / SOA / TXT / SPF / SRV
Bốn record type phải nắm
Phần tiêu đề “Bốn record type phải nắm”| Type | Ý nghĩa |
|---|---|
| A | Map một hostname tới một địa chỉ IPv4 |
| AAAA | Map một hostname tới một địa chỉ IPv6 |
| CNAME | Map một hostname tới một hostname khác |
| NS | Name Server của Hosted Zone — kiểm soát cách traffic được định tuyến cho domain |
Với CNAME có hai giới hạn quan trọng:
- Đích phải là một domain name có sẵn record A hoặc AAAA.
- Không thể tạo CNAME cho node cao nhất của một DNS namespace (Zone Apex). Ví dụ: bạn không tạo được CNAME cho
example.com, nhưng tạo được chowww.example.com.
4. Hosted Zone
Phần tiêu đề “4. Hosted Zone”Hosted Zone là một container chứa các record, định nghĩa cách định tuyến traffic tới một domain và các subdomain của nó.
- Public Hosted Zones — chứa record chỉ định cách định tuyến traffic trên Internet (tên miền public), ví dụ
application1.mypublicdomain.com. - Private Hosted Zones — chứa record chỉ định cách định tuyến traffic trong một hoặc nhiều VPC (tên miền private), ví dụ
application1.company.internal. - Bạn trả $0.50 mỗi tháng cho mỗi hosted zone.
Hình dung sự khác biệt qua hai kịch bản:
- Public Hosted Zone: một Client bên ngoài hỏi
example.com?và nhận về54.22.33.44— các đích có thể là EC2 Instance có Public IP, Application Load Balancer, S3 Bucket, Amazon CloudFront. - Private Hosted Zone: trong VPC, một EC2 hỏi
api.example.internal?và nhận10.0.0.10; hỏidb.example.internal?và nhận10.0.0.35. Các tên nhưwebapp.example.internal,api.example.internal,db.example.internalđều trỏ tới Private IP và chỉ giải được từ bên trong VPC.
5. TTL của record
Phần tiêu đề “5. TTL của record”TTL (Time To Live) quyết định các DNS resolver cache kết quả trong bao lâu. Khi client hỏi myapp.example.com?, Route 53 trả về A 12.34.56.78 kèm TTL; client cache kết quả đó trong suốt TTL rồi mới gửi HTTP request tới web server.
| TTL | Ưu điểm | Nhược điểm |
|---|---|---|
| High TTL — ví dụ 24 giờ | Ít traffic tới Route 53 | Record có thể bị lỗi thời (outdated) |
| Low TTL — ví dụ 60 giây | Record lỗi thời trong thời gian ngắn hơn, dễ thay đổi record | Nhiều traffic tới Route 53 ⇒ tốn tiền ($) |
Một điểm quan trọng: trừ Alias record, TTL là bắt buộc cho mọi DNS record.
6. CNAME vs Alias
Phần tiêu đề “6. CNAME vs Alias”Các resource của AWS (Load Balancer, CloudFront…) đều lộ ra một hostname của AWS, ví dụ lb1-1234.us-east-2.elb.amazonaws.com, nhưng bạn thì muốn người dùng vào myapp.mydomain.com. Có hai cách, và phân biệt được chúng gần như chắc chắn sẽ giúp bạn trong kỳ thi.
| CNAME | Alias | |
|---|---|---|
| Trỏ tới | Bất kỳ hostname nào khác (app.mydomain.com ⇒ blabla.anything.com) |
Một AWS resource (app.mydomain.com ⇒ blabla.amazonaws.com) |
| Root domain | CHỈ dùng cho NON ROOT DOMAIN (dạng something.mydomain.com) |
Dùng được cho cả ROOT DOMAIN và NON ROOT DOMAIN (kể cả mydomain.com) |
| Chi phí | Tính như record thường | Miễn phí |
| Health check | — | Có native health check |
Chi tiết về Alias Record
Phần tiêu đề “Chi tiết về Alias Record”- Map một hostname tới một AWS resource — đây là một phần mở rộng của chức năng DNS (không có trong DNS chuẩn).
- Tự động nhận biết khi IP của resource thay đổi — đúng với thực tế là IP của ALB do AWS quản lý và có thể đổi.
- Khác với CNAME, nó dùng được cho node cao nhất của DNS namespace (Zone Apex), ví dụ
example.com. - Alias Record luôn có type A/AAAA khi trỏ tới AWS resource (IPv4 / IPv6).
- Bạn không thể đặt TTL cho Alias record.
Ví dụ một record Alias: Record Name example.com, Type A, Value MyALB-123456789.us-east-1.elb.amazonaws.com, với Alias được bật.
Các đích được phép của Alias Record
Phần tiêu đề “Các đích được phép của Alias Record”- Elastic Load Balancers
- CloudFront Distributions
- API Gateway
- Elastic Beanstalk environments
- S3 Websites
- VPC Interface Endpoints
- Global Accelerator accelerator
- Route 53 record trong cùng hosted zone
Và một ngoại lệ phải nhớ: bạn KHÔNG thể đặt Alias record cho một EC2 DNS name.
7. Routing Policies
Phần tiêu đề “7. Routing Policies”Routing Policy định nghĩa cách Route 53 phản hồi các truy vấn DNS. Đừng để chữ “Routing” làm bạn nhầm: nó không giống routing của load balancer. DNS không định tuyến traffic nào cả — nó chỉ trả lời các truy vấn DNS; việc kết nối là do client tự làm sau khi nhận được câu trả lời.
Route 53 hỗ trợ các routing policy sau:
- Simple
- Weighted
- Failover
- Latency based
- Geolocation
- Multi-Value Answer
- Geoproximity (dùng tính năng Route 53 Traffic Flow)
- IP-based Routing
Simple
Phần tiêu đề “Simple”- Thường dùng để định tuyến traffic tới một resource duy nhất.
- Có thể chỉ định nhiều value trong cùng một record — ví dụ
foo.example.comtrả vềA 11.22.33.44,A 55.66.77.88,A 99.11.22.33. - Nếu nhiều value được trả về, client tự chọn ngẫu nhiên một cái.
- Khi Alias được bật, chỉ chỉ định một AWS resource.
- Không thể gắn với Health Check.
Weighted
Phần tiêu đề “Weighted”- Kiểm soát tỉ lệ % request đi tới từng resource cụ thể.
- Gán cho mỗi record một trọng số tương đối (relative weight); tỉ lệ traffic của một record = weight của nó chia cho tổng weight của tất cả record.
- Weight không cần cộng lại thành 100 — ví dụ weight 70 / 20 / 10 cho ra đúng 70% / 20% / 10%.
- Các DNS record phải cùng tên và cùng type.
- Có thể gắn với Health Check.
- Use case: cân bằng tải giữa các region, test phiên bản ứng dụng mới…
- Gán weight bằng 0 cho một record để ngừng gửi traffic tới resource đó.
- Nếu tất cả record đều có weight 0 thì tất cả record sẽ được trả về đều nhau.
Latency-based
Phần tiêu đề “Latency-based”- Chuyển hướng tới resource có latency thấp nhất so với người dùng.
- Cực hữu ích khi latency của người dùng là ưu tiên.
- Latency được đo dựa trên traffic giữa người dùng và các AWS Region.
- Vì thế người dùng ở Đức có thể bị chuyển tới Mỹ nếu đó là đường có latency thấp nhất — chứ không nhất thiết là region gần nhất về mặt địa lý.
- Có thể gắn với Health Check (nhờ đó có khả năng failover).
Failover (Active-Passive)
Phần tiêu đề “Failover (Active-Passive)”Mô hình này rất đơn giản: một record Primary trỏ tới EC2 Instance chính, một record Secondary trỏ tới EC2 Instance dự phòng (Disaster Recovery). Health Check là BẮT BUỘC với record primary — khi health check fail, Route 53 tự trả về đích secondary.
Geolocation
Phần tiêu đề “Geolocation”- Khác với Latency-based! Policy này dựa trên vị trí của người dùng.
- Chỉ định vị trí theo Continent, Country, hoặc US State; nếu có chồng lấn thì vị trí chính xác nhất được chọn.
- Nên tạo một record “Default” để dùng khi không match vị trí nào.
- Use case: localization website, giới hạn phân phối nội dung, load balancing…
- Có thể gắn với Health Check.
Geoproximity
Phần tiêu đề “Geoproximity”- Định tuyến traffic tới resource dựa trên vị trí địa lý của cả người dùng và resource.
- Có khả năng dịch chuyển nhiều traffic hơn sang một resource dựa trên bias đã định nghĩa.
- Để thay đổi kích thước vùng địa lý, bạn chỉ định giá trị bias:
- Mở rộng: từ 1 đến 99 — nhiều traffic hơn vào resource đó.
- Thu nhỏ: từ -1 đến -99 — ít traffic hơn vào resource đó.
- Resource có thể là:
- AWS resource (chỉ định AWS region).
- Non-AWS resource (chỉ định Latitude và Longitude).
- Bắt buộc phải dùng Route 53 Traffic Flow để dùng tính năng này.
Ví dụ trực quan: với us-east-1 bias 0 và us-west-1 bias 0, ranh giới chia nước Mỹ nằm ở giữa; khi đặt bias 50 cho us-east-1, vùng phục vụ của us-east-1 phình ra và hút thêm traffic từ phía tây.
IP-based Routing
Phần tiêu đề “IP-based Routing”- Định tuyến dựa trên địa chỉ IP của client.
- Bạn cung cấp một danh sách CIDR của client và endpoint/location tương ứng — tức là các mapping user-IP-to-endpoint.
- Use case: tối ưu hiệu năng, giảm chi phí mạng…
- Ví dụ: định tuyến người dùng của một ISP cụ thể tới một endpoint cụ thể.
Cụ thể, bạn tạo một CIDR Collection:
Locations CIDR blockslocation-1 203.0.113.0/24location-2 200.5.4.0/24Rồi tạo các record trỏ theo location đó:
Record Name Value IP-basedexample.com 1.2.3.4 location-1example.com 5.6.7.8 location-2Kết quả: User A (203.0.113.56) đi tới EC2 1.2.3.4, còn User B (200.5.4.100) đi tới EC2 5.6.7.8.
Multi-Value
Phần tiêu đề “Multi-Value”- Dùng khi định tuyến traffic tới nhiều resource.
- Route 53 trả về nhiều value/resource.
- Có thể gắn với Health Check — và khi đó chỉ trả về value của các resource healthy.
- Tối đa 8 record healthy được trả về cho mỗi truy vấn Multi-Value.
- Multi-Value không phải là thứ thay thế cho một ELB.
8. Health Checks
Phần tiêu đề “8. Health Checks”HTTP Health Check chỉ dành cho các resource public. Health check là thứ mở ra khả năng Automated DNS Failover, và có ba loại:
- Health check theo dõi một endpoint (ứng dụng, server, hoặc AWS resource khác).
- Health check theo dõi các health check khác — gọi là Calculated Health Checks.
- Health check theo dõi CloudWatch Alarm — cho bạn toàn quyền kiểm soát; ví dụ throttle của DynamoDB, alarm trên RDS, custom metric… (rất hữu ích cho resource private).
Health check được tích hợp với các CloudWatch metric.
Theo dõi một endpoint
Phần tiêu đề “Theo dõi một endpoint”- Khoảng 15 health checker toàn cầu sẽ kiểm tra health của endpoint.
- Healthy/Unhealthy Threshold — mặc định 3.
- Interval — 30 giây, có thể đặt xuống 10 giây (chi phí cao hơn).
- Giao thức hỗ trợ: HTTP, HTTPS và TCP.
- Nếu hơn 18% health checker báo endpoint healthy, Route 53 coi nó Healthy; ngược lại là Unhealthy.
- Bạn có thể chọn những địa điểm nào mà Route 53 dùng để kiểm tra.
- Health check chỉ pass khi endpoint trả về mã status 2xx hoặc 3xx.
- Health check có thể được cấu hình để pass / fail dựa trên nội dung text trong 5120 byte đầu tiên của response.
- Bạn phải cấu hình router/firewall để cho phép request đến từ Route 53 Health Checker — dải IP của chúng được công bố ở
https://ip-ranges.amazonaws.com/ip-ranges.json.
Calculated Health Checks
Phần tiêu đề “Calculated Health Checks”- Kết hợp kết quả của nhiều Health Check thành một Health Check duy nhất.
- Bạn dùng được các phép OR, AND, hoặc NOT.
- Có thể theo dõi tới 256 Child Health Check.
- Bạn chỉ định bao nhiêu health check con cần pass để health check cha được coi là pass.
- Ứng dụng: thực hiện bảo trì cho website mà không làm toàn bộ health check fail.
Health Check cho Private Hosted Zone
Phần tiêu đề “Health Check cho Private Hosted Zone”Đây là một hạn chế phải nhớ: Route 53 health checker nằm ngoài VPC, nên chúng không truy cập được các endpoint private (trong VPC private hoặc resource on-premises).
Cách giải quyết: tạo một CloudWatch Metric và gắn một CloudWatch Alarm, rồi tạo một Health Check kiểm tra chính cái alarm đó.
9. Domain Registrar và DNS Service
Phần tiêu đề “9. Domain Registrar và DNS Service”Hai thứ này không giống nhau, và đây cũng là một điểm hay ra đề:
- Bạn mua hoặc đăng ký tên miền với một Domain Registrar, thường bằng cách trả phí hàng năm (GoDaddy, Amazon Registrar Inc.…).
- Domain Registrar thường kèm luôn một DNS service để bạn quản lý DNS record.
- Nhưng bạn có thể dùng một DNS service khác để quản lý DNS record của mình.
- Ví dụ điển hình: mua domain ở GoDaddy và dùng Route 53 để quản lý DNS record.
Dùng registrar bên thứ ba với Route 53
Phần tiêu đề “Dùng registrar bên thứ ba với Route 53”Nếu bạn mua domain ở một registrar bên thứ ba, bạn vẫn dùng Route 53 làm DNS Service provider được, theo hai bước:
- Tạo một Hosted Zone trong Route 53.
- Cập nhật NS Record trên website của registrar bên thứ ba để trỏ tới Route 53 Name Servers.
Nhớ công thức: Domain Registrar != DNS Service — nhưng mọi Domain Registrar thường có kèm một vài tính năng DNS.
10. Hybrid DNS và Resolver Endpoints
Phần tiêu đề “10. Hybrid DNS và Resolver Endpoints”Mặc định, Route 53 Resolver tự động trả lời các truy vấn DNS cho:
- Tên domain local của các EC2 instance.
- Record trong Private Hosted Zone.
- Record trên các public Name Server.
Hybrid DNS là việc giải các truy vấn DNS giữa VPC (Route 53 Resolver) và các mạng của bạn (các DNS Resolver khác). Mạng đó có thể là:
- Chính VPC đó / VPC đã peered.
- Mạng on-premises (kết nối qua Direct Connect hoặc AWS VPN).
Có hai loại Resolver Endpoint, và hướng của chúng là điều duy nhất bạn cần nhớ:
| Endpoint | Hướng | Công dụng |
|---|---|---|
| Inbound Endpoint | Từ mạng của bạn vào AWS | Cho phép DNS Resolver của bạn giải được tên của AWS resource (ví dụ EC2 instance) và record trong Private Hosted Zone |
| Outbound Endpoint | Từ AWS ra mạng của bạn | Route 53 Resolver chuyển tiếp (forward) truy vấn DNS tới các DNS Resolver của bạn |
Ví dụ với Inbound Endpoint: một Server on-premises hỏi app.aws.private?; DNS Resolver on-premises chuyển truy vấn qua kết nối VPN hoặc DX tới Resolver Inbound Endpoint trong private subnet; Route 53 Resolver tra trong Private Hosted Zone (aws.private) và trả về IP của EC2 Instance app.aws.private.
Ví dụ với Outbound Endpoint: một EC2 Instance trong VPC hỏi web.onpremise.private?; Route 53 Resolver forward truy vấn qua Resolver Outbound Endpoint và kết nối VPN/DX tới DNS Resolver on-premises (onpremise.private), nơi biết Server web.onpremise.private.
Tóm tắt nhanh
Phần tiêu đề “Tóm tắt nhanh”| Chủ đề | Cần nhớ |
|---|---|
| Route 53 | DNS managed, Authoritative, cũng là Domain Registrar, có health check, SLA 100% — dịch vụ AWS duy nhất; “53” = port DNS |
| Record type phải biết | A (IPv4) · AAAA (IPv6) · CNAME (hostname → hostname) · NS |
| CNAME | Không dùng được cho Zone Apex (example.com), chỉ cho subdomain; trỏ tới bất kỳ hostname nào |
| Alias | Trỏ tới AWS resource, dùng được cho root domain, miễn phí, có native health check, không đặt được TTL, luôn type A/AAAA; KHÔNG dùng cho EC2 DNS name |
| Hosted Zone | Public (Internet) · Private (trong VPC); $0.50/tháng/hosted zone |
| TTL | High (24h) = ít traffic nhưng dễ lỗi thời; Low (60s) = nhiều traffic ($) nhưng linh hoạt; bắt buộc trừ Alias record |
| Simple | Một resource; nhiều value → client chọn ngẫu nhiên; không gắn được Health Check |
| Weighted | Chia % theo weight tương đối, không cần cộng thành 100; cùng tên + cùng type; weight 0 = ngừng traffic; tất cả 0 = trả đều |
| Latency-based | Theo latency tới AWS Region, không theo khoảng cách địa lý |
| Failover | Active-Passive, Health Check bắt buộc cho primary |
| Geolocation | Theo vị trí người dùng (Continent / Country / US State), nên có record Default |
| Geoproximity | Vị trí user và resource, bias 1..99 / -1..-99, cần Route 53 Traffic Flow |
| IP-based | Theo CIDR của client, dùng CIDR Collection map IP → location |
| Multi-Value | Trả tối đa 8 record healthy; không thay thế được ELB |
| Health Check | ~15 checker toàn cầu, threshold 3, interval 30s (hoặc 10s), pass khi 2xx/3xx, cần >18% checker báo healthy; kiểm tra được 5120 byte đầu response |
| Calculated Health Check | OR / AND / NOT, tới 256 child |
| Health Check private | Checker nằm ngoài VPC ⇒ dùng CloudWatch Alarm rồi health check trỏ vào alarm |
| Registrar vs DNS | Là hai thứ khác nhau; mua domain nơi khác thì tạo Hosted Zone rồi đổi NS record sang Route 53 Name Servers |
| Resolver Endpoint | Inbound = on-premises giải tên AWS · Outbound = AWS giải tên on-premises |