1. Giriş
Gelişmiş yük dengeleme optimizasyonları codelab'ine hoş geldiniz.
Bu codelab'de, global harici uygulama yük dengeleyici 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 dokümanı ( https://cloud.google.com/load-balancing/docs/load-balancing-overview) incelemeniz önerilir.
Şekil 1. Küresel harici uygulama yük dengeleyiciyle hedef uç nokta 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 bir https yük dengeleyicisi oluşturursunuz. Yük dengeleyici, envoy tabanlı yük dengeleyicinin desteklediği gelişmiş özellikler listesinden çeşitli özelliklerden yararlanı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.
Neler öğreneceksiniz?
- Yük dengeleyicinizde ince ayar yapmak için ServiceLbPolicy'yi yapılandırma.
Gerekenler
- Harici HTTPS Yük Dengeleme hakkında bilgi sahibi olma Bu codelab'in ilk yarısı, Gelişmiş Trafik Yönetimi (Envoy) Codelab'e Sahip Harici HTTPs LB'ye ( https://codelabs.developers.google.com/codelabs/externalhttplb-adv) oldukça benzerdir. İlk olarak bunu gözden geçirmeniz ö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 bir güvenlik duvarı kuralı 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 NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED httplb-allow-http-rule httplbs INGRESS 700 tcp:80 False
Bu codelab'de, sanal makinelerin sağlığını 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ına yönelik kalıpları içeren yönetilen örnek grupları oluşturmanız gerekir. Öncelikle, 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 arka uç için bir ö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ında bölgesel yönetilen örnek grupları oluşturacağız.
Bu bölümde, örnek oluşturulduğunda referans alınacak önceden oluşturulmuş bir başlangıç komut dosyasını görebilirsiniz. Bu başlangıç komut dosyası, web uygulamasını simüle etmek için kullanacağımız web sunucusu özelliklerini yükler ve etkinleştirir. Bu komut dosyasını inceleyebilirsiniz.
Örnek Şablonları Oluşturma
İlk adım, örnek şablon 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 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 sunucusunun işlevini doğrulama
Her örnek, aşağıdaki gibi bir öğe oluşturan basit bir PHP komut dosyasına sahip bir Apache web sunucusu çalıştıracak şekilde yapılandırılır:
Sayfanın sunulduğu yer: us-east1-a-mig-ww2h
Web sunucularınızın doğru şekilde çalıştığından emin olmak için Compute Engine -> Sanal makine örnekleri bölümüne gidin. Yeni örneklerinizin (ör. us-east1-a-mig-xxx), örnek grubu tanımlarına göre oluşturulduğundan emin olun.
Ardından, 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'daki 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 başarılı 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 gelişmiş özelleştirmeler de 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 Adresi Rezervasyon
Bu adımda, daha sonra Yük Dengeleyici'ye eklenecek, dünya genelinde kullanılabilen statik bir 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 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ı 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 arka uç hizmetine eklememiz gerekiyor.
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
Arka uçların eklendiğini doğrulamak için aşağıdaki komutu çalıştırın.
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 Eşlemesi Oluştur
Ş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 uç 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 haritasıyla 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 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
Bu noktada, yük dengeleyicinin daha önce not ettiğiniz IP adresiyle çalıştığını onaylayabilirsiniz.
6. Yük Dengeleyici'nin Çalıştığını Doğrulama
Yük dengeleme özelliğinin çalıştığını doğrulamak için bir miktar yük oluşturmanız gerekir. Bunu yapmak için yükü simüle edecek yeni bir sanal makine oluşturacağız.
Sege-vm oluşturma
Artık 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 ile bağlanabilirsiniz. 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 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ğıtımını Kontrol Etme
Kuşatma işlemi başladıktan sonra trafiğin iki yönetilen örnek grubuna eşit şekilde dağıtılıp dağıtılmadığını kontrol etmenin zamanı gelmiştir.
Kuşatma'yı Durdurun
Gelişmiş trafik bölme özelliğinin işe yaradığını kanıtladığınıza göre, kuşatmayı sonlandırmanın zamanı geldi. Bunu yapmak için siege-vm SSH terminaline dönün ve siege'in çalışmasını durdurmak için CTRL+C tuşlarına basın.
7. Hizmet LB Politikası'nı yapılandırma
Hizmet dengeleyici politikası oluşturma
Temel ayar tamamlandığında bir Hizmet LB Politikası oluşturacak ve gelişmiş ö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 kullanacak bir politika oluşturacağız. Diğer özellikleri de deneyebilirsiniz.
Cloud Shell'den
gcloud beta network-services service-lb-policies create http-policy \ --auto-capacity-drain --location=global
Politikamızın başarıyla oluşturulduğunu aşağıdaki gcloud komutuyla 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
Şimdi yeni politikayı 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ç Durumunu Ayarlama
Bu noktada, yeni hizmet lb'si politikası arka uç hizmetinize uygulanmıştır. Teknik olarak doğrudan temizleme işlemine atlayabilirsiniz. Ancak kod laboratuvarının bir parçası olarak, yeni politikanın nasıl çalıştığını göstermek için üretimde bazı ek düzenlemeler de yapacağız.
Otomatik kapasite tahliyesi özelliği, sağlıklı arka uçların toplam 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 ile bağlanıp bunları sağlıksız hale getireceğiz. %25 eşiğinde, dört sanal makineye SSH ile bağlanıp Apache sunucusunu kapatmanız gerekir.
Bunu yapmak için dört sanal makine seçin ve SSH'yi tıklayarak bir terminal açıp bağlanın. Ardından aşağıdaki komutu çalıştırın.
sudo apachectl stop
Bu noktada otomatik kapasite tahliyesi özelliği tetiklenir ve us-east1-b-mig yeni istek almaz.
9. Otomatik Kapasite Boşaltma Özelliğinin Çalıştığını Doğrulama
Kuşatma'yı yeniden başlatma
Yeni özelliği doğrulamak için kuşatma sanal makinesini tekrar kullanacağız. Önceki adımda oluşturduğunuz sanal makineye SSH uygulayalım. 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 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 aşamada, tüm isteklerin us-east1-a-mig'e gönderildiğini görürsünüz.
Stop the Siege
Gelişmiş trafik bölme özelliğinin işe yaradığını kanıtladığınıza göre, kuşatmayı sonlandırmanın zamanı geldi. Bunu yapmak için siege-vm SSH terminaline dönün ve siege'in çalışmasını durdurmak için CTRL+C tuşlarına basın.
10. Temizleme adımları
Artık laboratuvar ortamıyla işimiz bittiğine göre ortamı kaldırma zamanı. 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-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 tebrikler.
Ele aldığımız konular
- Hizmet lb'si politikasıyla harici bir uygulama yük dengeleyici oluşturma.
- Arka uç hizmetinizi otomatik kapasite tahliyesi özelliğiyle yapılandırın.
Sonraki adımlar
- Hizmet yükü dengeleme politikasının sunduğu diğer özellikleri deneyin.