Load balancer là gì? Sự khác nhau giữa các loại Load Balancer của AWS

AWS Nov 05, 2020

Khi cần thiết kế đến một hệ thống có HA cao (High availability-Tính có sẵn cao), người ta sẽ phải gọi tên Load Balancer.

Load Balancer (Nguồn ảnh: https://docs.aws.amazon.com/)

Giả sử bạn có 1 website được host trên một EC2 instance của AWS (Hoặc của bất kỳ công ty cung cấp dịch vụ cloud nào như Azure, Google Cloud…). Website của bạn hàng ngày có cả chục nghìn request gửi đến, và web có lượng người truy cập 24/24h.

Tuy nhiên một ngày đẹp trời, EC2 instance mà bạn dùng để host website đó lăn ra “chết”, vì quá tải RAM, CPU….hoặc vì lý do gì đó khác , thì ngay tại thời điểm EC2 đó “chết” thì user của bạn sẽ không thể truy cập được vào website của bạn. Hàng nghìn con người đang dùng web một cách bình thường không hiểu vì sao không vào được web. Nếu đó là những web thương mại điện tử lớn như tiki, lazada chẳng hạn, thì thời điểm đó họ đã mất rất nhiều đơn hàng rồi, hay giả sử đó là hệ thống của một ngân hàng bị gián đoạn thì sẽ gây ảnh hưởng cho bao nhiêu doanh nghiệp, người dùng?...vậy một hệ thống có nhiều người truy cập và cần phải Availibility 24/24h như vậy sẽ cần một kiến trúc như nào?

Cơ bản nhất chúng ta cần từ 2 instance EC2 trở lên để host website này, để khi 1 EC2 instance chết sẽ có con EC2 khác vẫn tiếp nhận được request client và vẫn phục vụ được client của mình.

Tuy nhiên khi bạn có nhiều EC2 cùng phục vụ những nội dung giống nhau, làm thế nào để chia đều request cho mỗi EC2? Vì nếu không có ai đứng giữa điều phối thì có những instance bị route rất nhiều traffic đến, xử lý đến quá tải trong khi những instance còn lại lại đứng chơi?

Có nhiều cách để thực hiện việc này nhưng một trong những cách phổ biến và hiệu quả nhất đó là dùng dịch vụ Load load balancer của AWS- Dịch vụ cân bằng tải. Vậy dịch vụ Load load balancer hoạt động như thế nào? Có những gói dịch vụ nào? Điểm khác nhau giữa các gói dịch vụ đó là gì? Chúng ta sẽ cùng tìm hiểu ở phần tiếp theo nhé.

Load load balancer hoạt động như thế nào?

Dịch vụ load balancer của AWS có tên chính thức là : Elastic Load Balancing, trong bài này nhiều khi mình chỉ dùng từ load balancer.

Load Balancer cũng giống như vai trò của lễ tân vậy khi có vấn đề gì người đầu tiên bạn gặp là lễ tân trước. Load balancer sẽ nhận các request từ client sau đó sẽ điều hướng đến những target mà bạn đã đăng ký (Có thể là EC2 instances, containers, IP addresses, Lambda functions…), những target này có thể nằm trên 1 AZ(availability zone) hoặc ở nhiều AZs khác nhau. Ở thời điểm mình viết bài này AWS cung cấp cho người dùng 3 loại load balancer để phù hợp với nhu cầu sử dụng của bạn, đó là Application Load Balancer, Network Load Balancer và Classic Load Balancer.

Bạn sẽ cần căn cứ xem mình cần route traffic như nào để chọn loại load balancer phù hợp.

Sự khác nhau giữa Application Load Balancer, Network Load Balancer và Classic Load Balancer

Mình tổng hợp một vài điểm chính ở dưới bảng này.

Hoạt động ở layer 4 thì sao? Layer 7 thì sao?

Khi load balancer hoạt động ở layer 4 này thì load balancer hoạt động ở level network protocol và không nhìn vào bên trong từng network packet.
Nhưng khi load balancer ở layer 7 thì load balancer tinh vi và mạnh mẽ hơn khi nó có thể inspect các packets và access vào cả HTTP, HTTPS header nữa...
Chính vì có khả năng access vào HTTP hay HTTPS như vậy nên bạn có thể cân bằng tải giữa các backend service trên 1 instance.Ví dụ bạn có thể route những request trên URL có /api vào 1 nhóm các service(chính là những target), và những request khác có /mobile vào 1 group service khác.
Net work load balancer hoạt động ở layer 4 nên không thể check độ availability(có sẵn) của Application A và Application B nếu 2 application này dùng chung port (Nếu khác port thì đương nhiên là check được) trong khi Application loadbalancer lại có thể làm được.

Dưới đây là một ví dụ cho kiến trúc dùng Application Load Balancing, kiến trúc này cho phép load balancer có thể route traffic qua multil port trên cùng 1 EC2 instance.

Nguồn ảnh: https://aws.amazon.com/blogs/devops/

Hi vọng bài viết của mình đã giúp các bạn có một cái nhìn khái quát về dịch vụ rất quan trọng Load Balancer này của AWS. Nếu muốn tìm hiểu kỹ hơn về cách vận hành của từng loại load balancer, hay chi tiết hơn về các component của từng loại thì các bạn nên tìm hiểu bằng User guide của AWS nhé.

Các bài viết đã tham khảo:

https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html

https://aws.amazon.com/blogs/aws/category/elastic-load-balancing/

Tags

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.