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 –

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
- Đă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.



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

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:

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
- Nếu phiên bản SDK là
401.0.0trở lên, hãy chuyển sang phần tiếp theo. - 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.4 và us-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"

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.

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