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: 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:

d0a91d3d3698f544.png

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

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

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. 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_ID olarak 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.
  1. 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:

55efc1aaa7a4d3ad.png

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:

7ffe5cbb04455448.png

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

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

5c824940bf414501.png

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

b916eb32c60a4156.png

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