Gelişmiş Trafik Yönetimi (Envoy) Codelab'i ile Harici HTTPs LB

1. Giriş

Gelişmiş Trafik Yönetimi (Envoy) ile Harici HTTPs LB Codelab'ine hoş geldiniz.

Gelişmiş Trafik Yönetimi özellikli HTTP(S) Harici Yük Dengeleyici'nin en yeni sürümü, mevcut klasik global harici HTTP(S) yük dengeleyicimizin tüm özelliklerini içerir ancak Gelişmiş Trafik Yönetimi özelliklerinin sayısı sürekli artmaktadır. Bu özelliklerden bazıları yük dengeleyicilerimizde yeni, bazıları ise mevcut özelliklere gelişmiş işlevler sunar. Bu özelliklerden bazıları:

  • Ağırlıklı Trafiği Bölme
  • Yansıtma isteğinde bulunma
  • Aykırı Değer Algılama
  • Yeniden Deneme İsteği
  • Hata ekleme
  • Ek arka uç oturum benzeşimi seçenekleri
  • Ek başlık dönüştürme seçenekleri
  • Merkezler Arası Kaynak Paylaşımı (CORS)
  • Yeni Yük Dengeleme Algoritmaları

Neler öğreneceksiniz?

  • Yönetilen örnek grubu ve ilişkili VPC ile güvenlik duvarı kurallarını ayarlama
  • Yeni yük dengeleyicinin gelişmiş trafik yönetimi özelliklerini kullanma
  • Gelişmiş trafik yönetimi özelliklerinin beklendiği gibi çalıştığını doğrulama

Gerekenler

  • Temel ağ iletişimi ve HTTP bilgisi
  • Temel düzeyde Unix/Linux komut satırı bilgisi

Codelab topolojisi ve kullanım alanı

dd8bd5e8e1341878.png

Şekil 1: HTTP yük dengeleyici yönlendirme topolojisi

Bu kod laboratuvarı sırasında, biri Doğu, biri Batı ve biri Merkez'de olmak üzere üç yönetilen örnek grubu oluşturacaksınız. Global harici HTTPS yük dengeleyici oluşturacaksınız. Yük dengeleyici, Envoy tabanlı yük dengeleyicinin desteklediği gelişmiş özellikler listesindeki çeşitli özelliklerden yararlanır. Dağıtım tamamlandıktan sonra, bazı simüle edilmiş yükler oluşturup ayarladığınız yapılandırmaların uygun şekilde çalıştığını doğrulayacaksınız.

2. Kurulum ve Gereksinimler

Kendi hızınızda ortam kurulumu

  1. Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Henüz bir Gmail veya Google Workspace hesabınız yoksa oluşturmanız gerekir.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.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. Bu bilgiyi istediğiniz zaman güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir 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ğinize (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ım tamamlandıktan 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ırılmayı önlemek için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud 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 sağlanması ve bağlantının kurulması yalnızca birkaç saniye sürer. İş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 iyileştirilir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Herhangi bir şey yüklemeniz gerekmez.

Başlamadan önce

Cloud Shell'de proje kimliğinizin ayarlandığından emin olun.

gcloud config list project

gcloud config set project [YOUR-PROJECT-NAME]

PROJECT_ID=[YOUR-PROJECT-NAME]

echo $PROJECT_ID

API'leri etkinleştirme

Gerekli tüm hizmetleri etkinleştirin

gcloud services enable compute.googleapis.com
gcloud services enable logging.googleapis.com
gcloud services enable monitoring.googleapis.com

3. VPC ağını oluşturma

VPC ağı oluşturma

Cloud Shell'den

gcloud compute networks create httplbs --subnet-mode=auto

Çıkış

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/httplbs].
NAME: httplbs
SUBNET_MODE: AUTO
BGP_ROUTING_MODE: REGIONAL
IPV4_RANGE:
GATEWAY_IPV4:

VPC güvenlik duvarı kuralları oluşturma

VPC'yi oluşturduktan sonra güvenlik duvarı kuralları oluşturacaksınız. Güvenlik duvarı kuralı, tüm IP'lerin http trafiği için 80 numaralı bağlantı noktasında test uygulamasının web sitesinin harici IP'sine erişmesine izin vermek için kullanılır.

Cloud Shell'den

gcloud compute firewall-rules create httplb-allow-http-rule \
--allow tcp:80 \
--network httplbs \
--source-ranges 0.0.0.0/0 \
--priority 700

Çıkış

Creating firewall...working..Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/httplb-allow-http-rule].
Creating firewall...done.
NAME: httplb-allow-http-rule
NETWORK: httplbs
DIRECTION: INGRESS
PRIORITY: 700
ALLOW: tcp:80
DENY:
DISABLED: False

4. Yönetilen örnek gruplarını ayarlama

HTTP yük dengeleyici tarafından kullanılan arka uç kaynaklarının kalıplarını içeren yönetilen örnek grupları oluşturmanız gerekir. İlk olarak, her bölge için oluşturulacak sanal makinelerin yapılandırmasını tanımlayan örnek şablonları oluşturacağız. Ardından, her bölgedeki bir arka uç için bir örnek şablonuna referans veren bir yönetilen örnek grubu oluşturacağız.

Yönetilen örnek grupları, kapsam olarak alt bölgesel veya bölgesel olabilir. Bu laboratuvar alıştırmasında üç bölgesel yönetilen örnek grubu oluşturacağız: biri us-east1, biri us-west1 ve biri de us-central1'de.

Bu bölümde, örnek oluşturulurken referans alınacak önceden oluşturulmuş bir başlangıç komut dosyası görebilirsiniz. Bu başlangıç komut dosyası, web uygulaması simüle etmek için kullanacağımız web sunucusu özelliklerini yükleyip etkinleştirir. Bu komut dosyasını inceleyebilirsiniz.

Doğu, Batı ve Merkez Örnek Şablonlarını Oluşturma

İlk adım, us-east-1 örnek şablonunu oluşturmaktır.

Cloud Shell'den

gcloud compute instance-templates create us-east1-template \
   --region=us-east1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-12 \
   --image-project=debian-cloud \
   --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'

Çıkış

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-east1-template].
NAME: us-east1-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2021-11-11T11:02:37.511-08:00

Bir sonraki adım, us-west-1 örnek şablonunu oluşturmaktır.

Cloud Shell'den

gcloud compute instance-templates create us-west1-template \
   --region=us-west1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-12 \
   --image-project=debian-cloud \
   --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'

Çıkış

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-west1-template].
NAME: us-west1-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2021-11-11T11:03:08.577-08:00

Bir sonraki adım, us-central-1 örnek şablonunu oluşturmaktır.

Cloud Shell'den

gcloud compute instance-templates create us-central1-template \
   --region=us-central1 \
   --network=httplbs \
   --tags=http-server, \
   --image-family=debian-12 \
   --image-project=debian-cloud \
   --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'

Çıkış

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates/us-central1-template].
NAME: us-central1-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2021-11-11T11:03:44.179-08:00

Artık aşağıdaki gcloud komutuyla örnek şablonlarımızın başarıyla oluşturulduğunu doğrulayabilirsiniz:

Cloud Shell'den

gcloud compute instance-templates list

Çıkış

NAME                  MACHINE_TYPE   PREEMPTIBLE  CREATION_TIMESTAMP
us-central1-template   n1-standard-1         2021-11-09T09:25:37.263-08:00
us-east1-template      n1-standard-1         2021-11-09T09:24:35.275-08:00
us-west1-template      n1-standard-1         2021-11-09T09:25:08.016-08:00

Doğu, Batı ve Merkez Yönetilen Örnek Gruplarını oluşturma

Şimdi daha önce oluşturduğumuz örnek şablonlarından bir yönetilen örnek grubu oluşturmamız gerekiyor.

Cloud Shell'den

gcloud compute instance-groups managed create us-east1-mig \
--base-instance-name=us-east1-mig \
--size=1 \
--template=us-east1-template \
--zone=us-east1-b 

Çıkış

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-east1-b/instanceGroupManagers/us-east1-mig].
NAME: us-east1-mig
LOCATION: us-east1-b
SCOPE: zone
BASE_INSTANCE_NAME: us-east1-mig
SIZE: 0
TARGET_SIZE: 1
INSTANCE_TEMPLATE: us-east1-template
AUTOSCALED: no

Cloud Shell'den

gcloud compute instance-groups managed create us-west1-mig \
--base-instance-name=us-west1-mig \
--size=1 \
--template=us-west1-template \
--zone=us-west1-a  

Çıkış

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroupManagers/us-west1-mig].
NAME: us-west1-mig
LOCATION: us-west1-a
SCOPE: zone
BASE_INSTANCE_NAME: us-west1-mig
SIZE: 0
TARGET_SIZE: 1
INSTANCE_TEMPLATE: us-west1-template
AUTOSCALED: no

Cloud Shell'den

gcloud compute instance-groups managed create us-central1-mig \
--base-instance-name=us-central1-mig \
--size=1 \
--template=us-central1-template \
--zone=us-central1-a 

Çıkış

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-central1-a/instanceGroupManagers/us-central1-mig].
NAME: us-central1-mig
LOCATION: us-central1-a
SCOPE: zone
BASE_INSTANCE_NAME: us-central1-mig
SIZE: 0
TARGET_SIZE: 1
INSTANCE_TEMPLATE: us-central1-template
AUTOSCALED: no

Aşağıdaki gcloud komutuyla örnek grubu oluşturma işleminin başarılı olduğunu doğrulayabiliriz:

Cloud Shell'den

gcloud compute instance-groups list

Çıkış

NAME                  LOCATION      SCOPE   NETWORK         MANAGED INSTANCES
us-central1-mig       us-central1   zone    httplbs          Yes      1
us-west1-mig          us-west1      zone    httplbs          Yes      1
us-east1-mig          us-east1      zone    httplbs          Yes      1

Web Sunucusu İşlevselliğini Doğrulama

Her örnek, aşağıdakileri oluşturmak için basit bir PHP komut dosyasıyla Apache web sunucusu çalıştıracak şekilde yapılandırılır:

c87ca81d3125ac61.png

Web sunucularınızın doğru şekilde çalıştığından emin olmak için Compute Engine -> VM instances'a (Sanal makine örnekleri) gidin. Yeni örneklerinizin (ör. us-east1-mig-xxx) örnek grubu tanımlarına göre oluşturulduğundan emin olun.

Şimdi, web sunucusunun çalıştığından emin olmak için tarayıcınızda web sunucusuna bir web isteği gönderin (bu işlemin başlaması bir dakika sürebilir). Compute Engine'in altındaki sanal makine örnekleri sayfasında, örnek grubunuz tarafından oluşturulan bir örneği seçin ve harici (herkese açık) IP'sini tıklayın.

Alternatif olarak, tarayıcınızda http://<IP_Address> adresine gidin.

5. Yük dengeleyiciyi ayarlama

Durum denetimi oluşturma

Öncelikle hizmetlerimizin sorunsuz bir şekilde çalıştığından emin olmak için temel bir durum denetimi oluşturmamız gerekir. Temel bir durum denetimi oluşturacağız. Daha birçok gelişmiş özelleştirme seçeneği mevcuttur.

Cloud Shell'den

gcloud compute health-checks create http http-basic-check \
    --port 80

Harici IP adresini ayırma

Bu adım için, daha sonra yük dengeleyiciye eklenecek olan genel olarak kullanılabilir bir statik IP adresi ayırmanız gerekir.

Cloud Shell'den

gcloud compute addresses create lb-ipv4-2 \
    --ip-version=IPV4 \
    --global

Ayrılmış IP adresini not etmeyi unutmayın.

gcloud compute addresses describe lb-ipv4-2 \
    --format="get(address)" \
    --global

Arka uç hizmetleri oluşturma

Şimdi daha önce oluşturduğumuz yönetilen örnek grupların her biri için bir arka uç hizmeti oluşturmamız gerekiyor. Doğu, Batı ve Merkez için birer tane.

Doğu yönetilen örnek grubu için arka uç hizmeti oluşturma.

Cloud Shell'den

gcloud compute backend-services create east-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

Batı yönetilen örnek grubu için arka uç hizmeti oluşturma.

Cloud Shell'den

gcloud compute backend-services create west-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

Merkezi yönetilen örnek grubu için arka uç hizmeti oluşturma.

Cloud Shell'den

gcloud compute backend-services create central-backend-service \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --protocol=HTTP \
    --port-name=http \
    --health-checks=http-basic-check \
    --global

Arka uç hizmetlerine MIG ekleme

Her uygulama kümesi için ilgili arka uç hizmetlerini oluşturduğumuza göre, daha önce oluşturduğumuz yönetilen örnek gruplarını her arka uç hizmetine eklememiz gerekir.

Doğu MIG'sini arka uç hizmetine ekleyin.

Cloud Shell'den

gcloud compute backend-services add-backend east-backend-service \
    --balancing-mode='UTILIZATION' \
    --instance-group=us-east1-mig \
    --instance-group-zone=us-east1-b \
    --global

Batı MIG'yi arka uç hizmetine ekleyin.

Cloud Shell'den

gcloud compute backend-services add-backend west-backend-service \
    --balancing-mode='UTILIZATION' \
    --instance-group=us-west1-mig \
    --instance-group-zone=us-west1-a \
    --global

Merkezi MIG'yi arka uç hizmetine ekleyin.

Cloud Shell'den

gcloud compute backend-services add-backend central-backend-service \
    --balancing-mode='UTILIZATION' \
    --instance-group=us-central1-mig \
    --instance-group-zone=us-central1-a \
    --global

URL haritası oluşturma

URL haritası, bu laboratuvarın gelişmiş trafik yönetimi özelliklerinin bulunduğu yerdir. Yapılandırmayı içerecek bir .yaml dosyası oluşturmamız gerekir. Oluşturduğumuz .yaml dosyasında /roundrobbin üzerinde bir önek eşleşmesi oluşturduk. Bu nedenle, bu yapılandırmalardan yalnızca /roundrobbin ile eşleşen trafik etkilenir. Trafiğin% 50'sinin east-backend-service'e, %50'sinin ise west-backend-service'e gitmesi gerektiğini belirttik. Ayrıca, tüm yanıtlarda yer alacak bir yanıt başlığı değeri ekledik:{test}. Son olarak, tüm trafiğin merkezi arka uç hizmetine yansıtılması gerektiğini ekledik. Trafik, yalnızca test amacıyla kopyalanır ve buraya gönderilir.

Örneği makinenize .yaml dosyası olarak kaydedin.

defaultService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service
kind: compute #urlMap
name: web-map-http
hostRules:
- hosts:
  - '*'
  pathMatcher: matcher1
pathMatchers:
- defaultService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service
  name: matcher1
  routeRules:
  - matchRules:
    - prefixMatch: /roundrobbin
    priority: 2
    headerAction:
        responseHeadersToAdd:
          - headerName: test
            headerValue: value
            replace: True
    routeAction:
        weightedBackendServices:
        - backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/east-backend-service
          weight: 50
        - backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/west-backend-service
          weight: 50
        retryPolicy:
            retryConditions: ['502', '504']
            numRetries: 3
            perTryTimeout:
                seconds: 1
                nanos: 50
        requestMirrorPolicy:
          backendService: https://www.googleapis.com/compute/v1/projects/[project_id]/global/backendServices/central-backend-service

Makinenizdeki dokümanı içe aktararak URL eşlemesini oluşturun. .yaml dosyasını nereye kaydettiğinize bağlı olarak kaynak yolunun farklı olacağını unutmayın.

Cloud Shell'den

gcloud compute url-maps import web-map-http \
   --source /Users/[USERNAME]/Documents/Codelab/lbconfig.yaml \
   --global

HTTP ön ucu oluşturma

Yük dengeleyici oluşturmanın son adımı, ön ucu oluşturmaktır. Bu işlem, daha önce ayırdığınız IP adresini oluşturduğunuz yük dengeleyici URL eşlemesiyle eşler.

Cloud Shell'den

gcloud compute target-http-proxies create http-lb-proxy-adv \
    --url-map=web-map-http

Ardından, daha önce ayrılan IP adresini HTTP proxy'siyle eşleyecek bir genel iletim kuralı oluşturmanız gerekir.

Cloud Shell'den

gcloud compute forwarding-rules create http-content-rule \
    --load-balancing-scheme EXTERNAL_MANAGED \
    --address=lb-ipv4-2 \
    --global \
    --target-http-proxy=http-lb-proxy-adv \
    --ports=80

6. Gelişmiş trafik özelliklerinin çalıştığını doğrulama

Uygulanan trafik bölme özelliğinin çalıştığını doğrulamak için biraz yük oluşturmanız gerekir. Bunu yapmak için yükü simüle edecek yeni bir sanal makine oluşturacağız.

SSH'ye izin verme güvenlik duvarı kuralı oluşturma

Trafik oluşturacağımız sanal makineye SSH uygulamak için öncelikle SSH trafiğinin sanal makineye ulaşmasına izin veren bir güvenlik duvarı kuralı oluşturmanız gerekir.

Cloud Shell'den

gcloud compute firewall-rules create fw-allow-ssh \
    --network=httplbs \
    --action=allow \
    --direction=ingress \
    --target-tags=allow-ssh \
    --rules=tcp:22

Çıkış

NAME          NETWORK  DIRECTION  PRIORITY  ALLOW   DENY  DISABLED
fw-allow-ssh  httplbs  INGRESS    1000      tcp:22        False

Siege-vm oluşturma

Şimdi yük oluşturmak için kullanacağınız siege-vm'yi oluşturacaksınız.

Cloud Shell'den

gcloud compute instances create siege-vm \
    --network=httplbs \
    --zone=us-east4-c \
    --machine-type=e2-medium \
    --tags=allow-ssh,http-server \
    --metadata=startup-script='sudo apt-get -y install siege'

Çıkış

NAME     ZONE        MACHINE_TYPE INTERNAL_IP  EXTERNAL_IP    STATUS
siege-vm us-east4-c  e2-medium    10.150.0.3   34.85.218.119  RUNNING

Ardından, oluşturduğunuz sanal makineye SSH bağlantısı oluşturabilirsiniz. Oluşturulduktan sonra SSH'yi tıklayarak bir terminal açıp bağlanın.

Bağlandıktan sonra yük oluşturmak için aşağıdaki komutu çalıştırın. Harici HTTP yük dengeleyici için daha önce ayırdığınız IP adresini kullanın.

Cloud Shell'den

siege -c 250 http://[$lb-ipv4-2]/roundrobbin

Çıkış

New configuration template added to /home/cloudcurriculumdeveloper/.siege
Run siege -C to view the current settings in that file
[alert] Zip encoding disabled; siege requires zlib support to enable it: No such file or directory
** SIEGE 4.0.2
** Preparing 250 concurrent users for battle.
The server is now under siege...

Yük Dağılımını Kontrol Etme

Siege çalışmaya başladığına göre, trafiğin doğu ve batı yönetilen örnek gruplarına eşit olarak dağıtıldığını kontrol etme zamanı geldi. Ayrıca, trafik yansıtmanın çalıştığını ve trafiğin merkezi yönetilen örnek grubuna gönderildiğini de kontrol edebilirsiniz.

Cloud Console'daki gezinme menüsünde Ağ Hizmetleri > Yük dengeleme'yi tıklayın. web-map-http yük dengeleyicisini seçin. İzleme sekmesine gidin. Aşağıdaki grafiği görebilirsiniz.

f4d6803db44be253.png

Bu MIG'ye yönelik trafik bölme işlemini gerçek zamanlı olarak görebilirsiniz. 50/50 sıralı trafik yükü yapılandırdığınız için trafik eşit olarak bölünür.

Oluşturduğunuz trafik yansıtma politikasının çalıştığını kontrol etmek için central-backend-service adlı yönetilen örnek grubunun kullanımını kontrol etmeniz gerekir. Bunu yapmak için sırasıyla Compute, Compute Engine, Instance Groups'a gidin ve us-central1-mig'i seçin. Ardından izleme sekmesine gidin.

cf25e44d511529e7.png

Trafiğin bu yönetilen örnek grubuna yansıtıldığını gösteren grafikler görürsünüz.

Stop the Siege

Gelişmiş trafik bölme özelliğinin çalıştığını gösterdiğinize göre artık kuşatmayı durdurma zamanı. Bunu yapmak için siege-vm SSH terminaline dönün ve çalışan siege'i durdurmak için CTRL+C tuşlarına basın.

Gönderilen Yanıt Üstbilgisini Doğrulama

Temizleme işleminden önce, uygun yanıt başlığının HTTP yük dengeleyici tarafından gönderildiğini hızlıca doğrulayabilirsiniz. Başlık testini içerik değeriyle gönderecek şekilde yapılandırmışsınızdır. Cloud Shell'den curl komutunu çalıştırmak, beklenen yanıtı verir.

Cloud Shell'den

curl -svo /dev/null http://lb-ipv4-2/roundrobbin

Çıkış

*   Trying lb-ipv4-2..
* TCP_NODELAY set
* Connected to  lb-ipv4-2 ( lb-ipv4-2) port 80 (#0)
> GET /roundrobbin HTTP/1.1
> Host:  lb-ipv4-2
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 404 Not Found
< date: Wed, 10 Nov 2021 17:05:27 GMT
< server: envoy
< Content-Length: 273
< content-type: text/html; charset=iso-8859-1
< via: 1.1 google
< test: value
<
{ [273 bytes data]
* Connection #0 to host 34.149.2.26 left intact
* Closing connection 0

7. Laboratuvar temizliği

Laboratuvar ortamıyla işimiz bittiğine göre artık bu ortamı kapatabiliriz. Test ortamını silmek için lütfen aşağıdaki komutları çalıştırın.

Cloud Shell'den

gcloud compute instances delete siege-vm --zone=us-east4-c

gcloud compute forwarding-rules delete http-content-rule --global
gcloud compute target-http-proxies delete http-lb-proxy-adv
gcloud compute url-maps delete web-map-http
gcloud compute backend-services delete east-backend-service --global
gcloud compute backend-services delete west-backend-service --global
gcloud compute backend-services delete central-backend-service --global

gcloud compute addresses delete lb-ipv4-2 --global
gcloud compute health-checks delete http-basic-check 

gcloud compute instance-groups managed delete us-east1-mig --zone us-east1-b
gcloud compute instance-groups managed delete us-west1-mig --zone us-west1-a
gcloud compute instance-groups managed delete us-central1-mig --zone us-central1-a

gcloud compute instance-templates delete "us-east1-template" 
gcloud compute instance-templates delete "us-west1-template" 
gcloud compute instance-templates delete "us-central1-template" 

gcloud compute firewall-rules delete httplb-allow-http-rule
gcloud compute firewall-rules delete fw-allow-ssh

gcloud compute networks delete httplbs 

8. Tebrikler!

Gelişmiş Trafik Yönetimi (Envoy) ile Harici HTTPS LB Codelab'ini tamamladınız.

İşlediğimiz konular

  • Yönetilen örnek grubu ve ilişkili VPC ile güvenlik duvarı kurallarını ayarlama
  • Yeni yük dengeleyicinin gelişmiş trafik yönetimi özelliklerini kullanma
  • Gelişmiş trafik yönetimi özelliklerinin beklendiği gibi çalıştığını doğrulama

Sonraki adımlar

  • URL yeniden yazma, CORS başlıkları ekleme gibi diğer gelişmiş yönlendirme özelliklerini deneyin ( bağlantı).