Failover multi-region menggunakan Kebijakan Pemilihan Rute DNS Cloud dan Health Check untuk Load Balancer TCP/UDP Internal

1. Pengantar

Terakhir Diperbarui: 22-09-2022

Apa yang dimaksud dengan kebijakan pemilihan rute DNS

Kebijakan pemilihan rute Cloud DNS memungkinkan pengguna mengonfigurasi pengarahan traffic berbasis DNS, bergantung pada kriteria tertentu seperti bobot, geolokasi, atau health check.

Cloud DNS mendukung kebijakan pemilihan rute berikut:

  • Kebijakan pemilihan rute round robin berbobot
  • Kebijakan pemilihan rute geolokasi
  • Kebijakan pemilihan rute dengan pembatasan wilayah
  • Kebijakan pemilihan rute failover

Dalam lab ini, Anda akan mengonfigurasi dan menguji kebijakan perutean failover.

Kebijakan pemilihan rute failover

Cloud DNS mendukung health check untuk Load Balancer TCP/UDP Internal yang telah mengaktifkan akses global. Dengan kebijakan pemilihan rute failover, Anda dapat mengonfigurasi IP utama dan cadangan untuk data resource. Dalam operasi normal, Cloud DNS akan merespons kueri dengan alamat IP yang disediakan di set utama. Jika semua alamat IP dalam set utama gagal (status responsivitas berubah menjadi tidak responsif), Cloud DNS akan mulai menyajikan alamat IP dalam set cadangan.

Health check

Kebijakan pemilihan rute DNS akan bergantung pada health check terpadu(UHC) Load Balancer Internal native. Load Balancer Internal dianggap responsif jika 20% (atau lebih) backend responsif. Pemeriksaan kesehatan untuk load balancer TCP/UDP internal dan HTTP(S) Internal memberikan informasi yang berbeda. Untuk load balancer HTTP(S) internal, UHC memberikan status responsivitas semua proxy Envoy, tetapi untuk load balancer TCP/UDP internal, Cloud DNS mendapatkan sinyal responsivitas langsung dari setiap instance backend. Detail pemeriksaan kondisi dapat ditemukan di sini .

Yang akan Anda bangun

Dalam Codelab ini, Anda akan membuat situs yang berjalan di 2 region dan mengaitkan kebijakan pemilihan rute DNS failover dengannya. Penyiapannya akan memiliki:

Resource aktif -

  • Load Balancer Internal L4 di REGION_1
  • VM yang menjalankan server web Apache di REGION_1

Resource cadangan -

  • Load Balancer Internal L4 di REGION_2
  • VM yang menjalankan server web Apache di REGION_2

Penyiapannya seperti yang ditunjukkan di bawah -

d0a91d3d3698f544.png

Yang akan Anda pelajari

  • Cara membuat kebijakan perutean failover
  • Memicu failover DNS
  • Cara mengalirkan traffic ke set cadangan

Yang Anda butuhkan

  • Pengetahuan dasar tentang DNS
  • Pengetahuan dasar tentang Google Compute Engine
  • Pengetahuan dasar tentang Load Balancer Internal L4

2. Penyiapan dan Persyaratan

  1. Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
  • Project ID harus unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (biasanya diidentifikasi sebagai PROJECT_ID). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri dan melihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan akan tetap ada selama durasi project.
  • Sebagai informasi, ada nilai ketiga, Project Number yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
  1. Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus seluruh project. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.

Mulai Cloud Shell

Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.

Dari Google Cloud Console, klik ikon Cloud Shell di toolbar kanan atas:

55efc1aaa7a4d3ad.png

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

7ffe5cbb04455448.png

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda dalam codelab ini dapat dilakukan di browser. Anda tidak perlu menginstal apa pun.

3. Versi Google Cloud SDK

Pada saat penulisan, 401.0.0 adalah versi Google Cloud SDK terbaru. Semua perintah dalam lab ini diuji menggunakan Google Cloud SDK versi terbaru. Sebelum melanjutkan, pastikan Cloud Shell menggunakan SDK versi terbaru.

Memeriksa versi SDK

Gunakan perintah gcloud version untuk memeriksa versi SDK. Jalankan perintah berikut di Cloud Shell

Perintah

gcloud version | grep "Google Cloud SDK"

Contoh Output

Google Cloud SDK 401.0.0

Langkah Berikutnya

  1. Jika versi SDK adalah 401.0.0 atau yang lebih tinggi, lanjutkan ke bagian berikutnya.
  2. Jika versi SDK lebih rendah dari 401.0.0, jalankan perintah yang tercantum di bawah untuk mengupdate SDK.

Perintah Opsional

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

4. Sebelum memulai

Sebelum Anda mulai men-deploy arsitektur yang kami jelaskan di atas, pastikan Cloud Shell dikonfigurasi dengan benar dan semua API yang diperlukan telah diaktifkan.

Siapkan Project ID

Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan. Jika perintah Cloud Shell Anda terlihat seperti output di bawah dan Anda tidak berencana mengubah project ID, Anda dapat melanjutkan ke langkah berikutnya (Setel Variabel Lingkungan).

USER@cloudshell:~ (PROJECT_ID)$

Jika Anda tetap ingin mengubah project ID, gunakan perintah yang tercantum di bawah, perintah Cloud Shell akan berubah dari (PROJECT_ID) menjadi (YOUR-PROJECT-ID)

Perintah Opsional

gcloud config set project [YOUR-PROJECT-ID]

Contoh Output

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

Menetapkan Variabel Lingkungan

Tetapkan Variabel lingkungan

Kita akan menggunakan perintah export untuk menetapkan variabel lingkungan. Jalankan perintah berikut di Cloud Shell

Perintah

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

Verifikasi

Setelah variabel lingkungan ditetapkan, mari kita verifikasi menggunakan perintah echo. Output untuk setiap perintah harus berupa nilai yang kita konfigurasi di atas menggunakan perintah export. Jalankan perintah berikut di Cloud Shell

Perintah

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

Mengaktifkan semua layanan yang diperlukan

Gunakan perintah gcloud services enable untuk mengaktifkan Compute API dan DNS API. Jalankan perintah berikut di Cloud Shell

Aktifkan Compute API

Perintah

gcloud services enable compute.googleapis.com

Mengaktifkan DNS API

Perintah

gcloud services enable dns.googleapis.com

Verifikasi

Setelah layanan diaktifkan, mari kita lakukan verifikasi menggunakan perintah gcloud services list untuk mencantumkan semua API yang diaktifkan.

Perintah

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

Contoh Output

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

5. Membuat Jaringan VPC, Subnet, dan aturan Firewall

Di bagian ini, kita akan membuat jaringan VPC, dua subnet (satu di setiap region), dan aturan firewall yang diperlukan.

Create VPC Network

Gunakan perintah gcloud compute networks create untuk membuat jaringan VPC. Kita menyetel mode subnet sebagai kustom karena kita akan membuat subnet sendiri pada langkah berikutnya. Jalankan perintah berikut di Cloud Shell.

Perintah

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

Buat Subnet

Gunakan perintah gcloud compute networks subnets create untuk membuat dua subnet, satu di REGION_1 dan satu di REGION_2. Jalankan perintah berikut di Cloud Shell

Subnet REGION_1

Perintah

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

Subnet REGION_2

Perintah

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

Membuat aturan firewall

Anda harus mengizinkan traffic di port 80 dari subnet VPC dan dari rentang IP health check load balancer.

Selain itu, Anda juga perlu membuat aturan firewall untuk mengizinkan traffic SSH di VM klien.

Gunakan perintah gcloud compute firewall-rules create untuk membuat aturan firewall. Jalankan perintah berikut di Cloud Shell

Mengizinkan Traffic di Port 80

Perintah

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

Mengizinkan Traffic SSH di VM Klien

Perintah

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. Buat Cloud NAT

Anda memerlukan gateway Cloud NAT di kedua region agar VM pribadi dapat mendownload dan menginstal paket dari internet.

  • VM server web kita harus mendownload dan menginstal server web Apache.
  • VM klien harus mendownload dan menginstal paket dnsutils yang akan kita gunakan untuk pengujian.

Setiap gateway Cloud NAT dikaitkan dengan satu jaringan VPC, region, dan Cloud Router. Jadi, sebelum membuat gateway NAT, kita perlu membuat Cloud Router di setiap region.

Membuat Cloud Router

Gunakan perintah gcloud compute routers create untuk membuat Cloud Router di region us-west1 dan us-east4. Jalankan perintah berikut di Cloud Shell.

Region_1 Cloud Router

Perintah

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

Region_2 Cloud Router

Perintah

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

Buat Gateway NAT

Gunakan perintah gcloud compute routers nat create untuk membuat gateway NAT di region us-west1 dan us-east4. Jalankan perintah berikut di Cloud Shell.

Region_1 NAT Gateway

Perintah

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

Perintah

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. Membuat VM Compute Engine

Di bagian ini, Anda akan membuat server web, grup instance tidak terkelola untuk server web, dan VM klien.

Membuat VM server Web

Gunakan perintah gcloud compute instances create untuk membuat server web. Kita perlu membuat dua server web, satu di REGION_1 dan satu lagi di REGION_2. Kita menggunakan skrip startup untuk menginstal dan mengonfigurasi Apache di server web.

Server Web REGION_1

Jalankan perintah berikut di Cloud Shell

Perintah

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'

Server Web REGION_2

Jalankan perintah berikut di Cloud Shell

Perintah

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'

Membuat grup instance tidak terkelola

Di bagian ini, kita akan membuat dua grup instance tidak terkelola. Kita akan menggunakan grup instance ini di bagian berikutnya untuk mengonfigurasi layanan backend ILB. Setelah grup instance dibuat, kita akan menambahkan VM server web ke grup instance ini.

Buat Grup Instance Tak Terkelola

Gunakan perintah gcloud compute instance-groups unmanaged create untuk membuat dua grup instance tidak terkelola, satu untuk server web us-west1 dan satu lagi untuk server web us-east4.

Grup Instance Region_1

Perintah

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

Grup Instance Region_2

Perintah

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

Tambahkan VM ke Instance Groups

Gunakan perintah gcloud compute instance-groups unmanaged add-instances untuk menambahkan instance ke Grup instance yang baru saja kita buat. Tambahkan server web REGION_1 ke grup instance REGION_1 dan server web REGION_2 ke grup instance REGION_2

Grup Instance Region_1

Perintah

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

Grup Instance Region_2

Perintah

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

Membuat VM klien

Kita akan menggunakan VM ini untuk menjalankan pengujian dan memverifikasi konfigurasi DNS kita. Kita menggunakan skrip startup untuk menginstal paket dnsutils. Jalankan perintah berikut di Cloud Shell.

Perintah

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. Membuat Load Balancer Internal L4

Untuk membuat ILB L4, kita perlu membuat health check, layanan backend, dan aturan penerusan.

Buat health check

Gunakan perintah gcloud compute health-checks create untuk membuat health check. Kita membuat health check http dasar dan port targetnya adalah port 80. Jalankan perintah berikut di Cloud Shell

Perintah

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

Mengonfigurasi layanan backend

Gunakan perintah gcloud compute backend-services create untuk membuat layanan backend. Setelah layanan backend dibuat, kita akan menambahkan grup instance tidak terkelola ke layanan backend menggunakan perintah gcloud compute backend-services add-backend. Jalankan perintah berikut di Cloud Shell.

Buat Layanan Backend

Perintah

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

Tambahkan Backend

Perintah

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

Membuat aturan penerusan

Gunakan perintah gcloud compute forwarding-rules create untuk membuat aturan penerusan di kedua region. Jalankan perintah berikut di Cloud Shell

Aturan penerusan REGION_1

Perintah

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

Aturan penerusan 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. Mengonfigurasi DNS

Di bagian ini, kita akan membuat zona pribadi dan set data DNS dengan kebijakan pemilihan rute failover.

Membuat zona DNS pribadi

Gunakan perintah gcloud dns managed-zones create untuk membuat zona pribadi untuk example.com. Kita akan menggunakan zona ini untuk membuat set data resource dengan kebijakan pemilihan rute failover. Jalankan perintah berikut di Cloud Shell

Perintah

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

Membuat data DNS dengan kebijakan pemilihan rute failover

Gunakan perintah gcloud dns record-sets create untuk membuat data DNS dengan kebijakan perutean failover. Target utama adalah load balancer di REGION_1. Cloud DNS hanya mendukung target cadangan berbasis geografis. Set cadangan adalah kebijakan geolokasi dengan load balancer REGION_2 sebagai target untuk REGION_1 dan REGION_2. Jalankan perintah berikut di Cloud Shell

Perintah

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

Contoh Output

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. Menguji resolusi DNS

Sebelum menguji penyiapan failover, mari catat alamat IP untuk kedua Load Balancer Internal. Jalankan perintah berikut di Cloud Shell.

Perintah

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

Contoh Output

Dalam contoh ini, us-west1-ilb memiliki alamat IP 10.1.0.4 dan us-east4-ilb memiliki alamat IP 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

Sekarang kita akan login ke instance klien dan menguji resolusi DNS. Di konsol web, buka "Compute Engine | VM Instances"

5c824940bf414501.png

Klik tombol SSH untuk login ke client-instance dari konsol.

b916eb32c60a4156.png

Sekarang setelah kita berada di VM klien, gunakan perintah dig untuk me-resolve nama domain failover.example.com.

Loop dikonfigurasi untuk menjalankan perintah sepuluh kali dengan timer tidur 6 detik.

Perintah

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

Karena TTL pada data DNS ditetapkan ke 5 detik, timer tidur 6 detik telah ditambahkan. Timer tidur akan memastikan bahwa Anda mendapatkan respons DNS yang tidak di-cache untuk setiap permintaan DNS. Perintah ini akan memerlukan waktu sekitar satu menit untuk dijalankan.

Dalam output, Anda akan melihat alamat IP load balancer dalam set utama data resource. Dalam penyiapan ini, alamat tersebut adalah IP load balancer di region us-west1.

11. Menguji failover

Kita akan melakukan simulasi failover dengan menghapus tag jaringan dari VM REGION_1. Tindakan ini akan memblokir akses ke port 80, dan akibatnya, health check akan mulai gagal.

Menghapus Tag Jaringan

Gunakan perintah gcloud compute instances remove-tags untuk menghapus tag jaringan dari VM. Jalankan perintah berikut di Cloud Shell

Perintah

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

Health check akan gagal dalam 10 detik. Jalankan pengujian resolusi DNS lagi.

Resolusi DNS

Dari instance klien, jalankan perintah berikut

Perintah

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

Dalam output, Anda akan melihat alamat IP load balancer dalam set cadangan data resource. Dalam penyiapan ini, alamat tersebut adalah IP load balancer di region us-east4.

12. Menguji tetesan traffic

Secara default, kebijakan failover menampilkan IP endpoint utama untuk semua permintaan DNS dan hanya menampilkan IP cadangan jika IP utama gagal dalam health check. Cloud DNS memungkinkan pengguna mengonfigurasi Rasio Perjalanan yang memungkinkan Cloud DNS mengirim sebagian traffic ke target cadangan, meskipun target utama responsif. Rasio harus berupa nilai antara 0 dan 1. Nilai defaultnya adalah 0

Untuk mengujinya, mari tambahkan kembali tag jaringan ke server web REGION_1.

Tambahkan Tag Jaringan

Tambahkan kembali tag ke VM Server Web untuk mengizinkan traffic http ke VM region utama. Jalankan perintah berikut di Cloud Shell:

Perintah

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

Pemeriksaan kondisi akan berhasil dalam 10 detik

Pastikan resolusi DNS mengarah ke load balancer utama. Dalam penyiapan ini, alamat tersebut adalah alamat IP load balancer di region us-west1.

Dari instance klien, jalankan perintah berikut

Perintah

dig +short failover.example.com

Perbarui Data DNS

Sekarang, kita akan mengubah data DNS untuk failover.example.com agar mengalirkan 30% traffic ke set cadangan meskipun target utama responsif. Jalankan perintah berikut di Cloud Shell

Perintah

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

Resolusi DNS

Jalankan perintah berikut dari VM klien. Anda akan melihat bahwa data DNS failover.example.com akan di-resolve ke IP load balancer utama sekitar 70% dari waktu dan ke IP load balancer cadangan sekitar 30% dari waktu.

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

13. Langkah-langkah pembersihan

Untuk membersihkan resource yang digunakan dalam lab ini, jalankan perintah berikut dari 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. Selamat

Selamat, Anda telah berhasil men-deploy dan menguji kebijakan pemilihan rute failover Cloud DNS

Yang telah kita bahas

  • Cara mengonfigurasi kebijakan pemilihan rute failover Cloud DNS
  • Menguji failover DNS
  • Cara mengalirkan traffic ke set cadangan

Apa selanjutnya?

  • Coba siapkan beberapa IP untuk set aktif dan cadangan
  • Coba tambahkan beberapa VM backend ke grup instance tidak terkelola
  • Coba siapkan beberapa load balancer di berbagai region untuk kebijakan geolokasi dalam set cadangan.

Pelajari lebih lanjut

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