Hướng dẫn thực tiễn cho kiến trúc sư AWS
Khi xây dựng ứng dụng cho khán giả toàn cầu trên AWS, bạn thường phải lựa chọn giữa ba dịch vụ quan trọng: CloudFront, Global Accelerator và Route 53. Mỗi dịch vụ này đóng vai trò khác nhau trong quá trình truyền tải dữ liệu từ người dùng đến ứng dụng của bạn. Lựa chọn đúng sẽ giúp cải thiện thời gian phản hồi, tỷ lệ hit cache và khả năng khôi phục. Ngược lại, lựa chọn không đúng có thể dẫn đến các câu trả lời DNS lỗi thời, nguồn dữ liệu chậm hoặc các phiên người dùng không giữ được trạng thái.
So sánh nhanh
| Dịch vụ | Mô tả | Tính năng chính |
|---|---|---|
| Route 53 | Dịch vụ DNS của AWS | Chính sách định tuyến, kiểm tra tình trạng sức khỏe |
| CloudFront | Dịch vụ CDN của AWS | Xử lý HTTP/1.1, HTTP/2, HTTP/3, WebSocket, gRPC |
| Global Accelerator | Dịch vụ tăng tốc mạng của AWS | IP Anycast, định tuyến qua AWS backbone |
Mỗi dịch vụ thực hiện những gì
Route 53 — bảng điều khiển DNS
Route 53 là dịch vụ DNS của AWS, chịu trách nhiệm cho các miền của bạn và áp dụng các chính sách định tuyến như độ trễ, định vị địa lý, gần gũi địa lý, trọng số và khôi phục. Kiểm tra tình trạng sức khỏe giúp hướng dẫn các chính sách này. Vì các bộ giải quyết lưu trữ câu trả lời, cài đặt TTL (thời gian sống) sẽ ảnh hưởng đến tốc độ mà các thay đổi được quan sát. Các bản ghi alias cho phép bạn chỉ định đỉnh miền hoặc các miền phụ đến các tài nguyên AWS như CloudFront hoặc Elastic Load Balancer mà không cần quản lý IP.
CloudFront — điểm kết ứng dụng
CloudFront là dịch vụ CDN của AWS, chịu trách nhiệm xử lý yêu cầu từ người dùng tại điểm gần nhất và chuyển tiếp đến các nguồn dữ liệu của bạn. CloudFront hỗ trợ các giao thức HTTP/1.1, HTTP/2, HTTP/3, cũng như WebSocket và gRPC. Bạn có thể sử dụng AWS WAF để thiết lập các quy tắc Layer 7, kiểm soát quyền truy cập nguồn gốc để bảo mật S3 và sử dụng Origin Shield để giảm tải cho nguồn gốc.
CloudFront hỗ trợ khả năng khôi phục nguồn gốc cho các yêu cầu GET và HEAD. Tuy nhiên, với các yêu cầu POST và gRPC, chúng sẽ không tham gia vào cơ chế này. Đến năm 2025, CloudFront sẽ cung cấp khả năng yêu cầu IP tĩnh Anycast cho một phân phối, bao gồm một bộ ba IP để trỏ đến một miền đỉnh thông qua các bản ghi A. Tuy nhiên, điều này có một số yêu cầu như tắt IPv6 và chọn tất cả các vị trí biên.
Global Accelerator — làn đường mạng nhanh
Global Accelerator cấp phát hai địa chỉ IP tĩnh Anycast, làm điểm truy cập công cộng của bạn. Dịch vụ này định tuyến các gói dữ liệu qua mạng lưới AWS đến điểm cuối vùng gần nhất và khỏe mạnh, như ALB, NLB, EC2 hoặc Elastic IP. Bạn có thể điều chỉnh lưu lượng theo từng vùng, cân bằng với trọng số điểm cuối và giữ cho các luồng dữ liệu ổn định với tính năng client affinity. CloudFront không phải là loại điểm cuối của Global Accelerator, vì vậy bạn cần sử dụng các tên miền khác nhau khi cần cả hai.
Khi nào chọn dịch vụ nào
Cách kết hợp các dịch vụ
-
Ứng dụng nội dung nặng trong một vùng: Giữ khu vực trong Route 53 và trỏ www đến CloudFront bằng bản ghi alias. CloudFront sẽ xử lý việc lưu cache cho tài sản, chuyển tiếp các đường dẫn động, gắn các quy tắc WAF tại điểm biên và giữ S3 riêng tư với Origin Access Control. Trong mô hình này, Global Accelerator thường không cần thiết.
-
API đa vùng với độ trễ thấp: Đặt Global Accelerator trước hai ALB vùng. Route 53 vẫn sẽ công bố tên miền. Global Accelerator cung cấp client affinity cho các luồng trạng thái và cho phép bạn điều chỉnh lưu lượng theo từng vùng bằng cách sử dụng các nút điều chỉnh lưu lượng hoặc trọng số điểm cuối. CloudFront có thể tiếp tục phục vụ giao diện tĩnh của trang web, trong khi cổng API sẽ là Global Accelerator.
-
Mô hình hỗn hợp với trang web và dịch vụ thời gian thực: Chia theo tên miền trong Route 53. Gửi trang web và API HTTP đến CloudFront, và gửi dịch vụ thời gian thực hoặc không phải HTTP đến Global Accelerator. Điều này giữ cho các giao thức rõ ràng và cho phép từng lớp biên thực hiện nhiệm vụ của mình một cách hiệu quả.
IP tĩnh và danh sách cho phép
Khi bạn cần IP tĩnh Anycast cho một khối lượng công việc không phải HTTP, Global Accelerator là lựa chọn đơn giản nhất. Mỗi accelerator mặc định sẽ cung cấp hai địa chỉ IP tĩnh, và BYOIP (Bring Your Own IP) cũng có sẵn để kiểm soát chặt chẽ hơn. Nếu nhu cầu của bạn chỉ là cho HTTP và bạn muốn các bản ghi A tĩnh hoặc đỉnh đến CloudFront, hãy yêu cầu CloudFront Anycast static IP và thực hiện các yêu cầu như tắt IPv6 và chọn tất cả các vị trí biên. Sử dụng điều này chỉ khi danh sách cho phép của đối tác hoặc ánh xạ đỉnh thực sự yêu cầu điều đó.
Khả năng phục hồi, khôi phục và kiểm tra sức khỏe
Chi phí bạn sẽ nhận thấy
Route 53 là một chi phí cho mặt điều khiển bao gồm các khu vực được lưu trữ, các truy vấn và các kiểm tra sức khỏe tùy chọn. Giữ TTL ngắn chỉ khi tốc độ khôi phục biện minh cho khối lượng truy vấn tăng thêm. CloudFront tính phí cho dữ liệu đầu ra và các yêu cầu, với tùy chọn thêm WAF tại điểm biên. Việc lưu cache tốt và Origin Shield thường giúp giảm thiểu chi phí cho nguồn gốc. Global Accelerator thêm vào một khoản phí hàng giờ cố định cho mỗi accelerator cộng với phí dữ liệu cao cấp cho các byte đi qua mạng lưới, bên cạnh chi phí vùng thông thường, vì vậy hãy lập kế hoạch cho nó trên các đường dẫn động.
Snapshot thiết lập
-
Trong Route 53: Tạo các bản ghi với các chính sách phản ánh các mục tiêu phục hồi và chọn TTL mà các bộ giải quyết sẽ làm mới kịp thời. Sử dụng bản ghi alias để nhắm đến CloudFront hoặc Elastic Load Balancer.
-
Trong CloudFront: Bật HTTP/2 và HTTP/3, gắn WAF, chuyển các nguồn S3 sang Origin Access Control, đặt Origin Shield gần nguồn gốc và cấu hình các nhóm nguồn cho GET và HEAD.
-
Trong Global Accelerator: Đăng ký các điểm cuối vùng, thiết lập trọng số điểm cuối để kiểm soát việc chuyển đổi, điều chỉnh các nút điều chỉnh lưu lượng cho sự phơi bày vùng, và bật client affinity khi các phiên cần duy trì trạng thái.
Những vấn đề phổ biến
Khôi phục DNS không phải là tức thì vì các bộ giải quyết lưu trữ câu trả lời dựa trên TTL. Rút ngắn TTL chỉ khi khối lượng truy vấn tăng thêm là chấp nhận được. Global Accelerator không thể đứng trước một phân phối CloudFront. Khi bạn cần cả hai, hãy định tuyến các tên miền khác nhau bằng Route 53.
CloudFront không khôi phục các yêu cầu POST hoặc luồng gRPC. Sử dụng các chính sách Route 53 hoặc Global Accelerator để đảm bảo khả năng phục hồi cho các đường dẫn đó. Nếu nguồn gốc của bạn yêu cầu IP của khách, hãy xác thực những gì backend mong đợi. Global Accelerator có thể giữ lại IP ở Layer 4, trong khi CloudFront chuyển tiếp nó trong các tiêu đề.
Câu hỏi thường gặp (FAQ)
Global Accelerator có thể đứng trước CloudFront không?
Không. Global Accelerator chỉ hỗ trợ ALB, NLB, EC2 và Elastic IPs làm điểm cuối. Sử dụng Route 53 để gửi một tên miền đến CloudFront và một tên miền khác đến Global Accelerator.
CloudFront có hỗ trợ WebSocket và gRPC không?
Có. WebSocket hoạt động từ đầu đến cuối. gRPC chạy trên HTTP/2, nhưng nó không tham gia vào khả năng khôi phục nguồn gốc của CloudFront và bỏ qua các tính năng cache ở tầng giữa.
Tôi có cần Route 53 khi sử dụng CloudFront không?
Có. Route 53 vẫn là nguồn thông tin chính cho các khu vực và chính sách. Nếu bạn muốn các bản ghi A đỉnh đến CloudFront, hãy yêu cầu IP tĩnh Anycast và thực hiện các yêu cầu.
CloudFront có khôi phục API POST của tôi hoặc một luồng gRPC không?
Không. Khả năng khôi phục nguồn gốc áp dụng cho GET và HEAD. Đối với các API sử dụng POST hoặc gRPC, xử lý khả năng phục hồi với Route 53 hoặc Global Accelerator.
Cái nhìn tổng quan T²C
Trong công việc trên nền tảng và sản phẩm, mô hình đơn giản nhất vẫn giữ vững: sử dụng CloudFront cho bất cứ thứ gì người dùng nhìn thấy trên HTTP, sử dụng Global Accelerator cho các luồng trạng thái hoặc không phải HTTP và giữ Route 53 như bộ não chính sách với các kiểm tra sức khỏe mà bạn có thể thực hành. Sự kết hợp này giúp giữ cho độ trễ thấp, khả năng khôi phục đáng tin cậy và chi phí nằm trong tầm kiểm soát mà không có bất ngờ trong các cuộc diễn tập sự cố.