Tự học AWS [P8] - AWS Networking & Content Delivery - ELB - Elastic Load Balancing

Tự học AWS [P8] - AWS Networking & Content Delivery - ELB - Elastic Load Balancing

2020, Aug 04    

Trong quá trình duy trì hệ thống, để hệ thống có thể có tính chịu lỗi cao, chúng ta thường xem xét tới việc duy trì thêm một hoặc nhiều máy chủ có chức năng hoạt động tương tự, khi máy chủ chính có vấn đề, những máy chủ phụ sẽ thay thế xử lí công việc trong khi khắc phục sự cố. Hoặc cũng có thể, khi lưu lượng người dùng gửi request tới server quá lớn sẽ gây quá tải. Nhằm khác phục việc này thì việc duy trì nhiều máy chủ và chia sẻ công việc với nhau cũng là một trong những giải pháp thông dụng. AWS cũng cung cấp một service giải quyết 2 nhiệm vụ trên đó là Elastic Load Balancing.

Elastic Load Balancing

Công việc chính của ELB chính là cân bằng tải giữa các Instances. Khi một request được gửi tới ELB, nó sẽ xem xét xem request này sẽ được foward về Instance nào với tiêu chí làm sao cho các request được phân chia đồng đều giữa các Instances, giúp cho hệ thống hoạt động trơn chu nhất.

Elastic Load Balancing

Thêm vào đó, nếu một trong những Instance gặp sự cố, ELB sẽ tự động phát hiện và sẽ ngừng cấp request, tránh tình trạng mất mát dữ liệu hay loss request.

EC2 Drop

Những tính năng chính của ELB:

  • High availability: Tính sẵn có cao - ELB tự động phân chia traffic cho các EC2 Instances, các IP Address trong cùng một Availability Zone hoặc nhiều Availability Zone.

  • Health checks: ELB tự động phát hiện những Instance unhealthy bằng cách gửi request để check phản hồi. Nếu một Instance unhealthy, ELB sẽ ngừng cung cấp traffic cho Instance đó và phân phát đều cho những Instance còn lại

  • Security features: Các ELB được quản lí bên trong VPC và được gán với các Security Groups giúp cho gia tăng sự bảo mật.

  • Layer 4 or Layer 7 load balancing: ELB sử dụng request từ tầng Ứng dụng - tầng 7 và tầng Vận chuyển - tầng 4 để điều hướng request. 3 options mà AWS cung cấp đó là Application Load Balancer, Network Load Balancer và Classic Load Balancer sẽ được nói rõ ở phần sau.

Application Load Balancer

Đây là loại Balancer giúp phân phối request dựa vào HTTP/ HTTPS. Bạn có thể tùy biến nó một cách thông minh để có thể tự động phân phối request dự vào những đặc điểm hoặc thông số của thể của Request. Application Load Balancer phục vụ tại tầng thứ 7 - tầng ứng dụng nên nó có thể phục vụ một số tính năng như chuyển request tới Lambda Functions, HTTP header-based routing, HTTP method-based routing.

Application Load Balancer

Ngoài ra, với Application Load Balancer còn có thể sử dụng một số feature như:

  • Sticky Sessions: Định hướng request của từ một client tới tartget cụ thể. Nhờ vào đó có thể tối ưu việc sử dụng cookie để khôi phục lại session.
  • Health Checks: Kiểm tra tính sẵn có của các instances, tránh việc gửi request tới một Instance không còn khả năng phục vụ.
  • Redirects: Có thể sử dụng tính năng điều hướng request của Client tới một server khác, có thể tận dụng để điều chỉnh việc điều hướng một request từ ứng dụng cũ tới một ứng dụng mới. Ngoài ra, còn hỗ trợ chuyển HTTP sang HTTPS.
  • Fixed Response: Có thể kiểm soát việc những request nào được phục vụ. Kiểm soát việc trả về response với HTTP error codes và điều chỉnh message trả về mà không phải chuyển request tới ứng dụng.

Network Load Balancer

Network Load Balancer

Network Load Balancer là loại Load Balancer thiết kế cho những ứng dụng yêu cầu tốc độ phản hồi cao. Bằng việc kết nối với tầng vận chuyển - Transport Layer, NLB có thể hoạt động với giao thức TCP và UDP và điều hướng hàng triệu request mỗi giây với độ trễ cực thấp.

Những feature chính của Network Load Balancer:

  • High Throughput: Có thể cân bằng tải cho hàng triệu request/sec.
  • Low Latency: Độ trễ cực thấp khi điều hướng request.
  • Integrateion with AWS Services: Tích hợp với những service khác như Auto Scaling, Elastic Container Service, Cloud Formation,…

Classic Load Balancer

Như tên gọi, Classic Load Balancer cung cấp dịch vụ cơ bản cho phép phân phối request cho các EC2 Instances cả ở mức request và connection ( Layer 7 và Layer 4). Classic Load Balancer hướng tới những ứng dụng được xây dựng cùng với EC2-Classic network. Với những ứng dụng sử dụng VPC, AWS khuyên dùng Application Load Balacer và Network Load Balancer.

Classic Load Balancer

Những featuer chính được giữ lại trên Classic Load Balancer:

  • High Availibility
  • Health Checks
  • Sticky Session

Mọi ý kiến đóng góp vui lòng để lại bình luận cuối bài viết.

Bài viết được tham khảo và sử dụng hình ảnh từ: