AWS Load Balancer là một dịch vụ cân bẳng tải của Amazon Web Services (AWS), giúp tự động phân phối lưu lượng (traffic) đến các ứng dụng trên nhiều tài nguyên như EC2 instances, containers, serverless functions. Điều này giúp tăng hiệu suất, độ tin cậy và khả năng mở rộng của ứng dụng.
Có 4 loại load balancer: Application Load Balancer (ALB), Network Load Balancer (NLB), Gateway Load Balancer (GWLB), Classic Load Balancer (CLB). Chúng ta hay làm việc với Application Load Balancer (ALB) nhất nên bài viết này chỉ tập chung vào nó.
ALB có thể định tuyến traffic đến các target (EC2, container, Lambda, hoặc IP) dựa trên:
Đường dẫn URL: Ví dụ: /api hoặc /admin.
Hostname: Ví dụ: api.example.com hoặc admin.example.com.
Header hoặc query string: Định tuyến dựa trên tiêu đề HTTP hoặc các tham số trong URL.
ALB hỗ trợ WebSocket để duy trì các kết nối lâu dài và HTTP/2 để cải thiện hiệu suất.
ALB có thể gọi các function Lambda trực tiếp, hỗ trợ tốt cho các kiến trúc serverless.
ALB thực hiện kiểm tra sức khỏe của các target trong target group. Nếu một target không phản hồi, ALB sẽ không gửi lưu lượng đến nó.
ALB tự động phân phối lưu lượng đến các tài nguyên có sẵn để tối ưu hóa hiệu suất.
Thông thường đối với các ứng dụng web chúng ta chỉ cần tạo 2 listener nắng nghe cổng 80 và cổng 443. Các request đến web server từ cổng 80 sẽ được redirect sang cổng 443, và từ cổng 443 sẽ forward tới target group, hoặc request từ cổng 80, 443 đều forward tới target group. Chúng ta sẽ đăng kí ssl(ACM) cho ứng dụng trong listener post 443. Có thể đăng kí được 1 ACM nếu nắng nghe trên 1 domain, hoặc nhiều (ACM) nếu nắng nghe trên nhiều domain ở đây.
Trong ví dụ này 2 listener post 80, 443 đều forward đến target group chạy post 80.
example.com
)./images
).Rule giúp định tuyến traffict đi như thế nào? Ví dụ với host header là example.com
cho forward đến target group post 80, với sub path là /images
cho forward đến target group post 81...
Target group là nơi nhóm các ứng dụng lại vào một nhóm. VD server web chạy post 80, server api chạy post 81, tuỳ theo domain là web hay api mà set rule sẽ forward đến đúng target group.
Ở ví dụ trên chúng ta chạy 4 container trong ec2, post 80 chạy server web, post 81 chạy server admin là sub path của server web, post 82 chạy server api với sub domain, post 83 chạy server tracking với sub domain.
VD: domain server web: web.com, domain server admin: web.com/admin, domain server api: api.web.com, domain server tracking: tracking.web.com. Tuỳ request tới domain nào mà load balancer sẽ chuyển hướng đến đúng server web, admin, api hay tracking.
ALB được tính phí dựa trên:
Bạn có thể tham khảo chi tiết chi phí tại AWS Pricing.