Text of Relipa

Master AWS – Phần 1: Load Balancer

I. Giới thiệu Load Balancer

Load Balancer nghĩa tiếng việt là cân bằng tải, dùng để phân chia request từ user tới từng máy chủ.

1. Tại sao cần tạo ra Load Balancer

Hệ thống cơ sở ban đầu của các hệ thống nhỏ, tất cả được dựng trên 1 web server.

No Load Balancer

Ở những hệ thống kiểu này, người sử dụng kết nối trực tiếp đến máy chủ web, tại yourdomain.com. Nếu máy chủ web duy nhất này sập, người sử dụng sẽ không thể truy cập vào trang web. Ngoài ra, nếu quá nhiều người dùng cố gắng truy cập vào máy chủ cùng một lúc thì nó không thể xử lý tải, họ có thể gặp thời gian tải chậm hoặc không thể kết nối.

Load Balancer được tạo ra để giải quyết vấn đề này.

Load Balancer

Ưu và nhược điểm khi dùng Load Balancer:

2. Hệ thống nào nên dùng Load Balancer

Công việc chính của Load Balancer là chia việc (request) cho những server app làm, lượng công việc này cần phải tốn nhiều công sức mà 1 server khó có thể làm nổi thì mới đáng để dùng.
Cũng như thực tế, quản lý (là Load Balancer) chia việc các nhân viên làm (là các server app). Khi mà lương việc quá lớn mà 1 người không đảm đương được hết công việc, thì cần nhóm người, và để đảm bảo nhóm người này hoạt động tốt, chúng ta cần 1 người quản lý.

Nhưng công sức ở các server app được hiểu như thế nào? Đương nhiên 1 server app cũng có năng lực giới hạn và hoàn toàn có thể tính được (ở 1 bài khác trong tương lai: mình sẽ chia sẽ cách ước tính năng lực giới hạn của 1 server chịu tải tới đâu).
Vậy chúng ta có thể tạm hiểu hệ thống lớn, chịu tải nhiều sẽ cần đến ELB (vd: Google, Facebook, …).

II. Elastic Load Balancer (ELB)

Elastic Load Balancer là 1 service của AWS hỗ trợ Load Balancer. Có 3 loại ELB.

Tính chất chung của ELB:

1. Classic Load Balancer (CLB)

Bộ Load Balancer phân phối lưu lượng ứng dụng đến trên nhiều phiên bản EC2 trong nhiều Availability Zones. Điều này làm tăng khả năng chịu lỗi của các ứng dụng của bạn. ELB phát hiện các trường hợp không lành mạnh và chỉ lưu lượng truy cập đến các trường hợp lành mạnh.

Classic Load Balancer

Khi bật option Sticky session

Người dùng truy cập CLB sẽ có 1 cookie xác định 1 server họ đã từng vào (có thể setting timeout cho cookie này), và trong khi cookie này còn tốn tại request của user sẽ luôn được đưa về server cũ đó để xử lý. Việc này rất cần thiết cho những hệ thống lưu session trực tiếp trên server chạy app.

2. Application Load Balancer (ALB)

Một chức năng Load Balancer ứng dụng ở lớp ứng dụng, lớp thứ bảy của Open Systems Interconnection (OSI). Sau khi Load Balancer nhận được yêu cầu, nó sẽ đánh giá các quy tắc người nghe theo thứ tự ưu tiên để xác định quy tắc nào sẽ được áp dụng, sau đó chọn mục tiêu từ nhóm mục tiêu cho hành động quy tắc. Bạn có thể định cấu hình quy tắc người nghe để định tuyến các yêu cầu đến các nhóm mục tiêu khác nhau dựa trên nội dung của lưu lượng ứng dụng. Định tuyến được thực hiện độc lập cho từng nhóm mục tiêu, ngay cả khi mục tiêu được đăng ký với nhiều nhóm mục tiêu.

Application Load Balancer

3. Network Load Balancer (NLB)

Chức năng Load Balancer mạng ở lớp thứ tư của Open Systems Interconnection (OSI). Nó có thể xử lý hàng triệu yêu cầu mỗi giây. Sau khi Load Balancer nhận được yêu cầu kết nối, nó sẽ chọn một mục tiêu từ nhóm mục tiêu cho quy tắc mặc định. Nó cố gắng mở kết nối TCP đến mục tiêu đã chọn trên cổng được chỉ định trong cấu hình trình nghe.

Network Load Balancer

III. Những chú ý để chọn loại Load Balancer phù hợp.