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 itu kebijakan pemilihan rute DNS

Kebijakan perutean Cloud DNS memungkinkan pengguna mengonfigurasi pengarahan traffic berbasis DNS, bergantung pada kriteria tertentu seperti berat, lokasi geografis, atau health check.

Cloud DNS mendukung kebijakan pemilihan rute berikut:

  • Kebijakan perutean round robin berbobot
  • Kebijakan perutean geolokasi
  • Kebijakan perutean yang dibatasi wilayah
  • Kebijakan perutean failover

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

Kebijakan perutean failover

Cloud DNS mendukung health check untuk Load Balancer TCP/UDP Internal yang mengaktifkan akses global. Dengan kebijakan perutean 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 di kumpulan utama gagal (status respons berubah menjadi tidak responsif), Cloud DNS akan mulai menyalurkan alamat IP di set cadangan.

Health check

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

Yang akan Anda bangun

Dalam Codelab ini, Anda akan membangun situs yang berjalan di 2 region dan mengaitkan kebijakan perutean DNS failover dengan situs tersebut. Penyiapannya akan memiliki:

Materi 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

Konfigurasinya adalah seperti yang ditunjukkan di bawah ini -

d0a91d3d3698f544.png

Yang akan Anda pelajari

  • Cara membuat kebijakan perutean failover
  • Picu 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 peduli tentang apa itu. Di sebagian besar codelab, Anda harus mereferensikan Project ID (biasanya diidentifikasi sebagai PROJECT_ID). Jika Anda tidak menyukai ID yang dihasilkan, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri dan lihat 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. Untuk 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 ini, 401.0.0 adalah versi Google Cloud SDK terbaru. Semua perintah di lab ini diuji menggunakan versi terbaru Google Cloud SDK. 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 lebih tinggi, lanjutkan ke bagian berikutnya.
  2. Jika versi SDK lebih rendah dari 401.0.0, jalankan perintah yang tercantum di bawah ini 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 dijelaskan di atas, pastikan Cloud Shell dikonfigurasi dengan benar dan semua API yang diperlukan sudah aktif.

Menyiapkan Project ID

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

USER@cloudshell:~ (PROJECT_ID)$

Jika masih 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

Menetapkan 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 and DNS API. Jalankan perintah berikut di Cloud Shell

Mengaktifkan 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 verifikasi menggunakan perintah gcloud services list untuk menampilkan daftar semua API yang diaktifkan.

Perintah

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

Contoh Output

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

5. Membuat aturan Jaringan VPC, Subnet, dan Firewall

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

Buat Jaringan VPC

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

Perintah

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

Membuat 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 perlu 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. Membuat Cloud NAT

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

  • VM server web kita perlu 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. 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.

Router Cloud Region_1

Perintah

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

Router Cloud Region_2

Perintah

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

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

Gateway NAT Region_1

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

Gateway NAT Region_2

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 yang tidak dikelola 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. Kami 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 yang tidak dikelola

Di bagian ini, kita akan membuat dua grup instance yang tidak dikelola. 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.

Membuat Grup Instance yang Tidak Dikelola

Gunakan perintah gcloud compute instance-groups unmanaged create untuk membuat dua grup instance yang tidak dikelola, satu untuk server web us-west1 dan satu 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

Menambahkan VM ke Grup Instance

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. Kami 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 L4 ILB, kita perlu membuat health check, layanan backend, dan aturan penerusan.

Buat health check

Gunakan perintah gcloud compute health-checks create untuk membuat health check. Kami 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, kami akan menambahkan grup instance yang tidak dikelola ke layanan backend menggunakan perintah gcloud compute backend-services add-backend. Jalankan perintah berikut di Cloud Shell.

Membuat 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

Menambahkan 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. Konfigurasi DNS

Di bagian ini, kita akan membuat zona pribadi dan data DNS yang disetel dengan kebijakan perutean failover.

Membuat zona DNS pribadi

Gunakan perintah gcloud dns managed-zones create untuk membuat zona pribadi untuk example.com. Kami akan menggunakan zona ini untuk membuat kumpulan data resource dengan kebijakan perutean 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 perutean failover

Gunakan perintah gcloud dns record-sets create untuk membuat data DNS dengan kebijakan perutean failover. Target utamanya adalah load balancer di REGION_1. Cloud DNS hanya mendukung target pencadangan berbasis geografis, set cadangan merupakan 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 | Instance VM"

5c824940bf414501.png

Klik tombol SSH untuk login ke instance klien dari konsol.

b916eb32c60a4156.png

Setelah 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 disetel 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. Perlu waktu sekitar satu menit untuk mengeksekusi perintah ini.

Di output, Anda akan melihat alamat IP load balancer di kumpulan utama data resource. Dalam penyiapan kita, alamat ini akan menjadi IP load balancer di region us-west1.

11. Menguji failover

Kami akan menyimulasikan 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 lagi pengujian resolusi DNS.

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

Pada output, Anda akan melihat alamat IP load balancer di set cadangan data resource. Dalam penyiapan kita, alamat ini akan menjadi IP load balancer di region us-east4.

12. Menguji trik traffic

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

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

Tambahkan Tag Jaringan

Tambahkan tag kembali ke VM Web Server 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

Health check akan lulus dalam 10 detik

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

Dari instance klien, jalankan perintah berikut

Perintah

dig +short failover.example.com

Memperbarui Data DNS

Sekarang, kita akan mengubah data DNS untuk failover.example.com agar mengalirkan 30% traffic ke set cadangan meskipun data primer 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 mengamati bahwa data DNS failover.example.com akan di-resolve ke IP load balancer utama kira-kira. 70% dari waktu ke waktu dan ke IP load balancer cadangan 30% dari waktu tersebut.

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

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

Yang telah kita bahas

  • Cara mengonfigurasi kebijakan perutean failover Cloud DNS
  • Uji failover DNS
  • Cara mengalirkan traffic ke set cadangan

Apa selanjutnya?

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

Pelajari lebih lanjut

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