Bài 11: Autoscaling và Cloud Load Balancing là gì?

Bài 11: Autoscaling và Cloud Load Balancing là gì?

·

4 min read

Bạn có bao giờ thắc mắc những ứng dụng phục vụ hàng triệu người dùng hoạt động như thế nào chưa? Chắc server của họ phải mạnh lắm mới có thể xử lý hết lưu lượng truy cập khổng lồ như vậy đúng không? Server của họ cũng mạnh nhưng để giảm tải thì họ sẽ sử dụng nhiều server cùng lúc chứ không all in hết trên một server. Trong bài này, chúng ta sẽ tìm hiểu về Autoscaling và Load Balancing. Từ đó bạn có thể biết được cách chia lưu lượng truy cập vào từng server và cách họ mở rộng quy mô server của mình nhé.

Autoscaling là gì?

Compute Engine có một tính năng gọi là Autoscaling, giúp thêm hoặc xoá máy ảo dựa trên số liệu của ứng dụng. Tính năng này còn giúp cân bằng lưu lượng truy cập (traffic) giữa các máy ảo. Ví dụ: nếu CPU của ứng dụng tăng lên 80% thì Autoscaling sẽ khởi động thêm một máy ảo nữa để chia đôi công việc xử lý.

Trên thực tế, bạn có thể cấu hình các máy ảo rất lớn bằng Compute Engine, rất phù hợp cho các công việc phân tích cần sử dụng nhiều CPU. Nhưng hầu hết người dùng đều tiếp cận theo hướng mở rộng quy mô chứ không phải tăng quy mô.

Số lượng CPU tối đa trên mỗi VM đều phụ thuộc vào dòng máy ảo và zone. Bạn có thể tìm thêm các thông số kỹ thuật cho các loại máy VM hiện có tại đây.

Cloud Load Balancing là gì

Vậy là chúng ta đã tìm hiểu qua về Autoscaling, nhưng làm cách nào để người dùng sử dụng ứng dụng khi số lượng máy ảo của ứng dụng đó sẽ thay đổi theo thời gian. Tại thời điểm này thì ứng dụng sử dụng 4 máy ảo, nhưng thời điểm khác ứng dụng sử dụng 40 máy ảo thì sao?

Vấn đề này sẽ được giải quyết bằng Cloud Load Balancing. Nhiệm vụ của Load Balancing là phân phối lưu lượng người dùng giữa nhiều instance của ứng dụng. Bằng cách phân tán lưu lượng truy cập, Load Balancing giúp ứng dụng giảm nguy cơ gặp các vấn đề về hiệu năng.

Cloud Load Balancing là dịch vụ được quản lý toàn diện, tất cả lưu lượng truy cập đều được xác định bằng phần mềm. Load Balancing không chạy trong máy ảo của bạn nên bạn không cần lo về việc mở rộng quy vô hoặc quản lý chúng.

Bạn có thể đặt Load Balancing ở trước tất cả lưu lượng truy cập như HTTP/HTTPS, TCP, SSL cũng như UDP. Cloud Load Balancing có thể cân bằng tải giữa nhiều region, giúp chuyển lưu lượng truy cập nếu backend không ổn định. Nó còn phản ứng rất nhanh với những thay đổi trong mạng của người dùng, tình trạng backend, và các điều kiện khác.

Các loại Load Balancing

VPC cung cấp một bộ tùy chọn Load Balancing. Nếu bạn cần cân bằng tải theo region cho ứng dụng web, hãy sử dụng Global HTTP(S). Đối với lưu lượng truy cập liên quan đến tầng socket, bạn có thể sử dụng Global SSL Proxy. Nếu là lưu lượng TCP, hãy sử dụng Global TCP Proxy. Nếu bạn muốn cân bằng tải lưu lượng UDP hay bất kỳ port nào thì bạn có thể sử dụng Regional Load Balancing. Điểm chung của tất cả dịch vụ trên là chúng đều dành cho lưu lượng truy cập vào mạng Google từ Internet.

Nhưng nếu bạn muốn cân bằng lưu lượng bên trong dự án của mình thì sao? Ví dụ như giữa lớp Presentation và lớp Business. Bạn có thể sử dụng bộ cân bằng tải nội bộ theo region, Regional internal. Nó chấp nhận lưu lượng truy cập trên địa chỉ IP nội bộ của Google Cloud và cân bằng tải trên các máy ảo Compute Engine.

Cuối cùng, bộ cân bằng tải Internal HTTP(S) là bộ cân bằng tải layer 7 dựa trên proxy. Nó cũng cho phép bạn chạy và mở rộng quy mô dịch vụ của mình bằng địa chỉ IP cần bằng tải nội bộ.

Internal HTTP(s) LB là dịch vụ được quản lý dựa trên proxy mã nguồn mở, Envoy. Điều này cho phép nó kiểm soát lưu lượng dựa trên các thông số HTTPS. Sau khi Load Balancing được cấu hình, nó sẽ tự động phân bổ proxy Envoy để đáp ứng nhu cầu lưu lượng của bạn.

Và đó là tất cả về Autoscaling và Cloud Load Balancing trong Google Cloud.