1. Giới thiệu
Lần cập nhật gần đây nhất: ngày 22 tháng 09 năm 2022
Chính sách định tuyến DNS là gì
Chính sách định tuyến của Cloud DNS cho phép người dùng định cấu hình việc chỉ đạo lưu lượng dựa trên DNS dựa trên các tiêu chí cụ thể như cân nặng, vị trí địa lý hoặc quy trình kiểm tra tình trạng.
Cloud DNS hỗ trợ các chính sách định tuyến sau đây:
- Chính sách định tuyến xoay vòng theo trọng số
- Chính sách định tuyến vị trí địa lý
- Chính sách về định tuyến được khoanh vùng địa lý
- Chính sách định tuyến chuyển đổi dự phòng
Trong phòng thí nghiệm này, bạn sẽ định cấu hình và kiểm tra chính sách định tuyến chuyển đổi dự phòng.
Chính sách định tuyến chuyển đổi
Cloud DNS hỗ trợ quy trình kiểm tra tình trạng cho các Trình cân bằng tải TCP/UDP nội bộ đã bật quyền truy cập chung. Với chính sách định tuyến chuyển đổi 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 cấp phép trong bộ chính. Khi tất cả địa chỉ IP trong bộ sao lưu đều không thành công (trạng thái hoạt động thay đổi thành không tốt), Cloud DNS sẽ bắt đầu phân phát các địa chỉ IP trong bộ sao lưu.
Kiểm tra tình trạng
Chính sách định tuyến DNS sẽ phụ thuộc vào tính năng kiểm tra tình trạng hợp nhất(UHC) gốc của Trình cân bằng tải nội bộ. Trình cân bằng tải nội bộ được xem là hoạt động tốt nếu có 20% (hoặc nhiều hơn) hệ thống phụ trợ hoạt động tốt. Quy trình kiểm tra tình trạng cho các 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 của tất 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 tín hiệu tình trạng trực tiếp từ từng thực thể phụ trợ. Bạn có thể xem thông tin chi tiết về quy trình kiểm tra tình trạng 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 với chính sách định tuyến DNS chuyển đổi 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áy ảo chạy máy chủ web Apache trong REGION_1
Tài nguyên sao lưu –
- Trình cân bằng tải nội bộ L4 ở REGION_2
- Máy ảo chạy máy chủ web Apache ở REGION_2
Cách thiết lập như sau:
Kiến thức bạn sẽ học được
- Cách tạo chính sách định tuyến chuyển đổi dự phòng
- Kích hoạt chuyển đổi dự phòng DNS
- Cách giảm lưu lượng truy cập đến bộ sao lưu
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 dự án mới hoặc sử dụng lại 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ự không được API của Google 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 trong tất cả các dự án Google Cloud và không thể thay đổi (bạn không thể thay đổi mã này sau khi đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường bạn không quan tâm đến sản phẩm đó là gì. 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 (mã này thường được xác định là
PROJECT_ID
). Nếu không thích mã đã tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Ngoài ra, bạn có thể thử phương pháp của riêng mình và xem có được cung cấp hay không. Bạn không thể thay đổi thông tin này sau bước này và thông báo đó sẽ vẫn tồn tại trong thời gian của dự án. - Đối với thông tin của bạn, có giá trị thứ ba, Project Number (Số dự án) mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu này.
- Tiếp theo, bạn sẽ phải bật tính năng thanh toán trong Cloud Console để sử dụng API/tài nguyên trên đám mây. Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Để tắt các tài nguyên nhằm tránh bị tính phí ngoài hướng dẫn này, bạn có thể xoá các tài nguyên bạ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í 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.
Trong Google Cloud Console, hãy nhấp vào biểu tượng Cloud Shell ở thanh công cụ trên cùng bên phải:
Sẽ chỉ mất một chút thời gian để cấp phép và kết nối với môi trường. Sau khi hoàn tất, bạn sẽ thấy như sau:
Máy ảo này chứa 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ể thực hiện mọi công việ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 gì cả.
3. Phiên bản SDK Google Cloud
Tại thời điểm chúng tôi viết bài này, 401.0.0
là phiên bản SDK Google Cloud mới nhất. Tất cả các lệnh trong phòng thí nghiệm 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, hãy đả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ề trang kết quả
Google Cloud SDK 401.0.0
Bước tiếp theo
- Nếu phiên bản SDK là
401.0.0
trở 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ê dưới đây để 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ắt đầu triển khai kiến trúc mà chúng tôi đã giải thích ở trên, hãy đảm bảo rằng bạn đã định cấu hình Cloud Shell đúng cách và bật tất cả API bắt buộc.
Thiết lập Mã dự án
Bên trong Cloud Shell, hãy đảm bảo bạn đã thiết lập mã dự án. Nếu lời nhắc Cloud shell có dạng như kết quả 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 dùng lệnh bên dưới, lời nhắc của 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ề trang kết quả
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
Bây giờ, các biến môi trường đã được thiết lập, hãy xác minh bằng lệnh echo
. Kết quả đầu ra cho mỗi lệnh sẽ 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ả dịch vụ cần thiết
Dùng lệnh gcloud services enable
để bật các API Tính toán và API DNS. 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ả API đã bật.
Lệnh
gcloud services list | grep -E 'compute|dns'
Ví dụ về trang kết quả
NAME: compute.googleapis.com NAME: dns.googleapis.com
5. Tạo các quy tắc về mạng VPC, mạng con và tường lửa
Trong phần này, chúng ta sẽ tạo mạng VPC, hai mạng con (mỗi mạng một mạng) và các quy tắc bắt buộc về tường lửa.
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 trong 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
Dùng lệnh gcloud compute networks subnets create
để tạo hai mạng con, một mạng ở REGION_1 và một mạng con ở 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 về 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 của tính năng kiểm tra tình trạng của trình 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 máy ảo máy khách.
Dùng lệnh gcloud compute firewall-rules create
để tạo các quy tắc về 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 ứng dụng
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ổng Cloud NAT ở cả hai khu vực để các máy ảo riêng tư có thể tải xuống và cài đặt các gói từ Internet.
- Máy chủ web ảo 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 ứng dụng cần tải xuống và cài đặt gói dnsutils mà chúng tôi sẽ dùng để kiểm thử.
Mỗi cổng vào Cloud NAT được liên kết với một mạng VPC, khu vực và Bộ định tuyến đám mây. 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 vùng.
Tạo bộ định tuyến đám mây
Dùng lệnh gcloud compute routers create
để tạo Bộ định tuyến đám mây trong các khu vực us-west1 và us-east4. Chạy các lệnh sau trong Cloud Shell.
Region_1 Cloud Router (Bộ định tuyến trên đám mây ở khu vực 1)
Lệnh
gcloud compute routers create "${REGION_1}-cloudrouter" \ --region $REGION_1 --network=my-vpc --asn=65501
Region_2 Cloud Router (Bộ định tuyến trên đám mây ở khu vực 2)
Lệnh
gcloud compute routers create "${REGION_2}-cloudrouter" \ --region $REGION_2 --network=my-vpc --asn=65501
Tạo cổng NAT
Dùng lệnh gcloud compute routers nat create
để tạo các cổng NAT trong khu vực us-west1 và us-east4. Chạy các lệnh sau trong Cloud Shell.
Cổng NAT của Khu vực_1
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
Cổng NAT của Vùng_2
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 máy ảo Compute Engine
Trong phần này, bạn sẽ tạo máy chủ web, nhóm thực thể không được quản lý cho máy chủ web và máy ảo ứng dụng.
Tạo máy chủ ảo trên 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 hai máy chủ web, một máy chủ web ở REGION_1 và một máy chủ web ở REGION_2. Chúng tôi đang sử dụng các 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 thực thể không được quản lý
Trong phần này, chúng ta sẽ tạo 2 nhóm thực thể không được quản lý. Chúng ta sẽ sử dụng các nhóm thực thể này trong phần tiếp theo để định cấu hình các dịch vụ phụ trợ ILB. Sau khi các nhóm thực thể được tạo, chúng tôi sẽ thêm máy ảo máy chủ web vào các nhóm thực thể này.
Tạo Nhóm đối tượng không được quản lý
Dùng lệnh gcloud compute instance-groups unmanaged create
để tạo 2 nhóm thực thể không được quản lý, một nhóm cho máy chủ web us-west1 và một nhóm cho máy chủ web us-east4.
Nhóm thực thể của khu vực_1
Lệnh
gcloud compute instance-groups unmanaged create \ "${REGION_1}-instance-group" --zone=$REGION_1_ZONE
Nhóm thực thể của khu vực_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 thực thể
Dùng lệnh gcloud compute instance-groups unmanaged add-instances
để thêm các thực thể vào các Nhóm thực thể 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 thực thể REGION_2
Nhóm thực thể của khu vực_1
Lệnh
gcloud compute instance-groups unmanaged add-instances \ "${REGION_1}-instance-group" --instances $REGION_1-instance \ --zone=$REGION_1_ZONE
Nhóm thực thể của khu vực_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áy ảo ứng dụng
Chúng tôi sẽ dùng máy ảo này để chạy các bài kiểm thử và xác minh cấu hình DNS. Chúng tôi đang sử dụng 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 quy trình kiểm tra tình trạng, dịch vụ phụ trợ và quy tắc chuyển tiếp.
Tạo quy trình kiểm tra tình trạng
Dùng lệnh gcloud compute health-checks create
để tạo yêu cầu kiểm tra tình trạng. Chúng ta đang tạo một quy trình kiểm tra tình trạng http cơ bản và cổng đích 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 thực thể 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
Sử 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 bản ghi DNS được đặt bằng chính sách định tuyến chuyển đổi dự phòng.
Tạo vùng DNS riêng
Dùng lệnh gcloud dns managed-zones create
để tạo một vùng riêng tư cho example.com. Chúng ta sẽ sử dụng vùng này để tạo một nhóm bản ghi tài nguyên có chính sách định tuyến chuyển đổi 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 chuyển đổi dự phòng
Dùng lệnh gcloud dns record-sets create
để tạo bản ghi DNS bằng chính sách định tuyến chuyển đổi dự phòng. Mục tiêu chính là trình cân bằng tải ở REGION_1. Cloud DNS chỉ hỗ trợ các mục tiêu sao lưu dựa trên vị trí địa lý, chế độ sao lưu là một chính sách định vị vị trí với trình 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ề trang kết quả
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 thử quá trình phân giải DNS
Trước khi kiểm thử chế độ thiết lập tính năng chuyển đổi dự phòng, hãy lưu ý đị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ề trang kết quả
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 ứng dụng 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 phần "Compute Engine | Thực thể máy ảo"
Nhấp vào nút SSH để đăng nhập vào phiên bản ứng dụng khách từ bảng điều khiển.
Bây giờ, chúng ta đang ở trong máy ảo máy khách, hãy sử 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 thời gian 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 là 5 giây, nên hệ thống đã thêm bộ định giờ ngủ 6 giây. Bộ tính giờ ngủ sẽ đảm bảo rằng bạn nhận được phản hồi DNS không đượ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 dữ liệu đầu ra, bạn sẽ thấy địa chỉ IP của trình cân bằng tải trong tập hợp chính của bản ghi tài nguyên. Trong cách thiết lập, đây sẽ là IP của trình cân bằng tải ở khu vực us-west1.
11. Kiểm thử tính năng chuyển đổi dự phòng
Chúng ta sẽ mô phỏng quá trình chuyển đổi dự phòng bằng cách xoá thẻ mạng khỏi máy ảo REGION_1. Thao tác này sẽ chặn quyền truy cập vào cổng 80, do đó, quá trình kiểm tra tình trạng sẽ bắt đầu không thành công.
Xoá thẻ mạng
Dùng lệnh gcloud compute instances remove-tags
để xoá thẻ mạng khỏi máy ảo. 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ẽ không thành công sau 10 giây nữa. Chạy lại quá trình kiểm tra độ phân giải DNS.
Phân giải DNS
Trong phiên bản ứng dụng, hãy chạy lệnh sau
Lệnh
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
Trong dữ liệu đầu ra, bạn sẽ thấy địa chỉ IP của trình cân bằng tải trong tập hợp bản sao lưu của bản ghi tài nguyên. Trong cách thiết lập, đây sẽ là IP của trình cân bằng tải ở khu vực us-east4.
12. Kiểm thử lưu lượng truy cập nhỏ giọt
Theo mặc định, chính sách chuyển đổi dự phòng trả về IP điểm cuối chính đối với tất cả yêu cầu DNS và chỉ trả về IP dự phòng nếu quá trình kiểm tra tình trạng chính không thành công. Cloud DNS cho phép người dùng định cấu hình Tỷ lệ thủ thuật, cho phép Cloud DNS gửi một phần lưu lượng truy cập tới các mục tiêu dự phòng, ngay cả khi các mục tiêu chính hoạt động tốt. Tỷ lệ phải là một giá trị từ 0
đến 1
. Giá trị mặc định là 0
Để kiểm tra điều này, hãy thêm lại thẻ mạng vào máy chủ web REGION_1.
Thêm thẻ mạng
Thêm lại thẻ này vào máy chủ ảo trên máy chủ web để cho phép lưu lượng truy cập http đến máy ảo chính của khu vực. 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
Quá trình kiểm tra tình trạng sẽ kết thúc sau 10 giây
Xác minh rằng quá trình phân giải DNS trỏ đến trình cân bằng tải chính. Trong phần thiết lập, đây sẽ là địa chỉ IP của trình cân bằng tải ở khu vực us-west1.
Trong phiên bản ứng dụng, hãy chạy lệnh sau
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 tập hợp bản sao lưu ngay cả khi bản sao chính đã ổn định. 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 máy khách. Bạn sẽ quan sát thấy rằng bản ghi DNS failover.example.com
sẽ phân giải thành khoảng IP của trình cân bằng tải chính. 70% thời gian và dành cho khoảng IP của trình cân bằng tải sao lưu. 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 sử dụng trong phòng thí nghiệm này, hãy chạy các lệnh sau từ CloudShell
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à thử nghiệm thành công chính sách định tuyến chuyển đổi dự phòng Cloud DNS
Nội dung đã đề cập
- Cách định cấu hình chính sách định tuyến chuyển đổi dự phòng Cloud DNS
- Kiểm tra tính năng chuyển đổi dự phòng DNS
- Cách giảm lưu lượng truy cập vào bộ sao lưu
Tiếp theo là gì?
- Cố gắng thiết lập nhiều IP cho các tập hợp đang hoạt động và sao lưu
- 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ý của bạn
- Hãy thử thiết lập nhiều trình cân bằng tải ở các khu vực khác nhau cho chính sách định vị vị trí trong bộ sao lưu.
Tìm hiểu thêm
https://cloud.google.com/dns/docs/zones/manage-routing-policies