Elastic Load Balancer (ELB) là gì?
Khi một ứng dụng phục vụ hàng trăm hoặc hàng triệu người dùng, hệ thống backend (như các máy chủ hoặc container) cần chia sẻ khối lượng công việc với nhau. Elastic Load Balancer là một bộ cân bằng tải giúp phân phối đều lưu lượng truy cập đến các máy chủ đó, nhằm đảm bảo hiệu suất và tính sẵn sàng cao.
Load Balancer hoạt động như thế nào?
Load Balancer giống như một “nhân viên giám sát và điều phối”:
- Tiếp nhận tất cả các request từ user.
- Chọn server thích hợp để xử lý mỗi yêu cầu dựa trên tình trạng thực tế (có thể là server nào nhẹ tải nhất, nhanh nhất, hoặc ngẫu nhiên).
- Nếu một server bị lỗi, Load Balancer sẽ tự động bỏ qua và phân phối yêu cầu đến server khác vẫn đang hoạt động tốt.
Tại sao cần sử dụng ELB?
- Tăng tính sẵn sàng: Nếu một server gặp sự cố, ELB sẽ tự động chuyển hướng lưu lượng đến các server khác.
- Cân bằng tải: Giúp phân phối đều lưu lượng truy cập, tránh tình trạng quá tải cho một server duy nhất.
- Tự động mở rộng: Khi lưu lượng tăng, ELB có thể tự động thêm các server mới vào nhóm cân bằng tải để đáp ứng nhu cầu.
- Hỗ trợ SSL: ELB có thể xử lý mã hóa SSL, giúp giảm tải cho các server backend.
Các thành phần chính của ELB
- Listeners: Là các cổng mà ELB lắng nghe để nhận request từ người dùng. Mỗi listener có thể được cấu hình với một hoặc nhiều Rule để xử lý Request.
- Target Groups: Là nhóm các server (EC2 instances, containers, v.v.) mà ELB sẽ phân phối lưu lượng đến. Mỗi target group có thể được cấu hình với các tiêu chí khác nhau như health checks, cổng, v.v.
- Health Checks:
- ELB sẽ thường xuyên kiểm tra tình trạng hoạt động của các server trong target group.
- Nếu một server không đáp ứng yêu cầu, ELB sẽ tự động loại bỏ nó khỏi danh sách phân phối lưu lượng cho đến khi nó trở lại hoạt động bình thường.
- Routing Algorithms: ELB sử dụng các thuật toán khác nhau để phân phối lưu lượng, bao gồm Round Robin, Least Connections, và IP Hashing.
Các loại Elastic Load Balancer
AWS cung cấp ba loại ELB chính:
- Application Load Balancer (ALB): Tốt nhất cho các ứng dụng web và microservices. Hỗ trợ routing dựa trên HTTP/HTTPS, WebSocket, và có thể xử lý các request dựa trên đường dẫn URL hoặc tiêu đề HTTP.
- Network Load Balancer (NLB): Tốt nhất cho các ứng dụng yêu cầu hiệu suất cao và latency thấp. Hỗ trợ TCP và UDP, có thể xử lý hàng triệu request mỗi giây.
- Classic Load Balancer (CLB): Loại cũ hơn, hỗ trợ cả HTTP/HTTPS và TCP. Tuy nhiên, AWS khuyến nghị sử dụng ALB hoặc NLB cho các ứng dụng mới vì chúng cung cấp nhiều tính năng hơn và hiệu suất tốt hơn.
Chúng ta sẽ tìm hiểu chi tiết về từng loại ELB trong các phần sau của khoá học.