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 về cách chuyển đổi một trình cân bằng tải mạng hiện có từ một phần phụ trợ nhóm mục tiêu sang một 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 một bộ cân bằng tải mạng bằng nhóm mục tiêu
  • Thực hiện xác thực nhóm mục tiêu
  • Tạo dịch vụ phụ trợ theo khu vực bằng cách sử dụng các nhóm phiên bản không được quản lý
  • Thực hiện di chuyển nhóm mục tiêu sang dịch vụ phụ trợ
  • Thực hiện xác thực dịch vụ phụ trợ

Bạn cần có

  • Có kinh nghiệm sử dụng trình cân bằng tải

2. Tổng quan về các dịch vụ phụ trợ theo khu vực để cân bằng tải mạng

Với tính năng 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 một khu vực của 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 trình cân bằng tải hoạt động, gần đây, chúng tôi đã thêm tính năng hỗ trợ cho các dịch vụ phụ trợ vào tính năng Cân bằng tải mạng. Điều này giúp khách hàng của chúng tôi 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ý.

Giờ đây, 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 đây là 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 dịch vụ phụ trợ được đính kèm và cung cấp khả năng kiểm soát chi tiết về cách trình cân bằng tải hoạt động.

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

Việc chọn một dịch vụ phụ trợ theo khu vực làm bộ cân bằng tải sẽ mang lại một số lợi ích 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 sẽ cung cấp:

  • Kiểm tra tình trạng có độ trung thực cao bằng tính năng kiểm tra tình trạng hợp nhất – Giờ đây, 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ủa tính năng cân bằng tải với các dịch vụ phụ trợ theo khu vực, giúp bạn không còn bị hạn chế bởi các chế độ 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ợ các 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 Cân bằng tải mạng.
  • Khả năng phục hồi tốt hơn nhờ nhóm dự phòng – Với nhóm dự phòng, bạn có thể chỉ định một Nhóm phiên bản 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 dự phòng khi trạng thái của các phiên bản trong nhóm đang hoạt động xuống dưới một ngưỡng nhất định. Để kiểm soát chặt chẽ hơn cơ chế dự phòng, bạn có thể sử dụng một tác nhân như keepalived hoặc pacemaker và có một chế độ kiểm tra tình trạng hoạt động hoặc không hoạt động dựa trên các thay đổi về trạng thái của thực thể hậu cảnh.
  • Khả năng mở rộng và tính sẵn sàng cao với Nhóm phiên bản được quản lý – Các dịch vụ phụ trợ theo khu vực hỗ trợ Nhóm phiên bản được quản lý dưới dạng các dịch vụ 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 mở rộng 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 ra, bạn có thể tận dụng tính năng Ngắt kết nối 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 hoạt động triển khai quy mô lớn.

Cấu trúc liên kết 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 về cách chuyển đổi một trình cân bằng tải mạng hiện có từ một phần phụ trợ nhóm mục tiêu sang một 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 phiên bản cũ (đối với TCP, SSL, HTTP, HTTPS và HTTP/2), nhóm phiên bản được quản lý, ngắt kết nốichính sách chuyển đổi 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 thay thế

b2ac8a09e53e27f8.png

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

Việc 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 dịch vụ phụ trợ theo khu vực

Ví dụ này giả định rằng bạn có một bộ cân bằng tải mạng dựa trên nhóm mục tiêu truyền thống với 2 phiên bản trong vùng us-central-1a và 2 phiên bản trong 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 phiên bản nhóm mục tiêu thành các nhóm phiên bản. Các dịch vụ phụ trợ chỉ hoạt động với các nhóm phiên bản đượ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 phiên bản có thể được đặt vào một nhóm mục tiêu duy nhất, nhưng nhóm phiên bản có kích thước tối đa. Nếu nhóm mục tiêu có nhiều thực thể hơn số lượng tối đa này, bạn cần chia các phần phụ trợ của nhóm đó thành nhiều nhóm thực thể. Nếu chế độ triển khai hiện tại của bạn có một nhóm đích dự phòng, hãy tạo một nhóm phiên bản riêng cho các phiên bản đó. Nhóm phiên bản này sẽ được định cấu hình làm nhóm dự phòng.
  2. Tạo một dịch vụ phụ trợ theo khu vực. Nếu quá trình triển khai của bạn có một nhóm mục tiêu dự phòng, bạn sẽ cần chỉ định tỷ lệ 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 đã được định cấu hình trước đó cho việc triển khai nhóm mục tiêu.
  3. Thêm nhóm phiên bản (đã tạo trước đó) vào dịch vụ phụ trợ. Nếu quá trình triển khai của bạn có một nhóm mục tiêu dự phòng, hãy đánh dấu nhóm phiên bản 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 một quy tắc chuyển tiếp trỏ đến dịch vụ phụ trợ mới. Bạn có 2 lựa chọn sau đây:
  • (Nên dùng) Cập nhật quy tắc chuyển tiếp hiện có để chuyển đến dịch vụ phụ trợ. HOẶC
  • Tạo một quy tắc chuyển tiếp mới trỏ đến dịch vụ phụ trợ. Việc này yêu cầu bạ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 trình 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 tốc độ của riêng bạn

  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 nhớ mã dự án, một tên duy nhất trên tất cả các dự án trên Google Cloud (tên ở trên đã được sử dụng và sẽ không hoạt động đối với bạn, xin lỗi!). Sau này trong lớp học lập trình này, chúng ta sẽ gọi nó là PROJECT_ID.

  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 thực hiện lớp học lập trình này sẽ không tốn 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" để biết cách tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi 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í trị giá 300 USD.

Khởi động Cloud Shell

Mặc dù 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 trên Cloud.

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 này chỉ mất vài phút để cung cấp và kết nối với môi trường. Khi quá trình này kết thúc, bạn sẽ thấy như sau:

f6ef2b5f13479f3a.png

Máy ảo này được trang bị tất cả các công cụ phát triển mà bạn cần. Nó cung cấp một thư mục chính có dung lượng 5 GB và chạy trên Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn chỉ cần một trình duyệt là có thể thực hiện mọi thao tác trong phòng thí nghiệm này.

Đăng nhập vào Cloud Shell 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

Từ Cloud Shell

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

Tạo mạng con

Từ 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 cho tường lửa

Từ 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 các phiên bản 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 phiên bản 1 từ 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 từ 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 từ 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 từ 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 một quy tắc tường lửa để cho phép lưu lượng truy cập bên ngoài đến các phiên bản máy ảo này

Từ 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 địa chỉ IP ngoài tĩnh cho trình cân bằng tải

Từ 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ũ

Từ 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 một 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 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 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 Bộ cân bằng tải → Giao diện người dùng (www-rule)

Sử dụng lệnh curl trong cửa sổ dòng lệnh của máy trạm để truy cập vào địa chỉ IP ngoài và quan sát quá trình cân bằng tải trên 4 phiên bản đích. Đóng thiết bị đầu cuối 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 các quy trình kiểm tra sức khoẻ 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 phiên bản từ các phiên bản 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 phiên bản từ các phiên bản 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 phiên bản

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 thực hiện các bước sau:

Chọn Bộ cân bằng tải → 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 giao diện người dùng "www-rule" nữa (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 bộ cân bằng tải "my-backend-service"

Chọn Bộ cân bằng tải → Giao diện người dùng

Lưu ý tên quy tắc "www-rule" địa chỉ IP đượ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 IP ngoài và quan sát quá trình cân bằng tải trên dịch vụ phụ trợ mới được liên kết. Đóng thiết bị đầu cuối 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 các dịch vụ phụ trợ theo khu vực
  • Tạo một bộ cân bằng tải mạng bằng nhóm mục tiêu
  • Thực hiện xác thực nhóm mục tiêu
  • Tạo dịch vụ phụ trợ theo khu vực bằng cách sử dụng các nhóm phiên bản không được quản lý
  • Thực hiện di chuyển nhóm mục tiêu sang dịch vụ phụ trợ
  • Thực hiện xác thực dịch vụ phụ trợ