Chuyển đổi dự phòng nhiều vùng bằng Chính sách định tuyến Cloud DNS và Kiểm tra tình trạng cho Trình cân bằng tải TCP/UDP nội bộ

1. Giới thiệu

Lần cập nhật gần đây nhất: ngày 22 tháng 9 năm 2022

Chính sách định tuyến DNS là gì

Chính sách định tuyến Cloud DNS cho phép người dùng định cấu hình tính năng điều hướng lưu lượng truy cập dựa trên DNS, tuỳ thuộc vào các tiêu chí cụ thể như trọng số, vị trí địa lý hoặc các chế độ kiểm tra tình trạng.

Cloud DNS hỗ trợ các chính sách định tuyến sau:

  • Chính sách định tuyến vòng tròn có tần suất
  • Chính sách định tuyến theo vị trí địa lý
  • Chính sách định tuyến có khoanh vùng địa lý
  • Chính sách định tuyến dự phòng

Trong phòng thí nghiệm này, bạn sẽ định cấu hình và kiểm thử chính sách định tuyến dự phòng.

Chính sách định tuyến dự phòng

Cloud DNS hỗ trợ kiểm tra tình trạng hoạt động cho Trình cân bằng tải TCP/UDP nội bộ có bật quyền truy cập toàn cầu. Với chính sách định tuyến dự phòng, bạn có thể định cấu hình IP chính và IP dự phòng cho một bản ghi tài nguyên. Trong hoạt động bình thường, Cloud DNS sẽ phản hồi các truy vấn bằng địa chỉ IP được cung cấp trong nhóm chính. Khi tất cả địa chỉ IP trong nhóm chính đều không hoạt động (trạng thái sức khoẻ thay đổi thành không hoạt động), Cloud DNS sẽ bắt đầu phân phát các địa chỉ IP trong nhóm dự phòng.

Kiểm tra sức khoẻ

Chính sách định tuyến DNS sẽ phụ thuộc vào các chế độ kiểm tra tình trạng hợp nhất(UHC) của Trình cân bằng tải nội bộ gốc. Trình cân bằng tải nội bộ được coi là hoạt động bình thường nếu có từ 20% trở lên số máy chủ phụ trợ hoạt động bình thường. Các chế độ kiểm tra tình trạng cho trình cân bằng tải TCP/UDP nội bộ và HTTP(S) nội bộ cung cấp thông tin khác nhau. Đối với trình cân bằng tải HTTP(S) nội bộ, UHC cung cấp trạng thái sức khoẻ của tất cả các proxy Envoy, nhưng đối với trình cân bằng tải TCP/UDP nội bộ, Cloud DNS sẽ nhận được tín hiệu trực tiếp về tình trạng sức khoẻ từ từng phiên bản phụ trợ. Bạn có thể xem thông tin chi tiết về các quy trình kiểm tra tình trạng sức khoẻ tại đây .

Sản phẩm bạn sẽ tạo ra

Trong Lớp học lập trình này, bạn sẽ xây dựng một trang web chạy ở 2 khu vực và liên kết một chính sách định tuyến DNS dự phòng với trang web đó. Chế độ thiết lập sẽ có:

Tài nguyên đang hoạt động –

  • Trình cân bằng tải nội bộ L4 ở REGION_1
  • Một VM chạy máy chủ web Apache ở REGION_1

Tài nguyên dự phòng –

  • Trình cân bằng tải nội bộ L4 ở REGION_2
  • Một máy ảo chạy máy chủ web Apache ở REGION_2

Thiết lập như minh hoạ bên dưới –

d0a91d3d3698f544.png

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

  • Cách tạo chính sách định tuyến dự phòng
  • Kích hoạt chuyển đổi dự phòng DNS
  • Cách chuyển dần lưu lượng truy cập sang nhóm dự phòng

Bạn cần có

  • Kiến thức cơ bản về DNS
  • Kiến thức cơ bản về Google Compute Engine
  • Kiến thức cơ bản về Trình cân bằng tải nội bộ L4

2. Thiết lập và yêu cầu

  1. Đăng nhập vào Google 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.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự mà các API của Google không sử dụng. Bạn có thể cập nhật thông tin này bất cứ lúc nào.
  • Mã dự án phải là duy nhất trên tất cả các dự án trên Google Cloud và không thể thay đổi (bạn không thể thay đổi sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là PROJECT_ID). Nếu không thích mã nhận dạng được tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Hoặc bạn có thể thử tên người dùng của riêng mình để xem tên đó có dùng được hay không. Bạn không thể thay đổi thông tin này sau bước này và thông tin này sẽ giữ nguyên trong suốt thời gian diễn ra dự án.
  • Để bạn biết, có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả 3 giá trị này trong tài liệu.
  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/API trên đám mây. 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ó. Để tắt các tài nguyên nhằm tránh phát sinh phí thanh toán ngoài hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá toàn bộ dự án. 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 Google Cloud, 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:

55efc1aaa7a4d3ad.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:

7ffe5cbb04455448.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 có thể thực hiện mọi thao tác trong lớp học lập trình này trong trình duyệt. Bạn không cần cài đặt bất cứ thứ gì.

3. Phiên bản Google Cloud SDK

Tại thời điểm viết bài này, 401.0.0 là phiên bản Google Cloud SDK mới nhất. Tất cả các lệnh trong lớp học này đều được kiểm thử bằng phiên bản mới nhất của Google Cloud SDK. Trước khi tiếp tục, vui lòng đảm bảo rằng Cloud Shell đang sử dụng phiên bản SDK mới nhất.

Kiểm tra phiên bản SDK

Dùng lệnh gcloud version để kiểm tra phiên bản SDK. Chạy các lệnh sau trong Cloud Shell

Lệnh

gcloud version | grep "Google Cloud SDK"

Ví dụ về kết quả đầu ra

Google Cloud SDK 401.0.0

Các bước tiếp theo

  1. Nếu phiên bản SDK là 401.0.0 trở lên, hãy chuyển sang phần tiếp theo.
  2. Nếu phiên bản SDK thấp hơn 401.0.0, hãy chạy lệnh được liệt kê bên dưới để cập nhật SDK.

Lệnh không bắt buộc

sudo apt-get update && sudo apt-get install google-cloud-sdk

4. Trước khi bắt đầu

Trước khi bạn bắt đầu triển khai cấu trúc mà chúng tôi đã giải thích ở trên, hãy đảm bảo rằng Cloud Shell được định cấu hình đúng cách và tất cả các API cần thiết đều được bật.

Thiết lập mã dự án

Trong Cloud Shell, hãy đảm bảo rằng bạn đã thiết lập mã dự án. Nếu dấu nhắc Cloud Shell của bạn trông giống như đầu ra bên dưới và bạn không có ý định thay đổi mã dự án, thì bạn có thể chuyển sang bước tiếp theo (Đặt biến môi trường).

USER@cloudshell:~ (PROJECT_ID)$

Nếu bạn vẫn muốn thay đổi mã dự án, hãy sử dụng lệnh bên dưới. Lời nhắc Cloud Shell sẽ thay đổi từ (PROJECT_ID) thành (YOUR-PROJECT-ID)

Lệnh không bắt buộc

gcloud config set project [YOUR-PROJECT-ID]

Ví dụ về kết quả đầu ra

Updated property [core/project].
USER@cloudshell:~ (YOUR-PROJECT-ID)$

Đặt các biến môi trường

Đặt các biến môi trường

Chúng ta sẽ dùng lệnh export để thiết lập các biến môi trường. Chạy các lệnh sau trong Cloud Shell

Lệnh

export REGION_1=us-west1
export REGION_1_ZONE=us-west1-a
export REGION_2=us-east4
export REGION_2_ZONE=us-east4-a

Xác minh

Giờ đây, khi các biến môi trường đã được thiết lập, hãy xác minh bằng lệnh echo. Đầu ra cho mỗi lệnh phải là giá trị mà chúng ta đã định cấu hình ở trên bằng lệnh export. Chạy các lệnh sau trong Cloud Shell

Lệnh

echo $REGION_1
echo $REGION_1_ZONE
echo $REGION_2
echo $REGION_2_ZONE

Bật tất cả các dịch vụ cần thiết

Sử dụng lệnh gcloud services enable để bật Compute API và DNS API. Chạy các lệnh sau trong Cloud Shell

Bật Compute API

Lệnh

gcloud services enable compute.googleapis.com

Bật DNS API

Lệnh

gcloud services enable dns.googleapis.com

Xác minh

Bây giờ, các dịch vụ đã được bật, hãy xác minh bằng lệnh gcloud services list để liệt kê tất cả các API đã bật.

Lệnh

gcloud services list | grep -E 'compute|dns'

Ví dụ về kết quả đầu ra

NAME: compute.googleapis.com
NAME: dns.googleapis.com

5. Tạo mạng VPC, mạng con và quy tắc tường lửa

Trong phần này, chúng ta sẽ tạo mạng VPC, 2 mạng con (mỗi mạng con ở một khu vực) và các quy tắc tường lửa bắt buộc.

Tạo mạng VPC

Dùng lệnh gcloud compute networks create để tạo mạng VPC. Chúng ta sẽ đặt chế độ mạng con là tuỳ chỉnh vì chúng ta sẽ tạo mạng con của riêng mình ở bước tiếp theo. Chạy các lệnh sau trong Cloud Shell.

Lệnh

gcloud compute networks create my-vpc --subnet-mode custom

Tạo mạng con

Sử dụng lệnh gcloud compute networks subnets create để tạo 2 mạng con, một mạng ở REGION_1 và một mạng ở REGION_2. Chạy các lệnh sau trong Cloud Shell

Mạng con REGION_1

Lệnh

gcloud compute networks subnets create ${REGION_1}-subnet \
--network my-vpc \
--range 10.1.0.0/24 \
--region $REGION_1

Mạng con REGION_2

Lệnh

gcloud compute networks subnets create ${REGION_2}-subnet \
--network my-vpc \
--range 10.2.0.0/24 \
--region $REGION_2

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

Bạn cần cho phép lưu lượng truy cập trên cổng 80 từ các mạng con VPC và từ dải IP kiểm tra tình trạng của bộ cân bằng tải.

Ngoài ra, bạn cũng cần tạo quy tắc tường lửa để cho phép lưu lượng truy cập SSH trên các VM của máy khách.

Dùng lệnh gcloud compute firewall-rules create để tạo quy tắc tường lửa. Chạy các lệnh sau trong Cloud Shell

Cho phép lưu lượng truy cập trên cổng 80

Lệnh

gcloud compute firewall-rules create allow-http-lb-hc \
--allow tcp:80 --network my-vpc \
--source-ranges 10.1.0.0/24,10.2.0.0/24,35.191.0.0/16,130.211.0.0/22 \
--target-tags=allow-http

Cho phép lưu lượng truy cập SSH trên máy ảo của máy khách

Lệnh

gcloud compute firewall-rules create allow-ssh \
--allow tcp:22 --network my-vpc \
--source-ranges 0.0.0.0/0 \
--target-tags=allow-ssh

6. Tạo Cloud NAT

Bạn cần có các cổng Cloud NAT ở cả hai khu vực để các VM riêng tư có thể tải xuống và cài đặt các gói từ Internet.

  • Các VM máy chủ web của chúng tôi sẽ cần tải xuống và cài đặt máy chủ web Apache.
  • Máy ảo khách sẽ cần tải xuống và cài đặt gói dnsutils mà chúng ta sẽ dùng cho hoạt động kiểm thử.

Mỗi cổng Cloud NAT được liên kết với một mạng VPC, khu vực và Cloud Router duy nhất. Vì vậy, trước khi tạo cổng NAT, chúng ta cần tạo Bộ định tuyến đám mây ở mỗi khu vực.

Tạo Cloud Router

Sử dụng lệnh gcloud compute routers create để tạo Bộ định tuyến đám mây ở các khu vực us-west1 và us-east4. Chạy các lệnh sau trong Cloud Shell.

Region_1 Cloud Router

Lệnh

gcloud compute routers create "${REGION_1}-cloudrouter" \
--region $REGION_1 --network=my-vpc --asn=65501

Cloud Router Region_2

Lệnh

gcloud compute routers create "${REGION_2}-cloudrouter" \
--region $REGION_2 --network=my-vpc --asn=65501

Tạo Cổng NAT

Sử dụng lệnh gcloud compute routers nat create để tạo các cổng NAT ở khu vực us-west1 và us-east4. Chạy các lệnh sau trong Cloud Shell.

Region_1 NAT Gateway

Lệnh

gcloud compute routers nats create "${REGION_1}-nat-gw" \
--router="${REGION_1}-cloudrouter" \
--router-region=$REGION_1 \
--nat-all-subnet-ip-ranges --auto-allocate-nat-external-ips

Region_2 NAT Gateway

Lệnh

gcloud compute routers nats create "${REGION_2}-nat-gw" \
--router="${REGION_2}-cloudrouter" \
--router-region=$REGION_2 \
--nat-all-subnet-ip-ranges --auto-allocate-nat-external-ips

7. Tạo VM Compute Engine

Trong phần này, bạn sẽ tạo các máy chủ web, nhóm phiên bản không được quản lý cho máy chủ web và VM ứng dụng.

Tạo máy ảo máy chủ web

Dùng lệnh gcloud compute instances create để tạo máy chủ web. Chúng ta cần tạo 2 máy chủ web, một ở REGION_1 và một ở REGION_2. Chúng tôi đang sử dụng tập lệnh khởi động để cài đặt và định cấu hình Apache trên các máy chủ web.

Máy chủ web REGION_1

Chạy lệnh sau trong Cloud Shell

Lệnh

gcloud compute instances create "${REGION_1}-instance" \
--image-family=debian-11 --image-project=debian-cloud \
--zone=$REGION_1_ZONE \
--network-interface=network=my-vpc,subnet=${REGION_1}-subnet,no-address \
--tags=allow-http \
--metadata=startup-script='#! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://169.254.169.254/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2'

Máy chủ web REGION_2

Chạy lệnh sau trong Cloud Shell

Lệnh

gcloud compute instances create "${REGION_2}-instance" \
--image-family=debian-11 --image-project=debian-cloud \
--zone=$REGION_2_ZONE \
--network-interface=network=my-vpc,subnet=${REGION_2}-subnet,no-address \
--tags=allow-http \
--metadata=startup-script='#! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://169.254.169.254/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2'

Tạo nhóm phiên bản không được quản lý

Trong phần này, chúng ta sẽ tạo 2 nhóm phiên bản không được quản lý. Chúng ta sẽ sử dụng các nhóm phiên bản này trong phần tiếp theo để định cấu hình các dịch vụ phụ trợ ILB. Sau khi tạo các nhóm thực thể, chúng ta sẽ thêm các VM máy chủ web vào các nhóm thực thể này.

Tạo Nhóm phiên bản không được quản lý

Sử dụng lệnh gcloud compute instance-groups unmanaged create để tạo 2 nhóm phiên bản không được quản lý, một cho máy chủ web us-west1 và một cho máy chủ web us-east4.

Nhóm thực thể Region_1

Lệnh

gcloud compute instance-groups unmanaged create \
"${REGION_1}-instance-group" --zone=$REGION_1_ZONE

Nhóm phiên bản Region_2

Lệnh

gcloud compute instance-groups unmanaged create \
"${REGION_2}-instance-group" --zone=$REGION_2_ZONE

Thêm máy ảo vào Nhóm phiên bản

Sử dụng lệnh gcloud compute instance-groups unmanaged add-instances để thêm các phiên bản vào Nhóm phiên bản mà chúng ta vừa tạo. Thêm máy chủ web REGION_1 vào nhóm phiên bản REGION_1 và máy chủ web REGION_2 vào nhóm phiên bản REGION_2

Nhóm thực thể Region_1

Lệnh

gcloud compute instance-groups unmanaged add-instances \
"${REGION_1}-instance-group" --instances $REGION_1-instance \
--zone=$REGION_1_ZONE

Nhóm phiên bản Region_2

Lệnh

gcloud compute instance-groups unmanaged add-instances \
"${REGION_2}-instance-group" --instances $REGION_2-instance \
--zone=$REGION_2_ZONE

Tạo một máy ảo khách

Chúng ta sẽ dùng VM này để chạy kiểm thử và xác minh cấu hình DNS. Chúng tôi đang dùng một tập lệnh khởi động để cài đặt gói dnsutils. Chạy các lệnh sau trong Cloud Shell.

Lệnh

gcloud compute instances create client-instance --image-family=debian-11 \
--image-project=debian-cloud \
--zone=$REGION_1_ZONE \
--network-interface=network=my-vpc,subnet=${REGION_1}-subnet,no-address \
--tags=allow-ssh \
--metadata=startup-script='#! /bin/bash
    apt-get update
    apt-get install dnsutils -y'

8. Tạo Trình cân bằng tải nội bộ L4

Để tạo ILB L4, chúng ta cần tạo một quy tắc chuyển tiếp, một dịch vụ phụ trợ và một quy trình kiểm tra tình trạng.

Tạo chế độ kiểm tra tình trạng

Dùng lệnh gcloud compute health-checks create để tạo quy trình kiểm tra tình trạng. Chúng ta sẽ tạo một chế độ kiểm tra tình trạng http cơ bản và cổng mục tiêu là cổng 80. Chạy các lệnh sau trong Cloud Shell

Lệnh

gcloud compute health-checks create http http-hc --port 80

Định cấu hình các dịch vụ phụ trợ

Dùng lệnh gcloud compute backend-services create để tạo dịch vụ phụ trợ. Sau khi tạo các dịch vụ phụ trợ, chúng ta sẽ thêm các nhóm phiên bản không được quản lý vào các dịch vụ phụ trợ bằng lệnh gcloud compute backend-services add-backend. Chạy các lệnh sau trong Cloud Shell.

Tạo dịch vụ phụ trợ

Lệnh

gcloud compute backend-services create $REGION_1-backend-service \
--load-balancing-scheme=INTERNAL --protocol=TCP \
--health-checks=http-hc --region=$REGION_1
gcloud compute backend-services create $REGION_2-backend-service \
--load-balancing-scheme=INTERNAL --protocol=TCP \
--health-checks=http-hc --region=$REGION_2

Thêm phần phụ trợ

Lệnh

gcloud compute backend-services add-backend $REGION_1-backend-service \
--instance-group=$REGION_1-instance-group \
--region=$REGION_1 \
--instance-group-zone=$REGION_1_ZONE
gcloud compute backend-services add-backend $REGION_2-backend-service \
--instance-group=$REGION_2-instance-group \
--region=$REGION_2 \
--instance-group-zone=$REGION_2_ZONE

Tạo quy tắc chuyển tiếp

Dùng lệnh gcloud compute forwarding-rules create để tạo quy tắc chuyển tiếp ở cả hai khu vực. Chạy các lệnh sau trong Cloud Shell

Quy tắc chuyển tiếp REGION_1

Lệnh

gcloud compute forwarding-rules create $REGION_1-ilb \
    --region=$REGION_1 \
    --load-balancing-scheme=internal \
    --network=my-vpc \
    --subnet=$REGION_1-subnet \
    --ip-protocol=TCP \
    --ports=80 \
    --backend-service=$REGION_1-backend-service \
    --backend-service-region=$REGION_1 \
    --allow-global-access

Quy tắc chuyển tiếp REGION_2

gcloud compute forwarding-rules create $REGION_2-ilb \
    --region=$REGION_2 \
    --load-balancing-scheme=internal \
    --network=my-vpc \
    --subnet=$REGION_2-subnet \
    --ip-protocol=TCP \
    --ports=80 \
    --backend-service=$REGION_2-backend-service \
    --backend-service-region=$REGION_2 \
    --allow-global-access

9. Định cấu hình DNS

Trong phần này, chúng ta sẽ tạo vùng riêng tư và một tập hợp bản ghi DNS bằng chính sách định tuyến dự phòng.

Tạo một vùng DNS riêng tư

Sử dụng lệnh gcloud dns managed-zones create để tạo một vùng riêng tư cho vidu.com. Chúng ta sẽ sử dụng vùng này để tạo một tập hợp bản ghi tài nguyên có chính sách định tuyến dự phòng. Chạy lệnh sau trong Cloud Shell

Lệnh

gcloud dns managed-zones create example-com \
--dns-name example.com. --description="My private zone" \
--visibility=private --networks my-vpc 

Tạo bản ghi DNS bằng chính sách định tuyến dự phòng

Sử dụng lệnh gcloud dns record-sets create để tạo bản ghi DNS bằng chính sách định tuyến dự phòng. Mục tiêu chính là trình cân bằng tải trong REGION_1. Cloud DNS chỉ hỗ trợ các mục tiêu sao lưu dựa trên vị trí địa lý, tập hợp sao lưu là một chính sách vị trí địa lý có bộ cân bằng tải REGION_2 làm mục tiêu cho cả REGION_1 và REGION_2. Chạy các lệnh sau trong Cloud Shell

Lệnh

gcloud dns record-sets create failover.example.com --ttl 5 --type A \
--routing-policy-type=FAILOVER \
--routing-policy-primary-data=$REGION_1-ilb \
--routing-policy-backup-data="${REGION_1}=${REGION_2}-ilb;${REGION_2}=${REGION_2}-ilb" \
--routing-policy-backup-data-type=GEO \
--zone=example-com \
--enable-health-checking

Ví dụ về kết quả đầu ra

NAME: failover.example.com.
TYPE: A
TTL: 5
DATA: Primary: "10.1.0.4, 80, tcp, https://www.googleapis.com/compute/v1/projects/my-clouddns-codelab/global/networks/my-vpc, my-clouddns-codelab, us-west1, regionalL4ilb" Backup: us-west1: "10.2.0.3, 80, tcp, https://www.googleapis.com/compute/v1/projects/my-clouddns-codelab/global/networks/my-vpc, my-clouddns-codelab, us-east4, regionalL4ilb";us-east4: "10.2.0.3, 80, tcp, https://www.googleapis.com/compute/v1/projects/my-clouddns-codelab/global/networks/my-vpc, my-clouddns-codelab, us-east4, regionalL4ilb"

10. Kiểm tra quá trình phân giải DNS

Trước khi kiểm thử chế độ dự phòng, hãy ghi lại địa chỉ IP cho cả hai Trình cân bằng tải nội bộ. Chạy các lệnh sau trong Cloud Shell.

Lệnh

gcloud compute forwarding-rules list --filter="name:($REGION_1-ilb $REGION_2-ilb)"

Ví dụ về kết quả đầu ra

Trong ví dụ này, us-west1-ilb có địa chỉ IP là 10.1.0.4us-east4-ilb có địa chỉ IP là 10.2.0.3

NAME: us-west1-ilb
REGION: us-west1
IP_ADDRESS: 10.1.0.4
IP_PROTOCOL: TCP
TARGET: us-west1/backendServices/us-west1-backend-service

NAME: us-east4-ilb
REGION: us-east4
IP_ADDRESS: 10.2.0.3
IP_PROTOCOL: TCP
TARGET: us-east4/backendServices/us-east4-backend-service

Bây giờ, chúng ta sẽ đăng nhập vào phiên bản máy khách và kiểm tra quá trình phân giải DNS. Trong bảng điều khiển web, hãy chuyển đến "Compute Engine | Phiên bản máy ảo"

5c824940bf414501.png

Nhấp vào nút SSH để đăng nhập vào phiên bản ứng dụng từ bảng điều khiển.

b916eb32c60a4156.png

Bây giờ, khi đã vào VM của máy khách, hãy dùng lệnh dig để phân giải tên miền failover.example.com.

Vòng lặp được định cấu hình để chạy lệnh 10 lần với bộ hẹn giờ ngủ là 6 giây.

Lệnh

for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done

Vì TTL trên bản ghi DNS được đặt thành 5 giây, nên một bộ hẹn giờ ngủ 6 giây đã được thêm vào. Bộ hẹn giờ ngủ sẽ đảm bảo bạn nhận được phản hồi DNS chưa được lưu vào bộ nhớ đệm cho mỗi yêu cầu DNS. Lệnh này sẽ mất khoảng một phút để thực thi.

Trong đầu ra, bạn sẽ thấy địa chỉ IP của trình cân bằng tải trong nhóm chính của bản ghi tài nguyên. Trong chế độ thiết lập của chúng ta, đây sẽ là IP của bộ cân bằng tải trong khu vực us-west1.

11. Kiểm thử chuyển đổi dự phòng

Chúng ta sẽ mô phỏng một quy trình chuyển đổi dự phòng bằng cách xoá thẻ mạng khỏi VM REGION_1. Thao tác này sẽ chặn quyền truy cập vào cổng 80, do đó, các quy trình kiểm tra tình trạng sẽ bắt đầu gặp lỗi.

Xoá thẻ Mạng

Sử dụng lệnh gcloud compute instances remove-tags để xoá thẻ mạng khỏi VM. Chạy lệnh sau trong Cloud Shell

Lệnh

gcloud compute instances remove-tags $REGION_1-instance \
--zone=$REGION_1_ZONE --tags=allow-http

Quá trình kiểm tra tình trạng sẽ thất bại sau 10 giây. Chạy lại kiểm thử phân giải DNS.

Phân giải DNS

Chạy lệnh sau từ client-instance

Lệnh

for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done

Trong đầu ra, bạn sẽ thấy địa chỉ IP của bộ cân bằng tải trong bộ sao lưu của bản ghi tài nguyên. Trong chế độ thiết lập của chúng tôi, đây sẽ là IP của bộ cân bằng tải trong khu vực us-east4.

12. Thử nghiệm việc nhỏ giọt lưu lượng truy cập

Theo mặc định, chính sách chuyển đổi dự phòng sẽ trả về IP điểm cuối chính cho tất cả các yêu cầu DNS và chỉ trả về IP dự phòng nếu IP chính không vượt qua các quy trình kiểm tra tình trạng. Cloud DNS cho phép người dùng định cấu hình Tỷ lệ nhỏ giọt. Tỷ lệ này cho phép Cloud DNS gửi một phần lưu lượng truy cập đến các mục tiêu dự phòng, ngay cả khi các mục tiêu chính vẫn hoạt động bình thường. Tỷ lệ phải là một giá trị nằm trong khoảng từ 0 đến 1. Giá trị mặc định là 0

Để kiểm tra, hãy thêm thẻ mạng trở lại máy chủ web REGION_1.

Thêm thẻ mạng

Thêm thẻ trở lại VM Máy chủ web để cho phép lưu lượng truy cập http đến VM khu vực chính. Chạy lệnh sau trong Cloud Shell.

Lệnh

gcloud compute instances add-tags $REGION_1-instance \
--zone $REGION_1_ZONE --tags allow-http

Các bước kiểm tra tình trạng sẽ hoàn tất sau 10 giây

Xác minh rằng quá trình phân giải DNS trỏ đến bộ cân bằng tải chính. Trong chế độ thiết lập của chúng ta, đây sẽ là địa chỉ IP của bộ cân bằng tải trong khu vực us-west1.

Chạy lệnh sau từ client-instance

Lệnh

dig +short failover.example.com

Cập nhật bản ghi DNS

Bây giờ, chúng ta sẽ sửa đổi bản ghi DNS cho failover.example.com để chuyển 30% lưu lượng truy cập đến bộ sao lưu ngay cả khi bộ chính hoạt động bình thường. Chạy lệnh sau trong Cloud Shell

Lệnh

gcloud dns record-sets update failover.example.com --ttl 30 --type A \
--routing-policy-type=FAILOVER \
--routing-policy-primary-data=$REGION_1-ilb \
--routing-policy-backup-data="${REGION_1}=${REGION_2}-ilb;${REGION_2}=${REGION_2}-ilb" \
--routing-policy-backup-data-type=GEO \
--zone=example-com --enable-health-checking \
--backup-data-trickle-ratio=0.3

Phân giải DNS

Chạy lệnh sau trên máy ảo của máy khách. Bạn sẽ thấy rằng bản ghi DNS failover.example.com sẽ phân giải thành IP của bộ cân bằng tải chính khoảng 70% thời gian và thành IP của bộ cân bằng tải dự phòng khoảng 30% thời gian.

for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done

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

Để dọn dẹp các tài nguyên được dùng trong phòng thí nghiệm này, hãy chạy các lệnh sau từ Cloud Shell

gcloud dns record-sets delete failover.example.com --type=A \
--zone=example-com --quiet

gcloud dns managed-zones delete example-com --quiet

gcloud compute forwarding-rules delete $REGION_1-ilb \
--region=$REGION_1 --quiet

gcloud compute forwarding-rules delete $REGION_2-ilb \
--region=$REGION_2 --quiet

gcloud compute backend-services delete $REGION_1-backend-service \
--region=$REGION_1 --quiet

gcloud compute backend-services delete $REGION_2-backend-service \
--region=$REGION_2 --quiet

gcloud compute health-checks delete http-hc --quiet

gcloud compute instances delete client-instance --zone=$REGION_1_ZONE --quiet

gcloud compute instance-groups unmanaged delete $REGION_1-instance-group \
--zone=$REGION_1_ZONE --quiet

gcloud compute instance-groups unmanaged delete $REGION_2-instance-group \
--zone=$REGION_2_ZONE --quiet

gcloud compute instances delete $REGION_1-instance \
--zone=$REGION_1_ZONE --quiet

gcloud compute instances delete $REGION_2-instance \
--zone=$REGION_2_ZONE --quiet

gcloud compute routers nats delete $REGION_1-nat-gw \
--router=$REGION_1-cloudrouter --region=$REGION_1 --quiet

gcloud compute routers nats delete $REGION_2-nat-gw \
--router=$REGION_2-cloudrouter --region=$REGION_2 --quiet

gcloud compute routers delete $REGION_1-cloudrouter \
--region=$REGION_1 --quiet

gcloud compute routers delete $REGION_2-cloudrouter \
--region=$REGION_2 --quiet

gcloud compute firewall-rules delete allow-ssh allow-http-lb-hc --quiet

gcloud compute networks subnets delete $REGION_1-subnet \
--region=$REGION_1 --quiet

gcloud compute networks subnets delete $REGION_2-subnet \
--region=$REGION_2 --quiet

gcloud compute networks delete my-vpc --quiet

14. Xin chúc mừng

Xin chúc mừng, bạn đã triển khai và kiểm thử thành công chính sách định tuyến dự phòng Cloud DNS

Nội dung đã đề cập

  • Cách định cấu hình chính sách định tuyến dự phòng Cloud DNS
  • Kiểm thử tính năng chuyển đổi dự phòng DNS
  • Cách chuyển dần lưu lượng truy cập sang nhóm dự phòng

Tiếp theo là gì?

  • Hãy thử thiết lập nhiều IP cho các nhóm đang hoạt động và nhóm dự phòng
  • Hãy thử thêm nhiều máy ảo phụ trợ vào các nhóm thực thể không được quản lý
  • Hãy thử thiết lập nhiều bộ cân bằng tải ở các khu vực khác nhau cho chính sách định vị địa lý trong bộ sao lưu.

Tìm hiểu thêm

https://cloud.google.com/dns/docs/zones/manage-routing-policies