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 -
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
- 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.
- 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.
- 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:
Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:
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
- Jika versi SDK adalah
401.0.0
atau lebih tinggi, lanjutkan ke bagian berikutnya. - 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 diaktifkan.
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 Anda 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"
Klik tombol SSH untuk login ke instance klien dari konsol.
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
Jalankan perintah berikut dari instance klien
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 kumpulan data cadangan. 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.
Jalankan perintah berikut dari instance klien
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