Xin chào, tiếp nối series trước về giới thiệu các công nghệ sử dụng trong dự án JRDB. Hôm nay mình xin chia sẻ với các bạn công nghệ đến từ Google Cloud Platform (GCP) là Cloud Load Balancing. Vậy Load Balancing là gì và được ứng dụng như thế nào trong dự án các bạn hãy theo dõi bài viết dưới đây nhé!
Series Các công nghệ ứng dụng trong dự án JRDB:
Phần 1: Giới thiệu dự án
Phần 2: Cloud Armor là gì?
Load Balancing là gì?
- Cân bằng tải (Load Balancing) là cách phân phối lưu lượng người dùng vào các instance khác nhau trong ứng dụng của bạn. Bằng cách phân bố tải sẽ giúp cho ứng dụng của bạn tránh được các vấn đề về hiệu suất ứng dụng. Google's Cloud Load Balancing được xây dựng trên các công nghệ đáng tin cậy như Maglev, Andromeda, Google Front Ends, và Envoy.
Các tính năng của Cloud Load Balancing
- Phân phối toàn cầu với single IP Anycast: Cloud Load Balancing phản ứng tức thì với những thay đổi về người dùng, lưu lượng truy cập, mạng, tình trạng phụ trợ và các điều kiện liên quan khác với phạm vi toàn cầu.
- Software-defined load balancing: Cloud Load Balancing là dịch vụ được quản lý, xác định và phân phối hoàn toàn bằng phần mềm cho tất cả lưu lượng truy cập của bạn
- Seamless Autoscalling: Cloud Load Balancing có thể tự động mở rộng nếu lưu lượng người dùng của bạn tăng lên, bao gồm dễ dàng xử lý mức tăng đột biến lớn, bất ngờ và tức thời bằng cách chuyển hướng đến các vùng khác trên thế giới có thể tiếp nhận. Tự động mở rộng không cần phải làm nóng trước mà bạn có thể mở rộng từ 0 đến toàn bộ lưu lượng chỉ trong vài giây
- Layer 4 and Layer 7 load balancing: Sử dụng Layer 4 để điều hướng lưu lượng truy cập dựa trên các dữ liệu từ mạng và các giao thức vận chuyển như TCP, UDP, ESP, GRE, ICMP, and ICMPv6. Sử dụng cân bằng tải dựa trên Lớp 7 để thêm các quyết định định tuyến yêu cầu dựa trên các thuộc tính, chẳng hạn như tiêu đề HTTP và mã định danh tài nguyên thống nhất.
- External and internal load balancing: Bạn có thể sử dụng External Load Balancing khi khách hàng truy cập từ internet Và sử dụng Internal Load Balancing khi khách hàng của bạn sử dụng Google Cloud.
Các Loại Load Balancer
- Cloud Load Balancing cung cấp 2 loại là Application Load Balancers và Network Load Balancers. Bạn có thể chọn Application Load Balancer khi bạn cần Layer 7 cho các ứng dụng có lưu lượng HTTP(S). Bạn nên chọn Network Load Balancer khi bạn cần Layer 4 hỗ trợ giảm tải TLS hoặc bạn cần hỗ trợ cho các giao thức IP như UDP, ESP, ICMP, ... Trong bài viết này mình xin giới thiệu với bạn Application Load Balancers và các triển khai.
Application Load Balancers là bộ cân bằng tải Layer 7 dựa trên proxy cho phép bạn chạy và mở rộng dịch vụ của mình bằng một địa chỉ IP duy nhất. Application Load Balancer phân phối lưu lượng HTTP và HTTPS tới các chương trình phụ trợ được lưu trữ trên nhiều nền tảng Google Cloud như là Compute Engine, Google Kubernetes Engine (GKE), và Cloud Run cũng như là các chương trình phụ trợ bên ngoài Google Cloud
Triển khai Application Load Balancer với API Gateway và Cloud Function
- Tạo Network Endpoint Group (NEG):
gcloud compute network-endpoint-groups create jrdb-user-apigateway-neg --network-endpoint-type="internet-fqdn-port" --global
- Update NEG, trỏ endpoint tới API Gateway:
gcloud compute network-endpoint-groups update jrdb-user-apigateway-neg --add-endpoint="fqdn=jrdb-user-gw-6fssjgwf.an.gateway.dev,port=443" --global
3.: Tạo backend service:
gcloud compute backend-services create jrdb-user-apigateway-lb-backend --global --enable-cdn --protocol=HTTP2
Update backend service, add custom header:
gcloud compute backend-services update jrdb-user-apigateway-lb-backend --custom-request-headeer "Host: jrdb-user-gw-6fssjgwf.an.gateway.dev" --global
Add NEG to backend service:
gcloud compute backend-services add-backend jrdb-user-apigateway-lb-backend --network-endpoint-group "jrdb-user-apigateway-neg" --global-network-endpoint-group --global
Tạo URL map(load balancer) cho backend service
gcloud compute url-maps create jrdb-user-apigateway-url-map --default-service jrdb-user-apigateway-lb-backend --global
Tạo ssl cert cho load balancer
gcloud compute target-https-proxies create jrdb-user-apigateway-target-https-proxy --url-map=jrdb-user-apigateway-url-map
Request ssl cert
gcloud beta compute ssl-certificates create jrdb-user-apigateway-ssl --domains api.bigtime.world
Tạo https proxy, gán cho load balance và ssl certificate
gcloud compute target-https-proxies create jrdb-user-apigateway-target-https-proxy --url-map=jrdb-user-apigateway-url-map --ssl-certificates=jrdb-user-apigateway-ssl --global
Tạo forwarding rule, trỏ tới https proxy
gcloud compute forwarding-rules create jrdb-user-apigateway-forwarding-rule --ip-protocol=TCP --ports=443 --global --target-https-proxy=jrdb-user-apigateway-target-https-proxy
Lấy ip loadbalancer
gcloud compute forwarding-rules list
Gán ip load balancer vào DNS provider
Lưu ý: Bạn cần chờ để ssl certificate active
Kiểm tra cấu hình Load Balancer của bạn
- Phía trên bạn đã cấu hình một load balancer thành công bây giờ bạn có thể gửi request đến load balancer của mình bằng cách curl đến domain của mình
curl https://HOST_URL/hello/
Trên đây là bài viết giới thiệu về Cloud Load Balancing ở Google Cloud Platform của mình nếu các bạn thấy hay hãy chờ đón bài viết tiếp theo đến từ series "Các công nghệ được ứng dụng trong dự án JRDB" nhé. Cám ơn các bạn đã quan tâm theo dõi!