Chuyển đổi trình cân bằng tải mạng từ nhóm mục tiêu sang các dịch vụ phụ trợ theo khu vực

1. Giới thiệu

Hướng dẫn này cung cấp hướng dẫn chuyển đổi bộ cân bằng tải mạng hiện có từ phần phụ trợ của nhóm mục tiêu sang dịch vụ phụ trợ theo khu vực.

Kiến thức bạn sẽ học được

  • Tìm hiểu lợi ích của các dịch vụ phụ trợ theo khu vực
  • Tạo trình cân bằng tải mạng bằng nhóm mục tiêu
  • Xác thực nhóm mục tiêu
  • Tạo một dịch vụ phụ trợ theo khu vực bằng các nhóm thực thể không được quản lý
  • Di chuyển nhóm mục tiêu sang dịch vụ phụ trợ
  • Xác thực các dịch vụ phụ trợ

Bạn cần có

  • Có kinh nghiệm về trình cân bằng tải

2. Tổng quan về dịch vụ phụ trợ theo khu vực cho tính năng Cân bằng tải mạng

Với giải pháp Cân bằng tải mạng, khách hàng của Google Cloud có một công cụ mạnh mẽ để phân phối lưu lượng truy cập bên ngoài giữa các máy ảo trong khu vực Google Cloud. Để giúp khách hàng dễ dàng quản lý lưu lượng truy cập đến và kiểm soát cách hoạt động của bộ cân bằng tải, gần đây, chúng tôi đã hỗ trợ thêm các dịch vụ phụ trợ cho tính năng Cân bằng tải mạng. Điều này giúp khách hàng cải thiện quy mô, tốc độ, hiệu suất và khả năng phục hồi trong quá trình triển khai, tất cả đều theo cách dễ quản lý.

Hiện tại, chúng tôi hỗ trợ các dịch vụ phụ trợ bằng tính năng Cân bằng tải mạng – một điểm cải tiến đáng kể so với phương pháp trước đó là các nhóm mục tiêu. Dịch vụ phụ trợ xác định cách trình cân bằng tải phân phối lưu lượng truy cập đến các phần phụ trợ đính kèm và cung cấp khả năng kiểm soát chi tiết về cách hoạt động của trình cân bằng tải.

3. Lợi ích của dịch vụ phụ trợ theo khu vực

Việc chọn dịch vụ phụ trợ theo khu vực làm trình cân bằng tải sẽ mang lại một số lợi thế cho môi trường của bạn.

267db35a58145be.png.

Ngay từ đầu, các dịch vụ phụ trợ theo khu vực cung cấp:

  • Kiểm tra tình trạng có độ chân thực cao bằng tính năng kiểm tra tình trạng hợp nhất – Giờ đây, với các dịch vụ phụ trợ theo khu vực, bạn có thể tận dụng tối đa các tính năng kiểm tra tình trạng cân bằng tải, không còn bị ràng buộc bởi các quy tắc kiểm tra tình trạng HTTP cũ. Vì lý do tuân thủ, việc kiểm tra tình trạng TCP có hỗ trợ chuỗi yêu cầu và phản hồi tuỳ chỉnh hoặc HTTPS là một yêu cầu phổ biến đối với khách hàng sử dụng tính năng Cân bằng tải mạng.
  • Khả năng phục hồi tốt hơn với nhóm dự phòng – Với nhóm dự phòng, bạn có thể chỉ định một Nhóm thực thể làm nhóm chính và một nhóm khác làm nhóm phụ, đồng thời chuyển lưu lượng truy cập sang nhóm dự phòng khi trạng thái của các thực thể trong nhóm đang hoạt động giảm xuống dưới một ngưỡng nhất định. Để có thêm quyền kiểm soát đối với cơ chế dự phòng, bạn có thể sử dụng một tác nhân như keepalived hoặc pacemaker và hiển thị kết quả kiểm tra tình trạng ổn định hoặc không ổn định dựa trên các thay đổi về trạng thái của thực thể phụ trợ.
  • Khả năng mở rộng và khả năng hoạt động cao nhờ Nhóm thực thể được quản lý – Các dịch vụ phụ trợ theo khu vực hỗ trợ Nhóm thực thể được quản lý làm phần phụ trợ. Giờ đây, bạn có thể chỉ định một mẫu cho các phiên bản máy ảo phụ trợ và tận dụng tính năng tự động điều chỉnh theo quy mô dựa trên mức sử dụng CPU hoặc các chỉ số giám sát khác.

Ngoài những tính năng trên, bạn có thể tận dụng tính năng Kết nối hết pin cho giao thức hướng kết nối (TCP) và thời gian lập trình nhanh hơn cho các bản triển khai lớn.

Cấu trúc mạng của lớp học lập trình

Hướng dẫn này cung cấp hướng dẫn chuyển đổi bộ cân bằng tải mạng hiện có từ phần phụ trợ của nhóm mục tiêu sang dịch vụ phụ trợ theo khu vực.

Việc chuyển sang dịch vụ phụ trợ theo khu vực cho phép bạn tận dụng các tính năng như kiểm tra tình trạng không phải kiểu cũ (dành cho TCP, SSL, HTTP, HTTPS và HTTP/2), nhóm thực thể được quản lý, dịch vụ rút cạn kết nốichính sách dự phòng.

Hướng dẫn này sẽ hướng dẫn bạn chuyển đổi bộ cân bằng tải mạng dựa trên nhóm mục tiêu mẫu sau đây để sử dụng dịch vụ phụ trợ theo khu vực

b2ac8a09e53e27f8.png

Trước đây: Cân bằng tải mạng bằng nhóm mục tiêu

Kết quả triển khai trình cân bằng tải mạng dựa trên dịch vụ phụ trợ sẽ có dạng như sau.

f628fdad64c83af3.png

Sau: Cân bằng tải mạng bằng một dịch vụ phụ trợ theo khu vực

Ví dụ này giả định bạn có một trình cân bằng tải mạng dựa trên nhóm mục tiêu truyền thống với hai phiên bản ở vùng us-central-1a và 2 phiên bản ở vùng us-central-1c.

Sau đây là các bước cấp cao cần thiết cho quá trình chuyển đổi như vậy:

  1. Nhóm các thực thể nhóm mục tiêu thành các nhóm thực thể. Các dịch vụ phụ trợ chỉ hoạt động với các nhóm thực thể được quản lý hoặc không được quản lý. Xin lưu ý rằng mặc dù không có giới hạn về số lượng thực thể có thể được đặt vào một nhóm mục tiêu, nhưng các nhóm thực thể có kích thước tối đa. Nếu nhóm mục tiêu có nhiều hơn số lượng thực thể tối đa này, bạn sẽ cần chia các phần phụ trợ của mình thành nhiều nhóm thực thể. Nếu bản triển khai hiện tại của bạn có một nhóm mục tiêu sao lưu, hãy tạo một nhóm thực thể riêng cho các thực thể đó. Nhóm thực thể này sẽ được định cấu hình làm nhóm chuyển đổi dự phòng.
  2. Tạo dịch vụ phụ trợ theo khu vực. Nếu quá trình triển khai của bạn bao gồm một nhóm mục tiêu dự phòng, bạn sẽ cần chỉ định tỷ lệ chuyển đổi dự phòng trong khi tạo dịch vụ phụ trợ. Giá trị này phải khớp với tỷ lệ dự phòng đã định cấu hình trước đó cho việc triển khai nhóm mục tiêu.
  3. Thêm các nhóm thực thể (đã tạo trước đó) vào dịch vụ phụ trợ. Nếu quá trình triển khai của bạn bao gồm một nhóm mục tiêu sao lưu, hãy đánh dấu nhóm thực thể dự phòng tương ứng bằng cờ –failover khi thêm nhóm đó vào dịch vụ phụ trợ.
  4. Định cấu hình quy tắc chuyển tiếp trỏ đến dịch vụ phụ trợ mới. Bạn có 2 lựa chọn ở đây:
  • (Nên làm) Cập nhật quy tắc chuyển tiếp hiện có để trỏ đến dịch vụ phụ trợ. HOẶC
  • Tạo một dịch vụ chuyển tiếp mới trỏ đến dịch vụ phụ trợ. Để làm việc này, bạn cần tạo một địa chỉ IP mới cho giao diện người dùng của bộ cân bằng tải. Sau đó, hãy sửa đổi chế độ cài đặt DNS để chuyển đổi liền mạch từ địa chỉ IP của bộ cân bằng tải dựa trên nhóm mục tiêu cũ sang địa chỉ IP mới.

Thiết lập môi trường theo tiến độ riêng

  1. Đăng nhập vào Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Hãy ghi nhớ mã dự án, một tên duy nhất trên tất cả các dự án Google Cloud (tên ở trên đã được sử dụng và sẽ không hoạt động đối với bạn, rất xin lỗi!). Mã này sẽ được gọi là PROJECT_ID ở phần sau của lớp học lập trình này.

  1. Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên của Google Cloud.

Việc tham gia lớp học lập trình này sẽ không tốn kém nhiều chi phí, nếu có. Hãy nhớ làm theo mọi hướng dẫn trong phần "Dọn dẹp". Phần này sẽ hướng dẫn bạn cách tắt các tài nguyên để bạn không phải trả phí sau khi hoàn tất hướng dẫn này. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.

Khởi động Cloud Shell

Mặc dù bạn có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trong Đám mây.

Trên Bảng điều khiển GCP, hãy nhấp vào biểu tượng Cloud Shell trên thanh công cụ trên cùng bên phải:

bce75f34b2c53987.png

Quá trình cấp phép và kết nối với môi trường chỉ mất vài phút. Sau khi hoàn tất, bạn sẽ thấy như sau:

f6ef2b5f13479f3a.png

Máy ảo này được tải sẵn tất cả các công cụ phát triển mà bạn cần. Phiên bản này cung cấp thư mục gốc có dung lượng ổn định 5 GB và chạy trên Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Bạn có thể hoàn thành mọi công việc trong lớp học lập trình này chỉ bằng một trình duyệt.

Đăng nhập vào cloudshell và đặt projectid

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]

Perform setting your projectID:
projectid=YOUR-PROJECT-ID

echo $projectid

4. Tạo mạng VPC

Mạng VPC

Của Cloud Shell

gcloud compute networks create network-lb --subnet-mode custom

Tạo mạng con

Trong Cloud Shell

gcloud compute networks subnets create network-lb-subnet \
        --network network-lb --range 10.0.0.0/24 --region us-central1

Tạo quy tắc về tường lửa

Trong Cloud Shell

gcloud compute --project=$projectid firewall-rules create www-firewall-network-lb --direction=INGRESS --priority=1000 --network=network-lb --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=network-lb-tag

Tạo thực thể không được quản lý

Tạo 2 phiên bản cho mỗi vùng, us-central1-a và us-central1-c

Tạo bản sao 1 của Cloud Shell

gcloud compute instances create www1 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-a \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart
echo '<!doctype html><html><body><h1>www1</h1></body></html>' | tee /var/www/html/index.html"

Tạo phiên bản 2 trong Cloud Shell

gcloud compute instances create www2 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-a \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart 
echo '<!doctype html><html><body><h1>www2</h1></body></html>' | tee /var/www/html/index.html"

Tạo phiên bản 3 trên Cloud Shell

gcloud compute instances create www3 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-c \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update 
sudo apt-get install apache2 -y 
sudo service apache2 restart 
echo '<!doctype html><html><body><h1>www3</h1></body></html>' | tee /var/www/html/index.html"

Tạo phiên bản 4 trong Cloud Shell

gcloud compute instances create www4 \
--subnet network-lb-subnet \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-c \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update 
sudo apt-get install apache2 -y 
sudo service apache2 restart
echo '<!doctype html><html><body><h1>www4</h1></body></html>' | tee /var/www/html/index.html"

Tạo quy tắc tường lửa để cho phép lưu lượng truy cập bên ngoài đến các thực thể máy ảo này

Trong Cloud Shell

gcloud compute --project=$projectid firewall-rules create www-firewall-network-lb --direction=INGRESS --priority=1000 --network=network-lb --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=network-lb-tag

Tạo một địa chỉ IP tĩnh bên ngoài cho trình cân bằng tải

Của Cloud Shell

gcloud compute addresses create network-lb-ip-1 \
    --region us-central1

Thêm tài nguyên kiểm tra tình trạng HTTP cũ

Của Cloud Shell

gcloud compute http-health-checks create basic-check

5. Tạo quy tắc chuyển tiếp và nhóm mục tiêu

Tạo nhóm mục tiêu

gcloud compute target-pools create www-pool \
            --region us-central1 --http-health-check basic-check

Thêm các phiên bản của bạn vào nhóm mục tiêu us-central1-a

gcloud compute target-pools add-instances www-pool \
--instances www1,www2 \
--instances-zone us-central1-a

Thêm các phiên bản của bạn vào nhóm mục tiêu us-central1-c

gcloud compute target-pools add-instances www-pool \
--instances www3,www4 \
--instances-zone us-central1-c

Thêm quy tắc chuyển tiếp

gcloud compute forwarding-rules create www-rule \
--region us-central1 \
--ports 80 \
--address network-lb-ip-1 \
--target-pool www-pool

Xác thực chức năng của nhóm mục tiêu

Xác định địa chỉ IP giao diện người dùng bằng cách chọn Trình cân bằng tải → Giao diện người dùng (www-rule)

Sử dụng lệnh curl từ thiết bị đầu cuối của máy trạm để truy cập vào địa chỉ IP bên ngoài và quan sát hoạt động cân bằng tải trên 4 phiên bản mục tiêu. Đóng cửa sổ dòng lệnh sau khi xác thực.

while true; do curl -m1 IP_ADDRESS; done

6. Chuyển trình cân bằng tải mạng từ nhóm mục tiêu sang dịch vụ phụ trợ

Tạo quy trình kiểm tra trạng thái thống nhất cho dịch vụ phụ trợ

gcloud compute health-checks create tcp my-tcp-health-check --port 80 --region us-central1

Tạo nhóm thực thể từ các thực thể hiện có trong nhóm mục tiêu

gcloud compute --project=$projectid instance-groups unmanaged create www-instance-group-central1a --zone=us-central1-a

gcloud compute --project=$projectid instance-groups unmanaged add-instances www-instance-group-central1a --zone=us-central1-a --instances=www1,www2

Tạo nhóm thực thể từ các thực thể hiện có trong nhóm mục tiêu

gcloud compute --project=$projectid instance-groups unmanaged create www-instance-group-central1c --zone=us-central1-c

gcloud compute --project=$projectid instance-groups unmanaged add-instances www-instance-group-central1c --zone=us-central1-c --instances=www3,www4

Tạo một dịch vụ phụ trợ và liên kết dịch vụ đó với các quy trình kiểm tra tình trạng mới tạo

gcloud compute backend-services create my-backend-service --region us-central1 --health-checks my-tcp-health-check --health-checks-region us-central1 --load-balancing-scheme external

Định cấu hình dịch vụ phụ trợ và thêm các nhóm thực thể

gcloud compute backend-services add-backend my-backend-service --instance-group www-instance-group-central1a --instance-group-zone us-central1-a --region us-central1

gcloud compute backend-services add-backend my-backend-service --instance-group www-instance-group-central1c --instance-group-zone us-central1-c --region us-central1

Cập nhật quy tắc chuyển tiếp hiện có để hỗ trợ các dịch vụ phụ trợ

Ghi lại tên quy tắc chuyển tiếp "www-rule" và Địa chỉ IP được liên kết bằng cách làm như sau:

Chọn Load Balancer (Trình cân bằng tải) → Frontends (Giao diện người dùng)

Ngoài ra, hãy lưu ý 4 nhóm mục tiêu

Chọn Trình cân bằng tải → Chọn "www-pool"

Định tuyến lưu lượng truy cập đến các dịch vụ phụ trợ bằng cách cập nhật quy tắc chuyển tiếp hiện có

gcloud compute forwarding-rules set-target www-rule --region=us-central1 --backend-service my-backend-service --region us-central1

Xác minh rằng bộ cân bằng tải "www-pool" không còn được định cấu hình với "www-rule" ở phía trước (xem ảnh chụp màn hình bên dưới)

Chọn Trình cân bằng tải → www-pool

9a393b3ca4e0942c.png

Xác thực quy tắc chuyển tiếp giao diện người dùng hiện được liên kết với "my-backend-service" của trình cân bằng tải

Chọn Trình cân bằng tải → Giao diện người dùng

Lưu ý địa chỉ IP của tên quy tắc "www-rule" được giữ lại và trình cân bằng tải "my-backend-service" hiện đang được sử dụng

Sử dụng lệnh curl từ thiết bị đầu cuối của máy trạm để truy cập vào địa chỉ IP bên ngoài và quan sát tính năng cân bằng tải trên dịch vụ phụ trợ mới được liên kết. Đóng cửa sổ dòng lệnh sau khi xác thực.

while true; do curl -m1 IP_ADDRESS; done

7. Các bước dọn dẹp

gcloud compute forwarding-rules delete www-rule --region=us-central1 --quiet
 
gcloud compute backend-services delete my-backend-service --region us-central1 --quiet
 
gcloud compute target-pools delete www-pool --region us-central1 --quiet
 
gcloud compute addresses delete network-lb-ip-1 --region us-central1 --quiet

gcloud compute firewall-rules delete www-firewall-network-lb --quiet
 
gcloud compute instances delete www4 --zone us-central1-c --quiet
 
gcloud compute instances delete www3 --zone us-central1-c --quiet
 
gcloud compute instances delete www2 --zone us-central1-a --quiet

gcloud compute instances delete www1 --zone us-central1-a --quiet
 
gcloud compute networks subnets delete network-lb-subnet --region us-central1 --quiet

gcloud compute networks delete network-lb --quiet

gcloud compute instance-groups unmanaged delete www-instance-group-central1a --zone us-central1-a --quiet

gcloud compute instance-groups unmanaged delete www-instance-group-central1c --zone us-central1-c --quiet

8. Xin chúc mừng!

Chúc mừng bạn đã hoàn thành lớp học lập trình này.

Nội dung đã đề cập

  • Tìm hiểu lợi ích của dịch vụ phụ trợ theo khu vực
  • Tạo trình cân bằng tải mạng bằng nhóm mục tiêu
  • Xác thực nhóm mục tiêu
  • Tạo một dịch vụ phụ trợ theo khu vực bằng các nhóm thực thể không được quản lý
  • Di chuyển nhóm mục tiêu sang dịch vụ phụ trợ
  • Xác thực dịch vụ phụ trợ