1. Giriş
Son güncelleme tarihi: 22.09.2022
DNS yönlendirme politikası nedir?
Cloud DNS yönlendirme politikaları, kullanıcıların ağırlık, coğrafi konum veya durum denetimleri gibi belirli ölçütlere bağlı olarak DNS tabanlı trafik yönlendirmesini yapılandırmasına olanak tanır.
Cloud DNS, aşağıdaki yönlendirme politikalarını destekler:
- Ağırlıklı sıralı rota yönlendirme politikası
- Coğrafi konum yönlendirme politikası
- Coğrafi sınır çizilmiş 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, genel erişim etkin olan Dahili TCP/UDP Yük Dengeleyiciler için durum denetimlerini destekler. Yük devretme yönlendirme politikası ile kaynak kaydı için birincil ve yedek IP'leri yapılandırabilirsiniz. Normal çalışmada Cloud DNS, birincil grupta sağlanan IP adresleriyle sorgulara yanıt verir. Birincil kümedeki tüm IP adresleri başarısız olduğunda (durum durumu kötü olarak değişirse) Cloud DNS, yedekleme grubundaki IP adreslerini sunmaya başlar.
Durum denetimleri
DNS yönlendirme politikası, yerel Dahili Yük Dengeleyici birleştirilmiş durum denetimlerine(UHC) bağlı olacaktır. Arka uçlarının %20'si (veya daha fazlası) iyiyse Dahili Yük Dengeleyici'nin iyi olduğu kabul edilir. Dahili TCP/UDP ve Dahili HTTP(S) yük dengeleyicilerinin durum denetimleri farklı bilgiler sağlar. UHC, dahili HTTP(S) yük dengeleyici için tüm Envoy proxy'lerinin durum durumunu belirtirken dahili TCP/UDP yük dengeleyici için Cloud DNS tek tek arka uç örneklerinden doğrudan sağlık sinyalleri alır. Durum denetimlerinin ayrıntılarına buradan ulaşabilirsiniz .
Oluşturacaklarınız
Bu Codelab'de, 2 bölgede çalışan bir web sitesi oluşturacaksınız ve bu web sitesine bir yük devretme DNS yönlendirme politikası ilişkilendireceksiniz. Kurulumda şunlara sahip olursunuz:
Etkin kaynaklar -
- REGION_1 bölgesinde L4 Dahili Yük Dengeleyici
- REGION_1 bölgesinde Apache web sunucusunu çalıştıran bir sanal makine
Yedek kaynaklar -
- REGION_2 bölgesinde L4 Dahili Yük Dengeleyici
- REGION_2 bölgesinde Apache web sunucusunu çalıştıran bir sanal makine
Kurulum aşağıdaki gibidir:
Neler öğreneceksiniz?
- Yük devretme yönlendirme politikası oluşturma
- DNS yük devretmeyi tetikle
- Trafiği yedek kümesine yönlendirme
Gerekenler
- Temel DNS bilgileri
- Google Compute Engine ile ilgili temel bilgiler
- L4 Dahili Yük Dengeleyici ile ilgili temel bilgiler
2. Kurulum ve Gereksinimler
- Google Cloud Console'da oturum açıp 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. İstediğiniz zaman güncelleyebilirsiniz.
- Proje Kimliği, tüm Google Cloud projelerinde benzersiz olmalıdır ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de proje kimliğini (genellikle
PROJECT_ID
olarak tanımlanır) referans almanız gerekir. Oluşturulan kimliği beğenmezseniz rastgele bir kimlik daha oluşturabilirsiniz. Alternatif olarak, kendi ölçümünüzü deneyip mevcut olup olmadığına bakabilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince kalır. - Bilginiz için bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
- Sonraki adımda, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırma yapılmaması için kaynakları kapatmak isterseniz oluşturduğunuz kaynakları silebilir veya projenin tamamını silebilirsiniz. Yeni Google Cloud kullanıcıları, 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.
Cloud Shell'i Başlatma
Google Cloud dizüstü bilgisayarınızdan uzaktan çalıştırılabilse de 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 bulunan Cloud Shell simgesini tıklayın:
Ortamı sağlamak ve bağlamak yalnızca birkaç dakika sürer. Tamamlandığında şuna benzer bir sonuç görmeniz gerekir:
İhtiyacınız olan tüm geliştirme araçlarını bu sanal makinede bulabilirsiniz. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Bu codelab'deki tüm çalışmalarınız tarayıcıda yapılabilir. Herhangi bir şey yüklemeniz gerekmez.
3. Google Cloud SDK sürümü
Yazma sırasında 401.0.0
, Google Cloud SDK'nın en son sürümüdür. 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 son 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
Komut
gcloud version | grep "Google Cloud SDK"
Çıkış Örneği
Google Cloud SDK 401.0.0
Sonraki Adımlar
- SDK sürümü
401.0.0
veya sonraki bir sürümse sonraki bölüme geçin. - SDK sürümü
401.0.0
sürümünden düşükse aşağıdaki komutu çalıştırarak SDK'yı güncelleyin.
İ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 yapılandırıldığından ve gerekli tüm API'lerin etkinleştirildiğinden emin olalım.
Proje kimliği oluşturun
Cloud Shell'in içinde proje kimliğinizin ayarlandığından emin olun. Cloud Shell isteminiz aşağıdaki çıkışa benziyorsa ve proje kimliğini değiştirmeyi planlamıyorsanız sonraki adıma (Ortam Değişkenleri Ayarlama) atlayabilirsiniz.
USER@cloudshell:~ (PROJECT_ID)$
Yine de proje kimliğini değiştirmek istiyorsanız aşağıda listelenen komutu kullanın. (PROJECT_ID)
olan Cloud Shell istemi (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şkenleri'ni 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ıktan sonra echo
komutunu kullanarak doğrulama işlemini gerçekleştirelim. Her komutun çıkışı, export
komutunu kullanarak yukarıda yapılandırdığımız 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ştirme
Komut
gcloud services enable compute.googleapis.com
DNS API'yi etkinleştirme
Komut
gcloud services enable dns.googleapis.com
Doğrula
Hizmetleri etkinleştirdiğinize göre gcloud services list
komutunu kullanarak etkinleştirilmiş tüm API'leri listelemek istediğinizi doğrulayalım.
Komut
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 adet) 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. 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.
Komut
gcloud compute networks create my-vpc --subnet-mode custom
Alt Ağ Oluşturma
Biri REGION_1, diğeri REGION_2 bölgesinde 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ğı
Komut
gcloud compute networks subnets create ${REGION_1}-subnet \ --network my-vpc \ --range 10.1.0.0/24 \ --region $REGION_1
REGION_2 alt ağı
Komut
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 bağlantı noktası 80'de trafiğe izin vermeniz gerekir.
Buna ek olarak, istemci sanal makinelerde SSH trafiğine izin vermek için bir güvenlik duvarı kuralı oluşturmanız da 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ındaki Trafiğe izin ver
Komut
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 ver
Komut
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ştur
Ö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 indirip yüklemesi gerekir.
- İstemci sanal makinesinin, testimiz için kullanacağımız dnsutils paketini indirip yüklemesi gerekir.
Her Cloud NAT ağ geçidi tek bir VPC ağı, bölge ve Cloud Yönlendirici ile ilişkilendirilir. Bu nedenle, NAT ağ geçitlerini oluşturmadan önce her bölgede Cloud Yönlendiricileri oluşturmamız gerekiyor.
Cloud Yönlendiricileri oluşturma
us-west1 ve us-east4 bölgelerinde Cloud Yönlendiricileri oluşturmak için gcloud compute routers create
komutunu kullanın. Cloud Shell'de aşağıdaki komutları çalıştırın.
Bölge_1 Bulut Yönlendiricisi
Komutlar
gcloud compute routers create "${REGION_1}-cloudrouter" \ --region $REGION_1 --network=my-vpc --asn=65501
Bölge_2 Bulut Yönlendiricisi
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çitlerini 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 Ağ Geçidi
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 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 sanal makinesini oluşturacaksınız.
Web sunucusu sanal makineleri oluşturma
Web sunucularını oluşturmak için gcloud compute instances create
komutunu kullanın. Biri REGION_1, diğeri REGION_2 bölgesinde olmak üzere iki web sunucusu oluşturmamız gerekir. Web sunucularına Apache'yi yüklemek ve yapılandırmak için başlangıç komut dosyaları kullanıyoruz.
REGION_1 Web Sunucusu
Cloud Shell'de aşağıdaki komutu çalıştırın
Komut
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 Sunucusu
Cloud Shell'de aşağıdaki komutu çalıştırın
Komut
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, yönetilmeyen iki örnek grubu oluştururuz. ILB arka uç hizmetlerini yapılandırmak için bir sonraki bölümde bu örnek gruplarını kullanacağız. Örnek grupları oluşturulduktan sonra bu örnek gruplarına web sunucusu sanal makineleri eklenir.
Yönetilmeyen Örnek Gruplarını Oluşturma
Biri us-west1 web sunucusu, diğeri us-east4 web sunucusu için olmak üzere iki yönetilmeyen örnek grubu oluşturmak için gcloud compute instance-groups unmanaged create
komutunu kullanın.
Bölge_1 Örnek Grubu
Komutlar
gcloud compute instance-groups unmanaged create \ "${REGION_1}-instance-group" --zone=$REGION_1_ZONE
Bölge_2 Örnek Grubu
Komutlar
gcloud compute instance-groups unmanaged create \ "${REGION_2}-instance-group" --zone=$REGION_2_ZONE
Örnek Gruplarına sanal makine ekleme
Örnekleri az önce 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 REGION_2 örnek grubuna ekleyin
Bölge_1 Örnek Grubu
Komutlar
gcloud compute instance-groups unmanaged add-instances \ "${REGION_1}-instance-group" --instances $REGION_1-instance \ --zone=$REGION_1_ZONE
Bölge_2 Örnek Grubu
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
Testleri çalıştırmak ve DNS yapılandırmamızı doğrulamak için bu sanal makineyi 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.
Komut
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 oluşturmak için bir durum denetimi, arka uç hizmeti ve bir iletim 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. Hedef bağlantı noktası bağlantı noktası 80'dir. Cloud Shell'de aşağıdaki komutları çalıştırın
Komut
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ını 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ç Ekle
Komut
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 iletim kuralları 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 iletim 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ır
Bu bölümde, yük devretme yönlendirme politikasıyla birlikte bir özel alt bölge ve DNS kayıt kümesi oluşturacağız.
Gizli bir DNS alt bölgesi oluşturma
example.com için özel bir alt bölge oluşturmak istiyorsanız gcloud dns managed-zones create
komutunu kullanın. Bu alt bölgeyi, yük devretme yönlendirme politikasıyla birlikte 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 bölgesindeki yük dengeleyicidir. Cloud DNS yalnızca coğrafi konuma dayalı yedekleme hedeflerini destekler. Yedekleme kümesi, hem REGION_1 hem de REGION_2 için hedef olarak REGION_2 yük dengeleyiciyi içeren bir coğrafi konum politikasıdır. Cloud Shell'de aşağıdaki komutları çalıştırın
Komut
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ümlemesini test edin
Yük 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.
Komut
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
ise 10.2.0.3
IP adresine sahip
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 | Sanal Makine Örnekleri
Konsoldan istemci örneğine giriş yapmak için SSH düğmesini tıklayın.
Artık istemci sanal makinesinde olduğumuza göre failover.example.com
alan adını çözmek için dig
komutunu kullanın.
Döngü, 6 saniyelik uyku modu zamanlayıcıyla komutu on kez çalıştıracak şekilde yapılandırılmıştır.
Komut
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 uyku modu zamanlayıcı eklendi. Uyku modu zamanlayıcı, her DNS isteği için önbelleğe alınmamış 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 grubundaki 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 et
Ağ etiketini REGION_1 sanal makinesinden kaldırarak yük devretme simülasyonu yapacağız. Bu işlem, bağlantı noktası 80'e erişimi engeller ve bunun sonucunda durum denetimleri başarısız olmaya başlar.
Ağ Etiketini kaldırma
Sanal makineden ağ etiketini kaldırmak için gcloud compute instances remove-tags
komutunu kullanın. Cloud Shell'de aşağıdaki komutu çalıştırın
Komut
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 olacak. DNS çözümleme testini tekrar çalıştırın.
DNS Çözümlemesi
İstemci örneğinde aşağıdaki komutu çalıştırın
Komut
for i in {1..10}; do echo $i; dig failover.example.com +short; sleep 6; done
Çıkışta, kaynak kaydının yedek kümesinde yük dengeleyicinin IP adresini görürsünüz. Kurulumumuzda bu, us-east4 bölgesindeki yük dengeleyicinin IP'si olacaktır.
12. Trafiğin dağınıklığını test et
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, durum denetimlerinde 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 iyi durumda olsa bile trafiğin bir kısmını yedek hedeflere gönderebilir. Değer, 0
ile 1
arasında bir değer olmalıdır. Varsayılan değer: 0
Bunu test etmek için ağ etiketini REGION_1 web sunucusuna tekrar ekleyelim.
Ağ Etiketi Ekle
Birincil bölge sanal makinesine http trafiğine izin vermek için etiketi Web Sunucusu sanal makinesine tekrar ekleyin. Cloud Shell'de aşağıdaki komutu çalıştırın.
Komut
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 işaret ettiğini doğrulayın. Kurulumumuzda bu, us-west1 bölgesindeki yük dengeleyicinin IP adresi olacaktır.
İstemci örneğinde aşağıdaki komutu çalıştırın
Komut
dig +short failover.example.com
DNS Kaydını güncelleme
Şimdi, birincil grup iyi olsa bile failover.example.com
için DNS kaydını, trafiğin% 30'unu yedek kümeye yönlendirecek şekilde değiştireceğiz. Cloud Shell'de aşağıdaki komutu çalıştırın
Komut
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
İstemci sanal makinesinden aşağıdaki komutu çalıştırın. failover.example.com
DNS kaydının, yaklaşık olarak birincil yük dengeleyici IP'sine çözümleneceğini göreceksiniz. %70 oranında yedek yük dengeleyici IP'sine %30 oranında.
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 CloudShell'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ğıttınız ve test ettiniz
İşlediklerimiz
- Cloud DNS yük devretme yönlendirme politikasını yapılandırma
- DNS yük devretmeyi test et
- Yedekleme kümesine trafik akışı nasıl yapılır?
Sırada ne var?
- Etkin ve yedek gruplar için birden fazla IP oluşturmayı deneyin.
- Yönetilmeyen örnek gruplarınıza birden çok arka uç sanal makinesi eklemeyi deneyin
- Yedek kümedeki coğrafi konum politikası için farklı bölgelerde birden çok yük dengeleyici oluşturmayı deneyin.
Daha fazla bilgi
https://cloud.google.com/dns/docs/zones/manage-routing-policies