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 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 hoạt động ở 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:

d0a91d3d3698f544.png

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

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

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ự 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 (không thể thay đổi 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.
  1. 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:

55efc1aaa7a4d3ad.pngS

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:

7ffe5cbb04455448.pngS

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

  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ê 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 vùng để 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

Bộ định tuyế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 sẽ 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.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 ứ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"

5c824940bf414501.pngS

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.

b916eb32c60a4156.png

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 vị trí địa lý trong bộ sao lưu.

Tìm hiểu thêm

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