October 18, 2021

Tạo load balancer cho các máy ảo (VM) trên GCP

Load balancer  là một hệ thống (phần mềm , thiết bị ) đóng vai trò phân chia các request (thường từ users thông qua internet) tới các server đứng sau nó (backend server). Để dễ hình dung các bạn có thể coi hình dưới.

Trước tiên chúng ta cần bật Cloud Shell ở màn hình GCP console lên.

Sau đó ở màn hình Cloud Shell chúng ta chạy 2 lệnh dưới để setting zone và region cho project. (Nên chọn zone là ở Singapore asia-southeast1-a để có được đường truyền từ Việt Nam tốt hơn)

gcloud config set compute/zone asia-southeast1-a
gcloud config set compute/region asia-southeast1

1. Tạo managed instance group

1.1 Chúng ta cần tạo file startup.sh để cài đặt nginx server (một web server phổ biến) sau khi VM tạo xong. Tại màn hình Cloud Shell chúng ta chạy lệnh sau.

cat << EOF > startup.sh
#! /bin/bash
apt-get update
apt-get install -y nginx
service nginx start
sed -i -- 's/nginx/Google Cloud Platform - '"$HOSTNAME"'/' /var/www/html/index.nginx-debian.html
EOF

1.2 Tạo instance template với thông số khởi tạo là file startup.sh vừa tạo ở bước trên (1.1). Tại màn hình Cloud Shell chúng ta chạy lệnh sau.

gcloud compute instance-templates create nginx-template  --metadata-from-file startup-script=startup.sh

1.3 Tạo target pool để có thể cho các VM có thể được truy cập từ một điểm.

gcloud compute target-pools create nginx-pool

1.4 Tạo instance group (trong trường hợp này chúng ta sẽ tạo 2 VM) từ instance template ở bước 1.2 bằng lệnh:

gcloud compute instance-groups managed create nginx-group 
         --base-instance-name nginx 
         --size 2 
         --template nginx-template 
         --target-pool nginx-pool

1.5 Tạo filewall để mở port 80 để user có thể truy cập vào web-server:

gcloud compute firewall-rules create www-firewall --allow tcp:80

Kết quả là chúng ta đã tạo được 2 VM phải không nào, các bạn check bằng lệnh : gcloud compute instances list

Gõ EXTERNAL_IP của một trong 2 VM đó, bạn có được giao diện web giống bên dưới.

2. Tạo load balancer

Trong bài này mình sẽ cùng các bạn tạo Network Load Balancer, (còn việc tạo HTTP(s) Load Balancer các bạn coi là bài tập và tự tạo nhé).

Các bạn chạy lệnh sau ở Cloud Shell:

gcloud compute forwarding-rules create nginx-lb 
         --port-range 80 
         --target-pool nginx-pool

Để biết được địa chỉ IP của load balancer, các bạn chạy lệnh sau: gcloud compute forwarding-rules list

Bạn gõ địa chỉ IP của load balancer (trong trường hợp hình trên là: 35.198.250.189) vào trình duyệt, sẽ ra được nội dung giống hình dưới phải không nào.

Khi thực hành có chỗ nào chưa hiểu, cần support, các bạn hãy liên hệ với các chuyên gia Cloud Ace , hoặc comment ở form comment bên dưới, để nhận được hỗ trợ tốt hơn.