0
0
Lập trình
Admin Team
Admin Teamtechmely

🌍 Nắm Vững Google Cloud Load Balancers Toàn Cầu: MIG & HTTP

Đăng vào 4 tháng trước

• 8 phút đọc

Google Cloud - Nhóm Phiên Quản Lý Khu Vực (MIG)

Bước 1: Giới thiệu

Trong bài viết này, chúng ta sẽ khám phá cách thiết lập và quản lý Google Cloud Load Balancers cùng với Nhóm Phiên Quản Lý Khu Vực (Managed Instance Groups - MIG). Để bắt đầu, hãy thực hiện các bước sau:

i. Tạo VPC

  • Tên VPC: vpc3-custom

ii. Tạo Quy Tắc Tường Lửa Ingress

  • Cho phép ICMP
  • Cho phép SSH trên cổng 22
  • Cho phép tất cả IP, tất cả cổng giữa các phiên bản VM trong một mạng VPC
  • Cho phép lưu lượng từ hệ thống kiểm tra sức khỏe của Google Cloud (130.211.0.0/22 và 35.191.0.0/16)

iii. Tạo hai subnet trong hai khu vực

  • us-central1-subnet
  • us-east1-subnet

iv. Tạo Mẫu Phiên Bản trong các khu vực us-central1 và us-east1

v. Tạo Kiểm Tra Sức Khỏe Toàn Cầu (áp dụng cho cả hai khu vực)

vi. Tạo Managed Instance Groups trong các khu vực us-central1 và us-east1

  • Tạo Managed Instance Group (MIG)
  • Tạo cổng được đặt tên cho MIG

Bước 2: Tạo Mạng VPC

Copy
# Thiết lập Dự Án
gcloud config set project PROJECT_ID
gcloud config set project gcpdemos

# Tạo Mạng VPC
gcloud compute networks create vpc3-custom --subnet-mode=custom --bgp-routing-mode=global

Bước 3: Tạo Quy Tắc Tường Lửa VPC

Copy
# Quy Tắc Tường Lửa-1: Cho phép kết nối ICMP từ bất kỳ nguồn nào đến bất kỳ phiên bản nào trên mạng
gcloud compute firewall-rules create vpc3-custom-allow-icmp \
  --network=vpc3-custom \
  --description="Cho phép kết nối ICMP từ bất kỳ nguồn nào đến bất kỳ phiên bản nào trên mạng" \
  --direction=INGRESS \
  --priority=65534 \
  --source-ranges=0.0.0.0/0 \
  --action=ALLOW \
  --rules=icmp

# Quy Tắc Tường Lửa-2: Cho phép TCP từ bất kỳ nguồn nào đến bất kỳ phiên bản nào trên mạng qua cổng 22.
gcloud compute firewall-rules create vpc3-custom-allow-ssh \
  --network=vpc3-custom \
  --description="Cho phép TCP từ bất kỳ nguồn nào đến bất kỳ phiên bản nào trên mạng qua cổng 22." \
  --direction=INGRESS \
  --priority=65534 \
  --source-ranges=0.0.0.0/0 \
  --action=ALLOW \
  --rules=tcp:22

# (TÙY CHỌN) Quy Tắc Tường Lửa-3: Cho phép kết nối từ bất kỳ nguồn nào đến bất kỳ phiên bản nào trên mạng qua các giao thức tùy chỉnh
gcloud compute firewall-rules create vpc3-custom-allow-custom \
  --network=vpc3-custom \
  --description="Cho phép kết nối từ bất kỳ nguồn nào đến bất kỳ phiên bản nào trên mạng qua các giao thức tùy chỉnh." \
  --direction=INGRESS \
  --priority=65534 \
  --source-ranges=10.128.0.0/9 \
  --action=ALLOW \
  --rules=all

# Quy Tắc Tường Lửa-4: Quy tắc Ingress cho phép lưu lượng từ các hệ thống kiểm tra sức khỏe của Google Cloud (130.211.0.0/22 và 35.191.0.0/16).
gcloud compute firewall-rules create vpc3-custom-allow-health-check \
  --network=vpc3-custom \
  --description="Cho phép lưu lượng từ hệ thống kiểm tra sức khỏe của Google Cloud" \
  --direction=ingress \
  --source-ranges=130.211.0.0/22,35.191.0.0/16 \
  --action=ALLOW \
  --rules=tcp:80

Bước 4: Tạo Subnets

Copy
# Subnet1: Tạo Subnet trong khu vực us-central1
gcloud compute networks subnets create us-central1-subnet \
  --description="us-central1-subnet" \
  --range=10.135.0.0/20 \
  --stack-type=IPV4_ONLY \
  --network=vpc3-custom \
  --region=us-central1

# Subnet2: Tạo Subnet trong khu vực us-east1
gcloud compute networks subnets create us-east1-subnet \
  --description="us-east1-subnet" \
  --range=10.145.0.0/20 \
  --stack-type=IPV4_ONLY \
  --network=vpc3-custom \
  --region=us-east1

Bước 5: Tạo Kiểm Tra Sức Khỏe - Toàn Cầu

Copy
# Tạo kiểm tra sức khỏe - toàn cầu
gcloud compute health-checks create http global-http-health-check --port 80

Bước 6: Xem Xét Script Khởi Động

Copy
#!/bin/bash
sudo apt install -y telnet
sudo apt install -y nginx
sudo systemctl enable nginx
sudo chmod -R 755 /var/www/html
HOSTNAME=$(hostname)
sudo echo "<!DOCTYPE html> <html> <body style='background-color:rgb(250, 210, 210);'> <h1>Welcome to Latchu@DevOps - WebVM App1 </h1> <p><strong>VM Hostname:</strong> $HOSTNAME</p> <p><strong>VM IP Address:</strong> $(hostname -I)</p> <p><strong>Application Version:</strong> V1</p> <p>Google Cloud Platform - Demos</p> </body></html>" | sudo tee /var/www/html/index.html

Đảm bảo rằng tệp nginx-webserver.sh này có sẵn trong GCloud Shell

Bước 7: us-central1: Tạo Mẫu Phiên Bản và Nhóm Phiên Quản Lý

  • Ghi chú quan trọng:

i. Tải lên tệp nginx-webserver.sh vào Google Cloud shell nếu bạn đang chạy các lệnh gcloud trên cloud shell

ii. Đảm bảo tệp nginx-webserver.sh có mặt trong thư mục hiện tại mà bạn đang chạy lệnh gcloud này

  • Tạo Mẫu Phiên Bản
  • Tạo Nhóm Phiên Quản Lý

i. Tạo Nhóm Phiên Quản Lý (MIG)

ii. Tạo cổng được đặt tên cho MIG

Copy
# 1. us-central1: Tạo Mẫu Phiên Bản
gcloud compute instance-templates create it-lbdemo-us-central1 \
   --region=us-central1 \
   --network=vpc3-custom \
   --subnet=us-central1-subnet \
   --machine-type=e2-micro \
   --metadata-from-file=startup-script=nginx-webserver.sh

# 2. Tạo nhóm phiên quản lý và chọn mẫu phiên bản.
gcloud compute instance-groups managed create mig1-us-central1 \
    --template=it-lbdemo-us-central1 \
    --size=2 \
    --zones=us-central1-b,us-central1-c \
    --health-check=global-http-health-check

# 3. Thêm một cổng được đặt tên cho nhóm phiên bản
gcloud compute instance-groups set-named-ports mig1-us-central1 \
    --named-ports webserver80:80 \
    --region us-central1

Bước 8: us-east1: Tạo Mẫu Phiên Bản và Nhóm Phiên Quản Lý

  • Tạo Mẫu Phiên Bản
  • Tạo Nhóm Phiên Quản Lý

i. Tạo Nhóm Phiên Quản Lý (MIG)

ii. Tạo cổng được đặt tên cho MIG

Copy
# 1. us-east1: Tạo Mẫu Phiên Bản
gcloud compute instance-templates create it-lbdemo-us-east1 \
   --region=us-east1 \
   --network=vpc3-custom \
   --subnet=us-east1-subnet \
   --machine-type=e2-micro \
   --metadata-from-file=startup-script=nginx-webserver.sh 

# 2. us-east1: Tạo nhóm phiên quản lý và chọn mẫu phiên bản.
gcloud compute instance-groups managed create mig2-us-east1 \
    --template=it-lbdemo-us-east1 \
    --size=2 \
    --zones=us-east1-c,us-east1-d \
    --health-check=global-http-health-check

# 3. us-east1: Thêm một cổng được đặt tên cho nhóm phiên bản
gcloud compute instance-groups set-named-ports mig2-us-east1 \
    --named-ports webserver80:80 \
    --region us-east1

Bước 9: Xác minh các tài nguyên sau

  1. VPC
  2. Subnets
  3. Tường lửa
  4. Kiểm tra sức khỏe
  5. Mẫu phiên bản
  6. Nhóm phiên quản lý

Cân Bằng Tải Đám Mây - Cân Bằng Tải Ứng Dụng (HTTP/S)

Cân Bằng Tải Ứng Dụng (HTTP/S)

  • Cân bằng tải dựa trên Proxy lớp 7
  • Dữ liệu khách hàng được chấm dứt trên Cân Bằng Tải và một Kết Nối mới được tạo từ cân bằng tải đến các backend

Cung cấp

  • Lập định tuyến dựa trên nội dung và kiểm tra sức khỏe ứng dụng
  • Cân bằng tải bên ngoài & bên trong
Copy
Toàn cầu - hỗ trợ các backend ở nhiều khu vực
Khu vực - hỗ trợ các backend chỉ trong một khu vực

Khả năng truy cập

Copy
Bên ngoài: Có thể truy cập qua Internet
Nội bộ: Có thể truy cập đến các hệ thống trong VPC hoặc các hệ thống kết nối với VPC

Lý tưởng cho các ứng dụng web, API và microservices


Cân Bằng Tải Ứng Dụng Toàn Cầu HTTP

Thực hiện Cân Bằng Tải Ứng Dụng Toàn Cầu Google Cloud - HTTP

Bước 1: Giới thiệu

Yêu cầu tiên quyết-1: Tạo Mẫu Phiên Bản, Tạo Nhóm Phiên Quản Lý như trong giai đoạn đầu tiên.
Tạo Cân Bằng Tải Ứng Dụng Toàn Cầu - HTTP


Bước 2: Tạo Cân Bằng Tải HTTP Toàn Cầu

Cân Bằng Tải Ứng Dụng (HTTP/S)

  1. Đi tới Dịch vụ Mạng -> Cân Bằng Tải -> TẠO CÂN BẰNG TẢI
  2. Chọn Cân Bằng Tải Ứng Dụng (HTTP/S): BẮT ĐẦU CẤU HÌNH
  3. Đối diện Internet hay chỉ nội bộ: Từ Internet đến các VM hoặc dịch vụ không máy chủ của tôi
  4. Toàn cầu hay Khu vực: Cân Bằng Tải Ứng Dụng bên ngoài toàn cầu
  5. Nhấp vào TIẾP TỤC
  6. Tên Cân Bằng Tải: global-lb-external-http

Cấu Hình Frontend

  1. Nhấp vào THÊM ĐỊA CHỈ FRONTEND VÀ CỔNG
  2. Tên: frontend-http
  3. Mô tả: frontend-http
  4. Giao thức: HTTP
  5. Phiên bản IP: IPv4
  6. Địa chỉ IP: global-lb-ip1 TẠO ĐỊA CHỈ IP CÔNG KHAI MỚI
  7. Cổng: 80
  8. Nhấp vào XONG

Cấu Hình Backend

  • Nhấp vào TẠO DỊCH VỤ BACKEND
  • Tên: mybackend-svc1
  • Mô tả: mybackend-svc1
  • Loại backend: Nhóm Phiên Bản
  • Giao thức: HTTP
  • Cổng được đặt tên: webserver80 (TỰ ĐỘNG ĐIỀN KHI BACKEND ĐƯỢC CHỌN DƯỚI DẠNG MIG)
  • Thời gian chờ: 30
  • BACKENDS
Copy
Nhóm Phiên Bản: mig1-us-central1
Số cổng: 80
Tất cả đều để mặc định
Nhấp vào XONG
Nhóm Phiên Bản: mig1-us-east1
Số cổng: 80
Tất cả đều để mặc định
Nhấp vào XONG
  • Vô hiệu hóa Cloud CDN
  • Kiểm tra sức khỏe: http-health-check
  • Bảo mật:
Copy
Chính sách bảo mật backend Cloud Armor: KHÔNG
  • Nhấp vào TẠO

Quy Tắc Định Tuyến

  • Chế độ: Quy tắc đơn giản về máy chủ và đường dẫn
  • Tất cả để mặc định

Xem Xét và Hoàn Tất

  • Xem xét tất cả các cài đặt
  • Nhấp vào TẠO

Bước 3: Xác minh Cân Bằng Tải

  • Đi tới Dịch vụ Mạng -> Cân Bằng Tải -> global-lb-external-http
  • Xem xét các Tab
Copy
CÂN BẰNG TẢI
BACKENDS
FRONTENDS

Bước 4: Truy cập Ứng Dụng bằng IP LB trên trình duyệt

Ghi chú quan trọng: CHỜ 3 đến 5 phút trước khi Cân Bằng Tải hoạt động hoàn toàn.

Copy
# Truy cập Ứng Dụng
http://LB-IP

Bước 5: Kiểm tra chức năng đa khu vực (Gửi lưu lượng đến khu vực gần nhất với khách hàng)

Để mô phỏng người dùng ở một vị trí địa lý khác, bạn có thể kết nối với một trong các phiên bản máy ảo của bạn ở một khu vực khác, và sau đó chạy lệnh curl từ phiên bản đó để xem yêu cầu đi đến một phiên bản trong khu vực gần nhất.

Copy
# Thiết lập Dự Án
gcloud config set project PROJECT_ID
gcloud config set project gcpdemos

# Khu vực: us-central1
gcloud compute ssh --zone "us-central1-c" "mig1-us-central1-xq12" 
curl http://LB-IP
curl http://34.36.49.82/

# Khu vực: us-east1
gcloud compute ssh --zone "us-east1-d" "mig2-us-east1-693l" 
curl http://LB-IP
curl http://34.36.49.82/

Bước 6: Xóa Cân Bằng Tải

  • Xóa cân bằng tải được tạo như một phần của bản demo này.
  • Đừng xóa dịch vụ backend vì chúng ta cần sử dụng trong bản demo tiếp theo.

🌟 Cảm ơn bạn đã đọc! Nếu bài viết này mang lại giá trị, một lượt thích ❤️, theo dõi hoặc chia sẻ sẽ khuyến khích tôi tiếp tục tạo ra nhiều nội dung hơn.


— Latchu | Kỹ Sư DevOps & Đám Mây Cấp Cao

☁️ AWS | GCP | ☸️ Kubernetes | 🔐 Bảo Mật | ⚡ Tự Động Hóa
📌 Chia sẻ hướng dẫn thực hành, quy tắc tốt nhất & giải pháp đám mây thực tế

Nội dung bài viết

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào