Quay lại bài viết
8 thg 5, 2026
13 min read

Route 53: “Load Balancer Miễn Phí” Mà Bạn Đã Có Sẵn Trong Tay

Khuyến nghị: Nếu bạn chưa nắm rõ DNS hoạt động như thế nào — resolver, authoritative server, record type, TTL — hãy đọc bài DNS hoạt động như thế nào dưới lớp vỏ trước. Bài viết này sẽ dễ hiểu hơn rất nhiều khi bạn đã có nền tảng đó.

Bạn đang trả $16/tháng cho một ALB chỉ để phân phối traffic giữa hai môi trường A/B testing? Hay đang cân nhắc dựng thêm một Load Balancer ở region khác cho Disaster Recovery?

Có một tin vui: bạn đã có sẵn một “Load Balancer” trong tay — và nhiều khả năng bạn đang trả $0.50/tháng cho nó mà chưa khai thác hết. Đó chính là Amazon Route 53.

Về bản chất, Route 53 là một DNS service — hay chính xác hơn là một authoritative DNS server kết hợp domain registrar. Nếu bạn từng mua domain trên Namecheap, GoDaddy, hay dùng DNS của Cloudflare — thì Route 53 đóng vai trò tương tự: nơi bạn quản lý domain và cấu hình các bản ghi DNS (A, CNAME, MX, …). Nó cũng chỉ là một DNS như bao DNS khác: nhận query, tra bảng record, trả về IP.

Nhưng điểm khác biệt lớn: trong khi Namecheap hay GoDaddy chủ yếu trả về IP một cách “cứng nhắc” — record nào thì trả đúng IP đó — thì Route 53 có thể ra quyết định dựa trên trọng số, vị trí địa lý, độ trễ mạng, hay tình trạng sức khỏe của server trước khi chọn IP nào để trả về. Cloudflare cũng có một số tính năng tương tự (Load Balancing, geo-steering), nhưng đó là gói trả phí riêng — còn với Route 53, các routing policy này đã có sẵn trong chi phí cơ bản.

Lúc đó, DNS không còn là danh bạ nữa — nó trở thành một bộ cân bằng tải.

Route 53 cung cấp 8 routing policy cho phép bạn biến DNS resolution thành các chiến lược phân phối traffic khác nhau: từ A/B testing, canary release, blue/green deployment cho đến failover đa vùng. Tất cả đều ở tầng DNS — không cần thêm infrastructure, không cần thay đổi code.


1. Tại sao Route 53 lại là “Load Balancer”?

Hầu hết kỹ sư nghĩ về Load Balancer là ALB hoặc NLB — những dịch vụ hoạt động ở Layer 4/7, ngồi giữa client và server để phân phối request. Nhưng Route 53 hoạt động ở tầng DNS — sớm hơn nhiều trong vòng đời request.

Sự khác biệt cốt lõi:

Điều này có nghĩa Route 53 không thể làm được những gì ALB làm (path-based routing, SSL termination, sticky session). Nhưng ngược lại, có những bài toán mà Route 53 giải quyết đơn giản hơn, rẻ hơn, và ở phạm vi toàn cầu — điều mà một ALB đơn lẻ không thể.

Mỗi Hosted Zone trên Route 53 đã là một Load Balancer chờ được cấu hình. Bạn chỉ cần chọn đúng routing policy.


2. 8 “Chế Độ” Cân Bằng Tải Của Route 53

Routing PolicyCách hoạt độngKhi nào dùng
SimpleTrả về 1 (hoặc nhiều) giá trị, không logicDev/staging, setup đơn giản
WeightedChia traffic theo tỷ lệ trọng sốA/B testing, canary, blue/green
LatencyChọn region có độ trễ thấp nhấtApp global, tối ưu UX
FailoverPrimary/Secondary, tự chuyển khi lỗiDisaster Recovery
GeolocationRouting theo quốc gia/châu lụcNội dung theo vùng, compliance
GeoproximityRouting theo khoảng cách + biasMở rộng/thu hẹp vùng phục vụ
Multivalue AnswerTrả về tối đa 8 IP khỏe mạnhClient-side LB cơ bản
IP-basedRouting theo CIDR của clientPhân luồng nội bộ/bên ngoài

Hãy đi sâu vào từng policy:

2.1 Simple Routing — “Mặc định, không cần suy nghĩ”

Đây là chế độ mặc định khi bạn tạo record trên Route 53. Một domain trỏ đến một (hoặc nhiều) IP. Nếu có nhiều IP, Route 53 trả về tất cả theo thứ tự ngẫu nhiên — tương tự DNS round-robin.

Hạn chế: Không có health check. Nếu một server chết, Route 53 vẫn vui vẻ trả về IP đó.

Cấu hình trên AWS Console:

Record nameTypeRouting policyValueTTL
app.example.comASimple10.0.1.100, 10.0.2.100300

Dùng khi nào? Môi trường dev/staging, hoặc khi bạn chỉ có một endpoint duy nhất.

2.2 Weighted Routing — “Chia bánh theo phần trăm”

Đây là ngôi sao của bài viết. Weighted Routing cho phép bạn gán trọng số cho từng record, và Route 53 sẽ phân phối traffic theo tỷ lệ tương ứng.

Ví dụ: bạn cần chia traffic cho api.example.com giữa Production (80%) và Canary (20%). Bạn tạo 2 record cùng tên với routing policy = Weighted:

Record nameTypeRouting policyValueWeightSet IDTTLHealth check
api.example.comAWeighted10.0.1.10080production-v160(optional)
api.example.comAWeighted10.0.2.10020canary-v260(optional)

Kết quả: 80% DNS query trả về IP của Production, 20% trả về IP của Canary. Đơn giản vậy thôi.

Công thức tính phần trăm:

% traffic = Weight của record / Tổng tất cả weights

Nếu bạn đặt weight 0 cho một record, Route 53 sẽ ngừng gửi traffic đến đó — cực kỳ hữu ích khi cần “tắt” một endpoint mà không xóa record.

Mẹo: Weight không nhất thiết phải cộng lại thành 100. Route 53 tự tính tỷ lệ. Weight 3 và 7 cho kết quả giống 30 và 70.

2.3 Latency-based Routing — “Ai gần thì đến”

Route 53 duy trì một bảng dữ liệu về độ trễ mạng giữa các vùng AWS và vị trí của người dùng. Khi nhận DNS query, nó trả về IP ở region có latency thấp nhất.

Khác với Geolocation (routing theo địa lý cứng), Latency-based routing quan tâm đến tốc độ thực tế. Một user ở Việt Nam có thể được route đến Tokyo thay vì Singapore nếu đường truyền đến Tokyo nhanh hơn tại thời điểm đó.

Record nameTypeRouting policyValueRegionSet IDTTLHealth check
app.example.comALatency10.0.1.100ap-southeast-1singapore60hc-singapore
app.example.comALatency10.0.2.100ap-northeast-1tokyo60hc-tokyo
app.example.comALatency10.0.3.100us-east-1virginia60hc-virginia

User ở Việt Nam sẽ tự động được route đến Singapore hoặc Tokyo — tùy region nào có latency thấp hơn tại thời điểm query.

Dùng khi nào? Ứng dụng global cần tối ưu thời gian phản hồi cho user ở nhiều khu vực.

2.4 Failover Routing — “Phòng thủ thảm họa”

Failover routing hoạt động theo mô hình Active-Passive: bạn chỉ định một Primary và một Secondary record. Route 53 liên tục kiểm tra sức khỏe của Primary qua health check. Khi Primary “ngã”, traffic tự động chuyển sang Secondary.

Record nameTypeRouting policyFailover typeValueSet IDTTLHealth check
app.example.comAFailoverPrimary10.0.1.100primary-us-east-160hc-primary (bắt buộc)
app.example.comAFailoverSecondary10.0.2.100secondary-eu-west-160hc-secondary (khuyến nghị)

Cấu hình Health Check cho Primary:

ProtocolEndpointPortPathRequest intervalFailure threshold
HTTPS10.0.1.100443/health30 seconds3

Với health check interval 30 giây và threshold 3 lần, Route 53 phát hiện lỗi trong khoảng 60–90 giây. Kết hợp TTL thấp (60s), hầu hết client sẽ chuyển sang endpoint dự phòng trong 2–3 phút.

Dùng khi nào? Disaster Recovery, active-passive setup giữa các region.

2.5 Geolocation & Geoproximity — “Người Việt xem server Việt”

Geolocation routing theo ranh giới địa lý cứng: quốc gia, bang, hoặc châu lục. User ở Việt Nam → server Singapore. User ở Đức → server Frankfurt. Không có ngoại lệ.

Record nameTypeRouting policyLocationValueSet IDTTL
app.example.comAGeolocationVietnam10.0.1.100 (Singapore)vietnam-to-sg300
app.example.comAGeolocationEurope10.0.2.100 (Frankfurt)europe-to-fra300
app.example.comAGeolocationDefault10.0.3.100 (US)default-us300

Quan trọng: Luôn tạo record Default — nếu không, user ở quốc gia chưa được map sẽ nhận response NXDOMAIN (không tìm thấy domain).

Geoproximity tinh vi hơn: routing theo khoảng cách vật lý, nhưng có thêm tham số bias cho phép “kéo giãn” hoặc “thu hẹp” vùng phục vụ của một resource. Đặt bias dương để mở rộng — hữu ích khi một region đang có dư tải và muốn nhận thêm traffic từ vùng lân cận.

Record nameTypeRouting policyRegionValueBiasSet ID
app.example.comAGeoproximityap-southeast-110.0.1.100+25 (mở rộng)singapore
app.example.comAGeoproximityap-northeast-110.0.2.1000 (mặc định)tokyo

Với bias +25 cho Singapore, vùng phục vụ của Singapore sẽ “kéo giãn” ra — thu hút thêm traffic từ các khu vực lân cận mà bình thường sẽ route đến Tokyo.

Dùng khi nào? Geolocation cho compliance (GDPR, data residency). Geoproximity cho tối ưu tải linh hoạt.

2.6 Multivalue Answer — “Round-robin có sức khỏe”

Giống Simple Routing nhưng có health check. Route 53 trả về tối đa 8 IP khỏe mạnh cho mỗi query. Client chọn ngẫu nhiên một IP để kết nối.

Khác với Simple Routing ở chỗ: nếu một server chết, Route 53 sẽ loại IP đó khỏi danh sách trả về. Đây là dạng client-side load balancing cơ bản nhất.

Bạn tạo nhiều record riêng biệt, mỗi record trỏ đến một IP và gắn health check:

RecordValueSet IDHealth check
app.example.com10.0.1.100server-1hc-server-1
app.example.com10.0.1.101server-2hc-server-2
app.example.com10.0.1.102server-3hc-server-3
app.example.com10.0.1.103server-4hc-server-4

Tất cả đều có Routing policy = Multivalue answer, TTL = 60. Khi server-2 chết và health check fail, Route 53 tự động loại 10.0.1.101 khỏi response — client chỉ nhận được 3 IP còn lại.

Lưu ý: Multivalue Answer không phải thay thế cho ALB/NLB. Nó chỉ phù hợp cho các hệ thống đơn giản cần một lớp health check ở tầng DNS.

2.7 IP-based Routing — “Biết khách từ đâu đến”

Routing dựa trên CIDR block của địa chỉ IP client. Bạn định nghĩa bảng ánh xạ: dải IP nào → endpoint nào.

Bước 1: Tạo CIDR collection và CIDR block trên Route 53:

CIDR CollectionCIDR BlockLocation Name
my-company10.0.0.0/8internal-network
my-company203.0.113.0/24isp-a
my-company198.51.100.0/24isp-b

Bước 2: Tạo record với IP-based routing:

Record nameTypeRouting policyCIDR locationValueSet IDTTL
api.example.comAIP-basedinternal-network10.0.1.100internal60
api.example.comAIP-basedisp-a10.0.2.100isp-a60
api.example.comAIP-basedDefault10.0.3.100default60

Traffic từ dải IP nội bộ công ty (10.0.0.0/8) route đến internal API, ISP-A route đến CDN gần nhất, còn lại route đến default endpoint.

Dùng khi nào? Phân luồng traffic doanh nghiệp, tối ưu theo ISP, hoặc chặn traffic từ dải IP nhất định.


3. Thực Chiến — 3 Kịch Bản Phổ Biến

3.1 A/B Testing với Weighted Routing

Bạn muốn thử nghiệm phiên bản mới của API trên 20% user? Tạo hai weighted record:

Record nameTypeRouting policyValueWeightSet IDTTL
api.example.comAWeighted10.0.1.10080production-v160
api.example.comAWeighted10.0.2.10020canary-v260

Sau đó bạn dần thay đổi weight theo lộ trình canary:

  1. Khởi đầu: Weight 95/5 — chỉ 5% traffic đến phiên bản mới
  2. Quan sát: Monitor error rate, latency trong 30 phút
  3. Tăng dần: 80/20 → 50/50 → 20/80
  4. Hoàn tất: 0/100 — chuyển hoàn toàn sang phiên bản mới

Quan trọng: Đặt TTL thấp (60s) để thay đổi weight có hiệu lực nhanh. TTL cao đồng nghĩa client sẽ cache IP cũ lâu hơn.

3.2 Blue/Green Deployment

Blue/Green đơn giản hơn canary: hai môi trường, chuyển đổi ngay lập tức.

Bước 1: Cả hai môi trường đều sẵn sàng. Traffic 100% ở Blue.

Record nameTypeRouting policyValueWeightSet IDTTL
app.example.comAWeighted10.0.1.50 (Blue)100blue60
app.example.comAWeighted10.0.2.50 (Green)0green60

Bước 2: Flip — chuyển Blue weight về 0, Green weight lên 100.

Record nameTypeRouting policyValueWeightSet IDTTL
app.example.comAWeighted10.0.1.50 (Blue)0blue60
app.example.comAWeighted10.0.2.50 (Green)100green60

Bước 3: Nếu có vấn đề, flip ngược lại trong vài giây. Rollback chỉ là thay đổi weight.

So sánh: Blue/Green bằng Route 53 không cần tạo thêm ALB hay Target Group. Chỉ cần thay đổi DNS record — zero infrastructure overhead.

3.3 Multi-Region DR với Failover + Latency

Kịch bản nâng cao: kết hợp hai routing policy bằng cách sử dụng Alias record.

Tầng 1 — Latency routing cho internal.example.com (chọn region gần nhất):

Record nameTypeRouting policyValueRegionSet IDTTLHealth check
internal.example.comA (Alias)LatencyALB us-east-1us-east-1us-east60hc-us-east
internal.example.comA (Alias)LatencyALB eu-west-1eu-west-1eu-west60hc-eu-west

Tầng 2 — Failover routing cho app.example.com (DR khi cả hai region chính sập):

Record nameTypeRouting policyFailover typeValueSet IDTTLHealth check
app.example.comA (Alias)FailoverPrimaryinternal.example.comprimary60hc-primary
app.example.comA (Alias)FailoverSecondaryALB ap-southeast-1dr-singapore60hc-dr

Khi cả us-east-1 và eu-west-1 đều hoạt động: user được route đến region gần nhất (qua tầng Latency). Khi cả hai “ngã”: traffic tự động chuyển sang DR site ở Singapore (qua tầng Failover).


4. Giới Hạn — Khi Nào Route 53 KHÔNG Phải Load Balancer

Route 53 mạnh mẽ, nhưng không phải thần dược. Hiểu rõ giới hạn để tránh dùng sai:

Nguyên tắc: Nếu bạn cần quyết định dựa trên nội dung request → dùng ALB. Nếu chỉ cần quyết định gửi user đến đâu trước khi kết nối → Route 53 là đủ.


5. Route 53 vs ALB vs NLB — “Tam Giác Vàng”

Nếu bạn đã đọc bài ALB hay NLB, đây là mảnh ghép còn lại để hoàn thiện bức tranh:

Tiêu chíRoute 53ALBNLB
Tầng hoạt độngDNS (trước kết nối)Layer 7 (HTTP)Layer 4 (TCP/UDP)
Chi phí cơ bản~$0.50/zone/tháng~$16/tháng~$16/tháng
Độ chi tiếtMỗi DNS queryMỗi HTTP requestMỗi TCP connection
Health checkCó (tính phí riêng)Tích hợp sẵnTích hợp sẵn
Sticky sessionKhông
SSL terminationKhôngCó (TLS)
Path-based routingKhôngKhông
Weighted trafficCó (target group)Không
Tốc độ failoverPhút (TTL)GiâyGiây
Phạm viGlobalRegionalRegional

6. Kết Hợp Route 53 + ALB — “Combo Hoàn Hảo”

Trong thực tế, Route 53 và ALB/NLB không loại trừ nhau — chúng bổ sung cho nhau ở hai tầng khác nhau.

Mô hình kinh điển:

Với kiến trúc này:

Đây là mô hình mà hầu hết hệ thống production quy mô lớn đều sử dụng — và chi phí Route 53 trong combo này gần như không đáng kể so với ALB.


Lời kết

Route 53 không phải là thay thế cho ALB hay NLB — nó là tầng bổ sung mà nhiều team đang bỏ qua. Với $0.50/tháng cho mỗi hosted zone, bạn có trong tay:

“Tam giác vàng” cho load balancing trên AWS: Route 53 cho steering toàn cầu, ALB cho routing thông minh, NLB cho tốc độ thuần túy. Hiểu khi nào dùng cái nào — đó mới là kỹ năng thật sự.

Bạn đang sử dụng Route 53 cho kịch bản nào? Hãy chia sẻ bên dưới!

Liên quan