1. Giriş
İleri düzey yük dengeleme optimizasyonları codelab'ine hoş geldiniz.
Bu codelab'de, genel harici uygulama yük dengeleyicisi için gelişmiş yük dengeleme seçeneklerini nasıl yapılandıracağınızı öğreneceksiniz. Başlamadan önce bulut yük dengeleme hakkındaki belgeyi ( https://cloud.google.com/load-balancing/docs/load-balancing-overview) incelemeniz önerilir.

Şekil 1. Global harici uygulama yük dengeleyicisiyle hedef varış noktası seçme iş akışı.
Codelab topolojisi ve kullanım alanları

Şekil 2. HTTP yük dengeleyici yönlendirme topolojisi
Bu kod laboratuvarı sırasında iki 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, simüle edilmiş bir yük oluşturup ayarladığınız yapılandırmaların uygun şekilde çalıştığını doğrulayacaksınız.
Neler öğreneceksiniz?
- Yük dengeleyicinizi hassas bir şekilde ayarlamak için ServiceLbPolicy'yi yapılandırma
Gerekenler
- Harici HTTPS Yük Dengeleme hakkında bilgi sahibi olmanız gerekir. Bu codelab'in ilk yarısı, Gelişmiş Trafik Yönetimi (Envoy) ile Harici HTTPs LB Codelab'ine ( https://codelabs.developers.google.com/codelabs/externalhttplb-adv) oldukça benzerdir. Öncelikle bu makaleyi incelemeniz önerilir.
2. Başlamadan önce
Cloud Shell'de proje kimliğinizin ayarlandığından emin olun.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME echo $prodproject
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 gcloud services enable networkservices.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 SUBNET_MODE BGP_ROUTING_MODE IPV4_RANGE GATEWAY_IPV4 httplbs AUTO REGIONAL
VPC güvenlik duvarı kuralları oluşturma
VPC'yi oluşturduktan sonra güvenlik duvarı kuralı 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 NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED httplb-allow-http-rule httplbs INGRESS 700 tcp:80 False
Bu codelab'de, sanal makinelerin sağlıklı olma durumunu ayarlayacağız. Bu nedenle, SSH'ye izin vermek için güvenlik duvarı kuralları da oluşturacağız.
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ış
Creating firewall...working..Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls/fw-allow-ssh]. Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED fw-allow-ssh httplbs INGRESS 1000 tcp:22 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 grupları oluşturacağız.
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.
Örnek şablonlarını oluşturma
İlk adım, bir örnek şablonu oluşturmaktır.
Cloud Shell'den
gcloud compute instance-templates create test-template \
--network=httplbs \
--tags=allow-ssh,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ış
NAME MACHINE_TYPE PREEMPTIBLE CREATION_TIMESTAMP test-template n1-standard-1 2021-11-09T09:24:35.275-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 test-template n1-standard-1 2021-11-09T09:24:35.275-08:00
Ö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-a-mig \ --size=1 \ --template=test-template \ --zone=us-east1-a
Çıkış
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-east1-a/instanceGroupManagers/us-east1-a-mig]. NAME LOCATION SCOPE BASE_INSTANCE_NAME SIZE TARGET_SIZE INSTANCE_TEMPLATE AUTOSCALED us-east1-a-mig us-east1-a zone us-east1-a-mig 0 1 test-template no
Cloud Shell'den
gcloud compute instance-groups managed create us-east1-b-mig \ --size=5 \ --template=test-template \ --zone=us-east1-b
Çıkış
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-east1-b/instanceGroupManagers/us-east1-b-mig]. NAME LOCATION SCOPE BASE_INSTANCE_NAME SIZE TARGET_SIZE INSTANCE_TEMPLATE AUTOSCALED us-east1-b-mig us-east1-b zone us-east1-b-mig 0 5 test-template no
Aşağıdaki gcloud komutuyla örnek gruplarımızın başarıyla oluşturulduğunu doğrulayabiliriz:
Cloud Shell'den
gcloud compute instance-groups list
Çıkış
NAME LOCATION SCOPE NETWORK MANAGED INSTANCES us-east1-a-mig us-east1-a zone httplbs Yes 1 us-east1-b-mig us-east1-b zone httplbs Yes 5
Web Sunucusu İşlevselliğini Doğrulama
Her örnek, aşağıdakine benzer bir şey oluşturmak için basit bir PHP komut dosyasıyla Apache web sunucusu çalıştıracak şekilde yapılandırılır:
Sayfa şu konumdan sunuldu: us-east1-a-mig-ww2h
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-a-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 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
Çıkış
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/healthChecks/http-basic-check]. NAME PROTOCOL http-basic-check HTTP
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
Çıkış
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/addresses/lb-ipv4-2].
Ayrılmış IP adresini not edin.
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ı için bir arka uç hizmeti oluşturmamız gerekiyor.
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
Çıkış
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/east-backend-service]. NAME BACKENDS PROTOCOL east-backend-service HTTP
Arka uç hizmetlerine MIG ekleme
Arka uç hizmetlerini oluşturduğumuza göre, daha önce oluşturduğumuz yönetilen örnek gruplarını her bir arka uç hizmetine eklememiz gerekir.
Cloud Shell'den
gcloud compute backend-services add-backend east-backend-service --instance-group us-east1-a-mig --instance-group-zone us-east1-a --global
Cloud Shell'den
gcloud compute backend-services add-backend east-backend-service --instance-group us-east1-b-mig --instance-group-zone us-east1-b --global
Aşağıdaki komutu çalıştırarak arka uçların eklendiğini doğrulayabilirsiniz.
Cloud Shell'den
gcloud compute backend-services list
Çıkış
NAME BACKENDS PROTOCOL east-backend-service us-east1-a/instanceGroups/us-east1-a-mig,us-east1-b/instanceGroups/us-east1-b-mig HTTP
URL haritası oluşturma
Şimdi bir URL eşlemesi oluşturacağız.
gcloud compute url-maps create web-map-http \
--default-service=east-backend-service \
--global
Çıkış
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/web-map-http]. NAME DEFAULT_SERVICE web-map-http backendServices/east-backend-service
HTTP ön ucu oluşturma
Yük dengeleyici oluşturma sürecindeki 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
Çıkış
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/targetHttpProxies/http-lb-proxy-adv]. NAME URL_MAP http-lb-proxy-adv web-map-http
Ardından, daha önce ayrılan IP adresini HTTP proxy'sine 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
Bu noktada, yük dengeleyicinin daha önce not aldığınız IP adresiyle çalıştığını onaylayabilirsiniz.
6. Yük dengeleyicinin çalıştığını doğrulama
Yük dengeleme ö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.
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-east1-a \
--machine-type=e2-medium \
--tags=allow-ssh,http-server \
--metadata=startup-script='sudo apt-get -y install siege'
Çıkış
Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-east1-a/instances/siege-vm]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS siege-vm us-central1-ir1 e2-medium 10.132.0.15 34.143.20.68 RUNNING
Ardından, oluşturduğunuz sanal makineye SSH bağlantısı oluşturabilirsiniz. Oluşturulduktan sonra SSH'ı tıklayarak bir terminal başlatın ve bağlanın.
Bağlandıktan sonra yük oluşturmak için aşağıdaki komutu çalıştırın. Daha önce harici HTTP yük dengeleyici için ayırdığınız IP adresini kullanın.
Cloud Shell'den
siege -c 20 http://$lb-ipv4-2
Çıkış
New configuration template added to /home/cloudcurriculumdeveloper/.siege Run siege -C to view the current settings in that file
Yük Dağılımını Kontrol Etme
Siege çalışırken trafiğin iki yönetilen örnek grubuna eşit olarak dağıtıldığını kontrol etme zamanı geldi.
Stop the Siege
Gelişmiş trafik bölme özelliğinin çalıştığını gösterdiğinize göre artık kuşatmayı durdurabilirsiniz. Bunu yapmak için siege-vm'nin SSH terminaline dönün ve çalışan siege'i durdurmak için CTRL+C tuşlarına basın.
7. Hizmet yük dengeleme politikasını yapılandırma
Hizmet LB Politikası Oluşturma
Temel ayar tamamlandığına göre şimdi bir hizmet yük dengeleme politikası oluşturup ileri seviye özellikleri deneyeceğiz. Örnek olarak, hizmeti bazı gelişmiş yük dengeleme ayarlarını kullanacak şekilde yapılandıracağız. Bu örnekte, otomatik kapasite boşaltma özelliğini kullanmak için bir politika oluşturacağız. Ancak diğer özellikleri denemekten çekinmeyin.
Cloud Shell'den
gcloud beta network-services service-lb-policies create http-policy \
--auto-capacity-drain --location=global
Aşağıdaki gcloud komutuyla politikamızın başarıyla oluşturulduğunu doğrulayabiliriz:
Cloud Shell'den
gcloud beta network-services service-lb-policies list --location=global
Çıkış
NAME http-policy
Hizmet LB politikasını arka uç hizmetine ekleme
Yeni politikayı artık yukarıdaki mevcut arka uç hizmetinize ekleyeceğiz.
Cloud Shell'den
gcloud beta compute backend-services update east-backend-service \
--service-lb-policy=http-policy --global
8. Arka uç sağlığını ayarlama
Bu noktada, yeni hizmet yük dengeleme politikası arka uç hizmetinize uygulanmıştır. Bu nedenle, teknik olarak doğrudan temizleme işlemine geçebilirsiniz. Ancak bu kod laboratuvarı kapsamında, yeni politikanın nasıl çalıştığını göstermek için bazı ek üretim düzenlemeleri de yapacağız.
Otomatik kapasite boşaltma özelliği, toplam sağlıklı arka uç sayısı belirli bir eşiğin (%25) altına düştüğünde arka uç MIG'yi yük dengeleyiciden otomatik olarak kaldırır. Bu özelliği test etmek için us-east1-b-mig bölgesindeki sanal makinelere SSH bağlantısı kurup bunları sağlıksız hale getireceğiz. %25 eşiğiyle, sanal makinelerin dördüne SSH ile bağlanmanız ve Apache sunucusunu kapatmanız gerekir.
Bunu yapmak için dört sanal makine seçin ve SSH'yi tıklayarak bir terminal başlatıp bağlanın. Ardından aşağıdaki komutu çalıştırın.
sudo apachectl stop
Bu noktada, otomatik kapasite boşaltma özelliği tetiklenir ve us-east1-b-mig yeni istek almaz.
9. Otomatik Kapasite Boşaltma Özelliğinin Çalıştığını Doğrulama
Siege'i yeniden başlatma
Yeni özelliği doğrulamak için kuşatma VM'sini tekrar kullanacağız. Önceki adımda oluşturduğunuz sanal makineye SSH ile bağlanalım. Oluşturulduktan sonra SSH'ı tıklayarak bir terminal başlatın ve bağlanın.
Bağlandıktan sonra yük oluşturmak için aşağıdaki komutu çalıştırın. Daha önce harici HTTP yük dengeleyici için ayırdığınız IP adresini kullanın.
Cloud Shell'den
siege -c 20 http://$lb-ipv4-2
Çıkış
New configuration template added to /home/cloudcurriculumdeveloper/.siege Run siege -C to view the current settings in that file
Bu noktada, tüm isteklerin us-east1-a-mig'e gönderildiğini fark edeceksiniz.
Stop the Siege
Gelişmiş trafik bölme özelliğinin çalıştığını gösterdiğinize göre artık kuşatmayı durdurabilirsiniz. Bunu yapmak için siege-vm'nin SSH terminaline dönün ve çalışan siege'i durdurmak için CTRL+C tuşlarına basın.
10. Temizleme adımları
Laboratuvar ortamıyla işimiz bittiğine göre artık bu ortamı kapatabiliriz. Lütfen test ortamını silmek için aşağıdaki komutları çalıştırın.
Cloud Shell'den
gcloud compute instances delete siege-vm --zone=us-east1-a 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 addresses delete lb-ipv4-2 --global gcloud compute health-checks delete http-basic-check gcloud beta network-services service-lb-policies delete http-policy --location=global gcloud compute instance-groups managed delete us-east1-a-mig --zone=us-east1-a gcloud compute instance-groups managed delete us-east1-b-mig --zone=us-east1-b gcloud compute instance-templates delete test-template gcloud compute firewall-rules delete httplb-allow-http-rule gcloud compute firewall-rules delete fw-allow-ssh gcloud compute networks delete httplbs
11. Tebrikler!
Codelab'i tamamladığınız için tebrik ederiz.
İşlediğimiz konular
- Hizmet yük dengeleme politikasıyla harici uygulama yük dengeleyicisi oluşturma.
- Arka uç hizmetinizi otomatik kapasite boşaltma özelliğiyle yapılandırın.
Sonraki adımlar
- Hizmet yük dengeleme politikası tarafından sağlanan diğer özellikleri deneyin.