Dahili TCP/UDP Yük Dengeleyici için Cloud DNS Yönlendirme Politikaları ve Durum Denetimleri kullanılarak çok bölgeli yük devretme

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:

d0a91d3d3698f544.png

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

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • 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.
  1. 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:

55efc1aaa7a4d3ad.png

Ortamı sağlamak ve bağlamak yalnızca birkaç dakika sürer. Tamamlandığında şuna benzer bir sonuç görmeniz gerekir:

7ffe5cbb04455448

İ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

  1. SDK sürümü 401.0.0 veya sonraki bir sürümse sonraki bölüme geçin.
  2. 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

5c824940bf414501.png

Konsoldan istemci örneğine giriş yapmak için SSH düğmesini tıklayın.

b916eb32c60a4156.png

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