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

1. Giriş

Gelişmiş Trafik Yönetimi (Envoy) ile Harici HTTPs LB'ye hoş geldiniz!

HTTP(S) Harici Yük Dengeleyici'nin Gelişmiş Trafik Yönetimi içeren en son sürümü, mevcut Klasik Küresel Harici HTTP(S) Yük Dengeleyicimizin tüm özelliklerini içerir ancak Gelişmiş Trafik Yönetimi özelliklerinin gittikçe büyüyen bir listesine sahiptir. Bu özelliklerden bazıları yük dengeleyicilerimiz için yeni, bazıları da mevcut özelliklere gelişmiş özellikler sağlar. Bu özelliklerin kısmi bir listesi şunlardır:

  • Ağırlıklı Trafiği Bölme
  • Yansıtma İste
  • Aykırı Değer Algılama
  • Yeniden Deneme İsteği
  • Hata Yerleştirme
  • Ek Arka Uç Oturumu Yakın İlgi Alanı seçenekleri
  • Ek Üstbilgi Dönüştürme seçenekleri
  • Kaynaklar Arası Kaynak Paylaşımı (CORS)
  • Yeni Yük Dengeleme Algoritmaları

Neler öğreneceksiniz?

  • Yönetilen örnek grubu oluşturma, ilişkili VPC ve güvenlik duvarı kuralları
  • 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ğ İletişimi ve HTTP bilgisi
  • Temel 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, Batı ve Merkezi olmak üzere üç yönetilen örnek grubu kuracaksınız. Global bir 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 özellikleri kullanır. Dağıtımdan sonra yük simülasyonu oluşturur ve ayarladığınız yapılandırmaların düzgün şekilde çalıştığını doğrularsınız.

2. Kurulum ve Gereksinimler

Kendi hızınızda ortam kurulumu

  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 ve bunu istediğ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ğine referans vermeniz gerekir (ve bu kimlik genellikle PROJECT_ID olarak tanımlanır). Beğenmezseniz başka bir rastgele kod oluşturun ya da kendi proje kimliğinizi deneyip mevcut olup olmadığına bakın. Sıcaklık "soğudu" takip etmeniz gerekir.
  • 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. Ardından, 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ırmayla karşılaşmamak için kaynakları kapatmak istiyorsanız tüm "temizleme" işlemlerini uygulayın buradaki talimatları uygulayın. 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.

GCP Console'da, sağ üstteki araç çubuğunda yer alan 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 laboratuvardaki tüm çalışmalarınızı yalnızca bir tarayıcıyla yapabilirsiniz.

Başlamadan önce

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

gcloud yapılandırma listesi projesi

gcloud yapılandırma seti projesi [PROJE-ADINIZ]

PROJECT_ID=[YOUR-PROJECT-NAME]

yankı $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 test uygulamasının web sitesinin 80 numaralı bağlantı noktasındaki harici IP'sine erişmesine izin vermek amacıyla 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ına yönelik kalıpları 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. Daha sonra her bölgedeki bir arka uç için örnek şablonuna referans veren bir yönetilen örnek grubu oluşturacağız.

Yönetilen örnek grupları, alt bölgesel veya bölgesel olabilir. Bu laboratuvar alıştırması için biri us-east1, diğeri us-west1 ve us-central1'de olmak üzere üç adet bölgesel yönetilen örnek grubu oluşturacağız.

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

Doğu, Batı ve Merkezi Örnek Şablonları 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-9 \
   --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

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-9 \
   --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

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-9 \
   --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 Merkezi 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

Örnek gruplarımızın başarıyla oluşturulduğunu aşağıdaki gcloud komutuyla 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şturan basit bir PHP komut dosyasına sahip bir Apache web sunucusu çalıştıracak şekilde yapılandırılır:

c87ca81d3125ac61.png

Web sunucularınızın düzgün çalıştığından emin olmak için Compute Engine'e gidin -> Sanal makine örnekleri 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 bir web isteğinde bulunun (bu işlemin başlatılması bir dakika sürebilir). Compute Engine 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 kurma

Durum Denetimi Oluştur

Ö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. Çok daha fazla gelişmiş özelleştirme mevcut.

Cloud Shell'den

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

Harici IP Adresini Ayırt

Bu adım için daha sonra Yük Dengeleyici'ye eklenecek olan genel olarak kullanılabilir statik bir 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 ettiğinizden emin olun.

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ın her biri için birer arka uç hizmeti oluşturmamız gerekiyor. Biri Doğu, Batı ve Orta için.

Doğu tarafından yönetilen örnek grubu için arka uç hizmeti oluşturuluyor.

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ı tarafından yönetilen örnek grubu için arka uç hizmeti oluşturuluyor.

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

Central yönetilen örnek grubu için arka uç hizmeti oluşturuluyor.

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 şimdi daha önce oluşturduğumuz Yönetilen Örnek Gruplarını her arka uç hizmetine eklememiz gerekiyor.

Arka uç hizmetine East MIG'yi 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

Arka uç hizmetine West MIG'yi 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

Arka uç hizmetine Central MIG 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 Eşlemesi Oluştur

URL eşlemesi, bu laboratuvarda kullanılan gelişmiş trafik yönetimi özelliklerinin yayınlanacağı yerdir. Yapılandırmayı içeren bir .yaml dosyası oluşturmamız gerekir. .yaml dosyası için /roundrobbin işlevinde bir önek eşleşmesi oluşturduk. Bu nedenle, bu yapılandırmalardan yalnızca /roundrobbin eşleştirmesi etkilenecek. Trafiğin% 50'sinin doğu-arka uç hizmetine, %50'sinin ise batı-arka uç hizmetine gitmesi gerektiğini belirttik. Ayrıca, tüm yanıtlarda yer alacak bir yanıt başlığı değeri:{test} ekledik. Son olarak, tüm trafiğin merkezi arka uç hizmetine yansıtılması gerektiğini ekledik. Trafik yinelenir ve yalnızca test amacıyla buraya gönderilir.

Örneği makinenize bir .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

Dokümanı makinenizden içe aktaran URL Eşleme'yi oluşturun. Kaynak yolunun, .yaml dosyasını kaydettiğiniz yere bağlı olarak 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 uç 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 ile 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 bir miktar yük oluşturmanız gerekir. Bunun için yükü simüle edecek yeni bir sanal makine oluşturacağız.

SSH Güvenlik Duvarına İzin Ver Kuralı Oluştur

Sizden trafik oluşturacağımız sanal makineye SSH uygulamak için öncelikle bir güvenlik duvarı kuralı oluşturmanız gerekir. Bu kural, sanal makineye giden SSH trafiğine izin verir.

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

Sege-vm oluşturma

Şimdi yük oluşturmak için kullanacağınız siege-vm'i 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 üzerinden bağlanabilirsiniz. Bağlantı oluşturulduktan sonra SSH'yi tıklayarak bir terminal açıp bağlanın.

Bağlantı kurulduktan 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ğıtımını Kontrol Etme

Siege çalıştığına göre trafiğin doğu ve batıda yönetilen örnek gruplarına eşit şekilde dağıtıldığını kontrol edebilirsiniz. Ayrıca, trafik yansıtmanın çalıştığından ve trafiğin merkezi yönetilen örnek grubuna gönderilip gönderilmediğini de kontrol edebilirsiniz.

Cloud Console'un Gezinme menüsünde Ağ Hizmetleri > Yük dengeleme. Yük dengeleyici web-map-http'yi seçin. Monitoring sekmesine gittiğinizde aşağıdaki grafiği görebilirsiniz.

f4d6803db44be253.png

Bu MIG'ye göre trafiğin bölündüğünü gerçek zamanlı olarak görebileceksiniz. 50/50'lik çevrim şeklinde gruplamayı 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ığından emin olmak için merkezi arka uç hizmeti yönetilen örnek grubunun kullanımını kontrol etmeniz gerekir. Bunun için Compute Engine, Compute Engine ve örnek gruplarına gidip 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österilir.

Kuşatma'yı Durdurun

Artık gelişmiş trafik bölme işlevinin işe yaradığını gösterdiğinize göre, kuşatmayı durdurmanın zamanı geldi. Bunu yapmak için siege-vm SSH terminaline dönün ve CTRL+C tuşlarına basarak siege'in çalışmasını durdurun.

Gönderilen Yanıt Başlığını Doğrulama

Temizlemeden önce http yük dengeleyici tarafından uygun yanıt başlığının gönderilip gönderilmediğini hızlı bir şekilde doğrulayabilirsiniz. Bu sayfayı, içerik değeriyle başlık testini gönderecek şekilde yapılandırmıştınız. Cloud Shell'den curl komutu çalıştırıldığında beklenen yanıt verilir.

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 Temizleme

Laboratuvar ortamını tamamladığımıza göre sıra onu ortadan kaldırmaya geldi. 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) Codelab'ini kullanarak Harici HTTPs LB'yi tamamladınız.

İşlediklerimiz

  • Yönetilen örnek grubu oluşturma, ilişkili VPC ve güvenlik duvarı kuralları
  • 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'yi yeniden yazma ve CORS başlıkları ekleme gibi diğer gelişmiş yönlendirme özelliklerinden bazılarını deneyin ( bağlantı)