1. Giriş
Son Güncelleme: 2022-09-22
DNS yönlendirme politikası nedir?
Cloud DNS yönlendirme politikaları, kullanıcıların ağırlık, coğrafi konum veya durum kontrolleri gibi belirli ölçütlere bağlı olarak DNS tabanlı trafik yönlendirmeyi yapılandırmasına olanak tanır.
Cloud DNS aşağıdaki yönlendirme politikalarını destekler:
- Ağırlıklı çevrimsel sıralı yönlendirme politikası
- Coğrafi konum yönlendirme politikası
- Coğrafi sınırlı yönlendirme politikası
- Yük devretme yönlendirme politikası
Bu laboratuvarda, yük devretme yönlendirme politikasını yapılandırıp test edeceksiniz.
Yük devretme yönlendirme politikası
Cloud DNS, global erişimin etkinleştirildiği dahili TCP/UDP yük dengeleyicileri için durum denetimlerini destekler. Yük devretme yönlendirme politikasıyla bir kaynak kaydı için birincil ve yedek IP'ler yapılandırabilirsiniz. Normal çalışma sırasında Cloud DNS, sorgulara birincil kümede sağlanan IP adresleriyle yanıt verir. Birincil gruptaki tüm IP adresleri başarısız olduğunda (sağlık durumu kötü olarak değişir) Cloud DNS, yedek gruptaki IP adreslerine hizmet vermeye başlar.
Durum denetimleri
DNS yönlendirme politikası, yerel dahili yük dengeleyici birleştirilmiş durum denetimlerine(UHC) bağlıdır. Arka uçların %20'si (veya daha fazlası) iyi durumdaysa dahili yük dengeleyici iyi durumda kabul edilir. Dahili TCP/UDP ve dahili HTTP(S) yük dengeleyiciler için durum kontrolleri farklı bilgiler sağlar. UHC, dahili HTTP(S) yük dengeleyiciler için tüm Envoy proxy'lerinin sağlık durumunu sağlar. Ancak dahili TCP/UDP yük dengeleyiciler için Cloud DNS, arka uç örneklerinden doğrudan sağlık sinyalleri alır. Sağlık kontrolleriyle ilgili ayrıntıları burada bulabilirsiniz .
Ne oluşturacaksınız?
Bu Codelab'de, 2 bölgede çalışan bir web sitesi oluşturacak ve bu siteyle bir yük devretme DNS yönlendirme politikası ilişkilendireceksiniz. Kurulumda şunlar bulunur:
Etkin kaynaklar:
- REGION_1'deki L4 dahili yük dengeleyici
- REGION_1'de Apache web sunucusu çalıştıran bir sanal makine
Yedekleme kaynakları:
- REGION_2 bölgesindeki L4 dahili yük dengeleyici
- REGION_2'de Apache web sunucusu çalıştıran bir sanal makine
Kurulum aşağıdaki gibidir:

Neler öğreneceksiniz?
- Yük devretme yönlendirme politikası oluşturma
- DNS yük devretmesini tetikleme
- Trafiği yedek kümeye kademeli olarak yönlendirme
Gerekenler
- DNS hakkında temel bilgiler
- Google Compute Engine hakkında temel düzeyde bilgi sahibi olma
- L4 dahili yük dengeleyici hakkında temel bilgiler
2. Kurulum ve Gereksinimler
- Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.



- Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Dilediğiniz zaman bunu güncelleyebilirsiniz.
- Proje kimliği, tüm Google Cloud projelerinde benzersiz olmalı ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğine (genellikle
PROJECT_IDolarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince geçerli kalır. - Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
- Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırma ücreti alınmaması için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projenin tamamını silebilirsiniz. Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.
Cloud Shell'i Başlatma
Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.
Google Cloud Console'da sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın:

Ortamın temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Herhangi bir şey yüklemeniz gerekmez.
3. Google Cloud SDK sürümü
Bu belge yazılırken 401.0.0, Google Cloud SDK'nın en son sürümüydü. Bu laboratuvardaki tüm komutlar, Google Cloud SDK'nın en son sürümü kullanılarak test edilmiştir. Devam etmeden önce lütfen Cloud Shell'in SDK'nın en yeni sürümünü kullandığından emin olun.
SDK sürümünü kontrol etme
SDK sürümünü kontrol etmek için gcloud version komutunu kullanın. Cloud Shell'de aşağıdaki komutları çalıştırın:
Command
gcloud version | grep "Google Cloud SDK"
Çıkış örneği
Google Cloud SDK 401.0.0
Sonraki Adımlar
- SDK sürümü
401.0.0veya daha yüksekse bir sonraki bölüme geçin. - SDK sürümü
401.0.0'dan düşükse SDK'yı güncellemek için aşağıda listelenen komutu çalıştırın.
İsteğe bağlı komut
sudo apt-get update && sudo apt-get install google-cloud-sdk
4. Başlamadan önce
Yukarıda açıkladığımız mimariyi dağıtmaya başlamadan önce Cloud Shell'in doğru şekilde yapılandırıldığından ve gerekli tüm API'lerin etkinleştirildiğinden emin olalım.
Proje kimliğini ayarlama
Cloud Shell'de proje kimliğinizin ayarlandığından emin olun. Cloud Shell isteminiz aşağıdaki çıktıya benziyorsa ve proje kimliğini değiştirmeyi planlamıyorsanız bir sonraki adıma (Ortam Değişkenlerini Ayarlama) geçebilirsiniz.
USER@cloudshell:~ (PROJECT_ID)$
Yine de proje kimliğini değiştirmek istiyorsanız aşağıda listelenen komutu kullanın. Cloud Shell istemi (PROJECT_ID) yerine (YOUR-PROJECT-ID) olarak değişir.
İsteğe bağlı komut
gcloud config set project [YOUR-PROJECT-ID]
Çıkış örneği
Updated property [core/project]. USER@cloudshell:~ (YOUR-PROJECT-ID)$
Ortam değişkenlerini ayarlama
Ortam değişkenlerini ayarlama
Ortam değişkenlerini ayarlamak için export komutunu kullanacağız. Cloud Shell'de aşağıdaki komutları çalıştırın:
Komutlar
export REGION_1=us-west1
export REGION_1_ZONE=us-west1-a
export REGION_2=us-east4
export REGION_2_ZONE=us-east4-a
Doğrula
Ortam değişkenleri ayarlandığına göre, echo komutunu kullanarak doğrulama yapalım. Her komutun çıktısı, yukarıda export komutu kullanılarak yapılandırılan değer olmalıdır. Cloud Shell'de aşağıdaki komutları çalıştırın:
Komutlar
echo $REGION_1
echo $REGION_1_ZONE
echo $REGION_2
echo $REGION_2_ZONE
Gerekli tüm hizmetleri etkinleştirme
Compute ve DNS API'lerini etkinleştirmek için gcloud services enable komutunu kullanın. Cloud Shell'de aşağıdaki komutları çalıştırın:
Compute API'yi etkinleştirin
Command
gcloud services enable compute.googleapis.com
DNS API'yi etkinleştirme
Command
gcloud services enable dns.googleapis.com
Doğrula
Hizmetler etkinleştirildiğine göre, etkinleştirilen tüm API'leri listelemek için gcloud services list komutunu kullanarak doğrulama yapalım.
Command
gcloud services list | grep -E 'compute|dns'
Çıkış örneği
NAME: compute.googleapis.com NAME: dns.googleapis.com
5. VPC ağı, alt ağlar ve güvenlik duvarı kuralları oluşturma
Bu bölümde VPC ağını, iki alt ağı (her bölgede bir tane) ve gerekli güvenlik duvarı kurallarını oluşturacağız.
VPC ağı oluşturma
VPC ağını oluşturmak için gcloud compute networks create komutunu kullanın. Bir sonraki adımda kendi alt ağlarımızı oluşturacağımız için alt ağ modunu özel olarak ayarlıyoruz. Cloud Shell'de aşağıdaki komutları çalıştırın.
Command
gcloud compute networks create my-vpc --subnet-mode custom
Alt Ağ Oluşturma
REGION_1'de bir ve REGION_2'de bir olmak üzere iki alt ağ oluşturmak için gcloud compute networks subnets create komutunu kullanın. Cloud Shell'de aşağıdaki komutları çalıştırın:
REGION_1 alt ağı
Command
gcloud compute networks subnets create ${REGION_1}-subnet \
--network my-vpc \
--range 10.1.0.0/24 \
--region $REGION_1
REGION_2 alt ağı
Command
gcloud compute networks subnets create ${REGION_2}-subnet \
--network my-vpc \
--range 10.2.0.0/24 \
--region $REGION_2
Güvenlik duvarı kuralları oluşturma
VPC alt ağlarından ve yük dengeleyici durum denetimi IP aralıklarından gelen trafiğin 80 numaralı bağlantı noktasında iletilmesine izin vermeniz gerekir.
Ayrıca, istemci sanal makinelerinde SSH trafiğine izin vermek için güvenlik duvarı kuralı da oluşturmanız gerekir.
Güvenlik duvarı kurallarını oluşturmak için gcloud compute firewall-rules create komutunu kullanın. Cloud Shell'de aşağıdaki komutları çalıştırın:
80 numaralı bağlantı noktasında trafiğe izin ver
Command
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
İstemci sanal makinesinde SSH trafiğine izin verme
Command
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. Cloud NAT oluşturma
Özel sanal makinelerin internetten paket indirip yükleyebilmesi için her iki bölgede de Cloud NAT ağ geçitlerine ihtiyacınız vardır.
- Web sunucusu sanal makinelerimizin Apache web sunucusunu indirmesi ve yüklemesi gerekir.
- İstemci VM'sinin, testlerimizde kullanacağımız dnsutils paketini indirip yüklemesi gerekir.
Her Cloud NAT ağ geçidi tek bir VPC ağı, bölge ve Cloud Router ile ilişkilendirilir. Bu nedenle, NAT ağ geçitlerini oluşturmadan önce her bölgede Cloud Router oluşturmamız gerekir.
Cloud Router oluşturma
us-west1 ve us-east4 bölgelerinde Cloud Router oluşturmak için gcloud compute routers create komutunu kullanın. Cloud Shell'de aşağıdaki komutları çalıştırın.
Region_1 Cloud Router
Komutlar
gcloud compute routers create "${REGION_1}-cloudrouter" \
--region $REGION_1 --network=my-vpc --asn=65501
Region_2 Cloud Router
Komutlar
gcloud compute routers create "${REGION_2}-cloudrouter" \
--region $REGION_2 --network=my-vpc --asn=65501
NAT ağ geçitlerini oluşturma
us-west1 ve us-east4 bölgelerinde NAT ağ geçitleri oluşturmak için gcloud compute routers nat create komutunu kullanın. Cloud Shell'de aşağıdaki komutları çalıştırın.
Region_1 NAT Gateway
Komutlar
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 (Bölge_2 NAT Ağ Geçidi)
Komutlar
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. Compute Engine sanal makineleri oluşturma
Bu bölümde web sunucularını, web sunucuları için yönetilmeyen örnek gruplarını ve istemci VM'sini oluşturacaksınız.
Web sunucusu sanal makineleri oluşturma
Web sunucularını oluşturmak için gcloud compute instances create komutunu kullanın. REGION_1'de bir, REGION_2'de bir olmak üzere iki web sunucusu oluşturmamız gerekiyor. Web sunucularına Apache'yi yüklemek ve yapılandırmak için başlangıç komut dosyalarını kullanıyoruz.
REGION_1 Web Server
Cloud Shell'de aşağıdaki komutu çalıştırın:
Command
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'
REGION_2 Web Server
Cloud Shell'de aşağıdaki komutu çalıştırın:
Command
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'
Yönetilmeyen örnek grupları oluşturma
Bu bölümde, iki yönetilmeyen örnek grubu oluşturacağız. Bu örnek gruplarını, sonraki bölümde ILB arka uç hizmetlerini yapılandırmak için kullanacağız. Örnek grupları oluşturulduktan sonra web sunucusu sanal makinelerini bu örnek gruplarına ekleriz.
Yönetilmeyen örnek gruplarını oluşturma
gcloud compute instance-groups unmanaged create komutunu kullanarak biri us-west1 web sunucusu, diğeri us-east4 web sunucusu için olmak üzere iki yönetilmeyen örnek grubu oluşturun.
Region_1 Instance Group
Komutlar
gcloud compute instance-groups unmanaged create \
"${REGION_1}-instance-group" --zone=$REGION_1_ZONE
Region_2 Instance Group
Komutlar
gcloud compute instance-groups unmanaged create \
"${REGION_2}-instance-group" --zone=$REGION_2_ZONE
Örnek gruplarına sanal makineler ekleme
Örnekleri, yeni oluşturduğumuz örnek gruplarına eklemek için gcloud compute instance-groups unmanaged add-instances komutunu kullanın. REGION_1 web sunucusunu REGION_1 örnek grubuna, REGION_2 web sunucusunu ise REGION_2 örnek grubuna ekleyin.
Region_1 Instance Group
Komutlar
gcloud compute instance-groups unmanaged add-instances \
"${REGION_1}-instance-group" --instances $REGION_1-instance \
--zone=$REGION_1_ZONE
Region_2 Instance Group
Komutlar
gcloud compute instance-groups unmanaged add-instances \
"${REGION_2}-instance-group" --instances $REGION_2-instance \
--zone=$REGION_2_ZONE
İstemci sanal makinesi oluşturma
Bu sanal makineyi test çalıştırmak ve DNS yapılandırmamızı doğrulamak için kullanacağız. dnsutils paketini yüklemek için bir başlangıç komut dosyası kullanıyoruz. Cloud Shell'de aşağıdaki komutları çalıştırın.
Command
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. L4 dahili yük dengeleyiciler oluşturma
L4 ILB'yi oluşturmak için durum denetimi, arka uç hizmeti ve yönlendirme kuralı oluşturmamız gerekir.
Durum denetimi oluştur
Durum denetimini oluşturmak için gcloud compute health-checks create komutunu kullanın. Temel bir HTTP durum denetimi oluşturuyoruz ve hedef bağlantı noktası 80 numaralı bağlantı noktasıdır. Cloud Shell'de aşağıdaki komutları çalıştırın:
Command
gcloud compute health-checks create http http-hc --port 80
Arka uç hizmetlerini yapılandırma
Arka uç hizmetini oluşturmak için gcloud compute backend-services create komutunu kullanın. Arka uç hizmetleri oluşturulduktan sonra, gcloud compute backend-services add-backend komutunu kullanarak yönetilmeyen örnek grupları arka uç hizmetlerine ekleriz. Cloud Shell'de aşağıdaki komutları çalıştırın.
Arka uç hizmeti oluşturma
Komutlar
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
Arka uç ekleme
Command
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
İletim kuralları oluşturma
Her iki bölgede de yönlendirme kurallarını oluşturmak için gcloud compute forwarding-rules create komutunu kullanın. Cloud Shell'de aşağıdaki komutları çalıştırın:
REGION_1 yönlendirme kuralı
Komutlar
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
REGION_2 iletim kuralı
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. DNS'yi yapılandırma
Bu bölümde, yük devretme yönlendirme politikasıyla özel bölge ve DNS kayıt kümesi oluşturacağız.
Özel DNS bölgesi oluşturma
example.com için özel bir bölge oluşturmak üzere gcloud dns managed-zones create komutunu kullanın. Bu bölgeyi, yük devretme yönlendirme politikası içeren bir kaynak kaydı kümesi oluşturmak için kullanacağız. Cloud Shell'de aşağıdaki komutu çalıştırın:
Komutlar
gcloud dns managed-zones create example-com \ --dns-name example.com. --description="My private zone" \ --visibility=private --networks my-vpc
Yük devretme yönlendirme politikasıyla DNS kaydı oluşturma
Yük devretme yönlendirme politikasıyla DNS kaydı oluşturmak için gcloud dns record-sets create komutunu kullanın. Birincil hedef, REGION_1'deki yük dengeleyicidir. Cloud DNS yalnızca coğrafi konuma dayalı yedekleme hedeflerini destekler. Yedekleme grubu, hem REGION_1 hem de REGION_2 için hedef olarak REGION_2 yük dengeleyicinin kullanıldığı bir coğrafi konum politikasıdır. Cloud Shell'de aşağıdaki komutları çalıştırın:
Command
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
Çıkış örneği
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. DNS çözümlemeyi test etme
Yedek devretme kurulumumuzu test etmeden önce her iki dahili yük dengeleyicinin IP adreslerini not edelim. Cloud Shell'de aşağıdaki komutları çalıştırın.
Command
gcloud compute forwarding-rules list --filter="name:($REGION_1-ilb $REGION_2-ilb)"
Çıkış örneği
Bu örnekte, us-west1-ilb IP adresi 10.1.0.4, us-east4-ilb IP adresi ise 10.2.0.3'tür.
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
Şimdi istemci örneğine giriş yapıp DNS çözümlemesini test edeceğiz. Web konsolunda "Compute Engine | VM Instances"a (Compute Engine | Sanal Makine Örnekleri) gidin.

Konsoldan client-instance'a giriş yapmak için SSH düğmesini tıklayın.

Artık istemci sanal makinesindeyken dig alan adını çözümlemek için failover.example.com komutunu kullanın.
Döngü, komutu 6 saniyelik uyku modu zamanlayıcısıyla on kez çalıştıracak şekilde yapılandırılmıştır.
Command
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
DNS kaydındaki TTL 5 saniye olarak ayarlandığından 6 saniyelik bir uyku modu zamanlayıcı eklenmiştir. Uyku modu zamanlayıcı, her DNS isteği için önbelleğe alınmamış bir DNS yanıtı almanızı sağlar. Bu komutun yürütülmesi yaklaşık bir dakika sürer.
Çıkışta, kaynak kaydının birincil kümesinde yük dengeleyicinin IP adresini görürsünüz. Kurulumumuzda bu, us-west1 bölgesindeki yük dengeleyicinin IP'si olacaktır.
11. Yük devretmeyi test etme
REGION_1 VM'sinden ağ etiketini kaldırarak yük devretmeyi simüle edeceğiz. Bu işlem, 80 numaralı bağlantı noktasına erişimi engeller ve sonuç olarak durum denetimleri başarısız olmaya başlar.
Ağ etiketini kaldırma
Ağ etiketini sanal makineden kaldırmak için gcloud compute instances remove-tags komutunu kullanın. Cloud Shell'de aşağıdaki komutu çalıştırın:
Command
gcloud compute instances remove-tags $REGION_1-instance \ --zone=$REGION_1_ZONE --tags=allow-http
Durum denetimi 10 saniye içinde başarısız olur. DNS çözümleme testini tekrar çalıştırın.
DNS Çözümlemesi
İstemci örneğinden aşağıdaki komutu çalıştırın
Command
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
Çıkışta, kaynak kaydının yedek kümesindeki yük dengeleyicinin IP adresini görürsünüz. Kurulumumuzda bu, us-east4 bölgesindeki yük dengeleyicinin IP'si olacaktır.
12. Test trafiği sızdırması
Yük devretme politikası, varsayılan olarak tüm DNS istekleri için birincil uç nokta IP'sini döndürür ve yalnızca birincil uç nokta durum kontrollerinde başarısız olursa yedek IP'leri döndürür. Cloud DNS, kullanıcıların Trickle Ratio'yu yapılandırmasına olanak tanır. Bu sayede Cloud DNS, birincil hedefler sağlıklı olsa bile trafiğin bir kısmını yedek hedeflere gönderebilir. Oran, 0 ile 1 arasında bir değer olmalıdır. Varsayılan değer 0'dır.
Bunu test etmek için ağ etiketini REGION_1 web sunucusuna tekrar ekleyelim.
Ağ Etiketi Ekleme
http trafiğinin birincil bölge VM'sine izin vermek için etiketi Web Sunucusu VM'sine geri ekleyin. Cloud Shell'de aşağıdaki komutu çalıştırın.
Command
gcloud compute instances add-tags $REGION_1-instance \ --zone $REGION_1_ZONE --tags allow-http
Durum denetimleri 10 saniye içinde başarılı olur.
DNS çözümlemesinin birincil yük dengeleyiciye yönlendirdiğini doğrulayın. Kurulumumuzda bu, us-west1 bölgesindeki yük dengeleyicinin IP adresi olacaktır.
İstemci örneğinden aşağıdaki komutu çalıştırın
Command
dig +short failover.example.com
DNS kaydını güncelleme
Şimdi, birincil sağlıklı olsa bile trafiğin% 30'unu yedek kümeye yönlendirmek için failover.example.com alanının DNS kaydını değiştireceğiz. Cloud Shell'de aşağıdaki komutu çalıştırın:
Command
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
DNS Çözümlemesi
Aşağıdaki komutu istemci sanal makinesinden çalıştırın. DNS kaydının failover.example.com yaklaşık% 70 oranında birincil yük dengeleyici IP'sine, yaklaşık% 30 oranında ise yedek yük dengeleyici IP'sine çözümlendiğini görürsünüz.
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
13. Temizleme adımları
Bu laboratuvarda kullanılan kaynakları temizlemek için Cloud Shell'de aşağıdaki komutları çalıştırın.
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. Tebrikler
Tebrikler, Cloud DNS yük devretme yönlendirme politikasını başarıyla dağıtıp test ettiniz.
İşlediğimiz konular
- Cloud DNS yük devretme yönlendirme politikasını yapılandırma
- DNS yük devretmesini test etme
- Trafiği yedek kümeye kademeli olarak yönlendirme
Yapabilecekleriniz
- Etkin ve yedek kümeler için birden fazla IP ayarlamayı deneyin.
- Yönetilmeyen örnek gruplarınıza birden fazla arka uç sanal makinesi eklemeyi deneyin.
- Yedek kümedeki coğrafi konum politikası için farklı bölgelerde birden fazla yük dengeleyici ayarlamayı deneyin.
Daha fazla bilgi
https://cloud.google.com/dns/docs/zones/manage-routing-policies