1. Giriş
Karma strateji, değişen pazar taleplerine uyum sağlamanız ve uygulamalarınızı kademeli olarak modernleştirmeniz için pratik bir çözümdür. Google Cloud harici ve dahili HTTP(S) yük dengeleyiciler için hibrit destek, Cloud Load Balancing'i şirket içinde ve diğer bulutlarda bulunan arka uçlara genişletir ve hibrit stratejinizin temelini oluşturur. Bu, modern bir bulut tabanlı çözüme geçişi sağlamak için geçici veya kuruluşunuzun BT altyapısının kalıcı bir özelliği olabilir.

Bu laboratuvarda, harici bir HTTP (s) Global Load Balancer'dan erişilebilen iki sanal makine kullanarak bir Ağ Uç Noktası Grubu(NEG) oluşturmayı öğreneceksiniz. Laboratuvardaki NEG, GCP'de olsa da IP erişilebilirliği olan herkese açık veya şirket içi kaynaklarla iletişim kurmak için aynı prosedür kullanılır.
Neler öğreneceksiniz?
- Özel VPC oluşturma
- Ağ uç noktası grubu (NEG) olarak kullanılan iki sanal makine (VM) oluşturun.
- Hibrit yük dengeleyici, arka uç hizmeti ve ilişkili durum denetimleri oluşturma
- Yük dengeleyiciye erişime izin veren bir güvenlik duvarı kuralı oluşturun.
- İnternetten paket güncellemelerine izin vermek için Cloud Router ve NAT oluşturulur.
- Ağ uç noktası grubu erişilebilirliğini doğrulama
Gerekenler
- Yük dengeleyiciler hakkında bilgi
Yönlendirmesiz ortam kurulumu
- 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.



- Proje Adı, bu proje için kişisel tanımlayıcınızdır. Adlandırma kurallarına uyduğunuz sürece istediğiniz her şeyi kullanabilir ve istediğiniz zaman 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_IDolarak tanımlanır) başvurmanız gerekir. Bu nedenle, beğenmezseniz başka bir rastgele kimlik oluşturun veya kendi kimliğinizi deneyip kullanılabilir olup olmadığını kontrol edin. Proje oluşturulduktan sonra bu ayar "dondurulur".
- Ardından, Google Cloud kaynaklarını 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ı nasıl kapatacağınız konusunda size tavsiyelerde bulunan "Temizleme" bölümündeki talimatları uyguladığınızdan emin olun. 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.
GCP Console'da sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın:

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:

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 laboratuvardaki çalışmalarınızın tamamını yalnızca bir tarayıcı kullanarak yapabilirsiniz.
2. Başlamadan önce
Cloud Shell'de proje kimliğinizin ayarlandığından emin olun.
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] Perform setting your projectID: projectid=YOUR-PROJECT-ID echo $projectid
3. Yeni bir özel mod VPC ağı oluşturma
Bu görevde, ağın temelini oluşturan bir Sanal Özel Bulut (VPC) oluşturacaksınız.
VPC Ağı
Cloud Shell'den
gcloud compute networks create hybrid-network-lb --subnet-mode custom
Alt Ağ Oluştur
Cloud Shell'den
gcloud compute networks subnets create network-endpoint-group-subnet --network hybrid-network-lb --range 192.168.10.0/24 --region us-west1
Cloud NAT örneği oluşturma
Hibrit ağ için gerekli olmasa da, işlem örneğinin uygulama ve güncellemeleri indirmek için internet bağlantısı olması gerekir.
Bu görevde, sanal makine örneklerine internet bağlantısı sağlayan bir Cloud Router ve NAT örneği oluşturacaksınız.
Cloud Router oluşturma
Cloud Shell'den
gcloud compute routers create crnat --network hybrid-network-lb --region us-west1
Cloud NAT oluşturma
Cloud Shell'den
gcloud compute routers nats create cloudnat --router=crnat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west1
4. İki sanal makine örneği oluşturun
Bu görevde, Apache'nin çalıştığı iki sanal makine örneği oluşturacaksınız. Bu sanal makine örnekleri, laboratuvarın ilerleyen bölümlerinde bir Ağ Uç Noktası Grubu (NEG) haline gelecektir.
Cloud Shell'den ilk şirket içi örneği oluşturun, on-prem-neg-1
gcloud compute instances create on-prem-neg-1 \
--zone=us-west1-a \
--tags=allow-health-check \
--image-family=debian-9 \
--image-project=debian-cloud \
--subnet=network-endpoint-group-subnet --no-address \
--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)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'
Cloud Shell'den ilk şirket içi örneği oluşturun, on-prem-neg-2
gcloud compute instances create on-prem-neg-2 \
--zone=us-west1-a \
--tags=allow-health-check \
--image-family=debian-9 \
--image-project=debian-cloud \
--subnet=network-endpoint-group-subnet --no-address \
--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)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'
5. Şirket içi uç noktanızı içeren bir NEG oluşturun
İlk olarak şirket içi-neg-1 ve şirket içi-neg-2 adlı bir NEG oluşturun. Ayrıca, yönlendirme ve yük dengeleme amacıyla bu uç noktaların us-west1-a GCP bölgesinde olduğunu LB'nin dikkate alması gerektiğini de belirtirsiniz. Yapılandırılan bölgenin, yük dengeleme için kullanılan yakınlığa dayalı yük dengeleme ölçümleri açısından ara bağlantı eki/VPN ağ geçidinin bölgesiyle ilişkili herhangi bir bölgeye karşılık gelmesini öneririz.
Cloud Shell'den on-prem-neg-1 oluşturun.
gcloud compute network-endpoint-groups create on-prem-neg-1 \
--network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
--zone "us-west1-a" \
--network hybrid-network-lb
Cloud Shell'den on-prem-neg-2 oluşturun.
gcloud compute network-endpoint-groups create on-prem-neg-2 \
--network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
--zone "us-west1-a" \
--network hybrid-network-lb
Codelab'de ağ uç noktası grubu, GCP'de Apache'yi çalıştıran bir GCE örneğidir. Alternatif olarak, ağ uç noktanız olarak şirket içi veya internet uç noktası belirtebilirsiniz.
Cloud Shell'den GCE IP adreslerini belirleyin.
gcloud compute instances list | grep -i on-prem
Ağ uç noktası grubunu, önceki adımda belirlenen GCE örneği IP adresiyle ilişkilendirin. Her NEG için: on-prem-neg-1 & on-prem-neg-2.
Cloud Shell'den on-prem-neg-1'i ilişkilendirin, x.x.x.x'i belirlediğiniz IP ile güncelleyin.
gcloud compute network-endpoint-groups update on-prem-neg-1 \
--zone="us-west1-a" \
--add-endpoint="ip=x.x.x.x,port=80"
Cloud Shell'den on-prem-neg-2'yi ilişkilendirin, x.x.x.x'i belirlediğiniz IP ile güncelleyin.
gcloud compute network-endpoint-groups update on-prem-neg-2 \
--zone="us-west1-a" \
--add-endpoint="ip=x.x.x.x,port=80"
6. HTTP durum denetimi, arka uç hizmeti ve güvenlik duvarı oluşturma
Bu adımda, on-prem-backend-service adlı bir global arka uç hizmeti oluşturacaksınız. Bu arka uç hizmeti, veri düzleminizin trafiği NEG'nize nasıl göndereceğini tanımlar.
İlk olarak, bu NEG'ye (yani şirket içi uç noktanıza) ait tüm uç noktaların durumunu izlemek için on-prem-health-check adlı bir durum denetimi oluşturun.
Cloud Shell'den
gcloud compute health-checks create http on-prem-health-check
on-prem-backend-service adlı bir şirket içi arka uç hizmeti oluşturun ve bunu durum denetimiyle ilişkilendirin.
Cloud Shell'den
gcloud compute backend-services create on-prem-backend-service \
--global \
--load-balancing-scheme=EXTERNAL \
--health-checks on-prem-health-check
HTTP(S) harici yük dengeleyici ve arka uç, 35.191.0.0/16 ve 130.211.0.0/22 alt ağlarından kaynaklanan durum denetimleri gerçekleştirir. Bu nedenle, yük dengeleyicinin arka uca yönlendirilmesine izin vermek için bir güvenlik duvarı kuralı gerekir.
Cloud Shell'den
gcloud compute firewall-rules create fw-allow-health-check \
--network=hybrid-network-lb \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--target-tags=allow-health-check \
--rules=tcp:80
7. NEG ile arka uç hizmetini ilişkilendirme
Bu arka uç hizmetine on-prem-neg-1 NEG'sini ekleyin.
Cloud Shell'den
gcloud compute backend-services add-backend on-prem-backend-service \
--global \
--network-endpoint-group on-prem-neg-1 \
--network-endpoint-group-zone us-west1-a \
--balancing-mode RATE \
--max-rate-per-endpoint 5
Bu arka uç hizmetine on-prem-neg-2 NEG'sini ekleyin.
Cloud Shell'den
gcloud compute backend-services add-backend on-prem-backend-service \
--global \
--network-endpoint-group on-prem-neg-2 \
--network-endpoint-group-zone us-west1-a \
--balancing-mode RATE \
--max-rate-per-endpoint 5
Ağ uç noktanıza erişmek için kullanılan bir IPv4 statik IP adresi ayırın
Cloud Shell'den
gcloud compute addresses create hybrid-lb-ip --project=$projectid --global
KSA yapılandırması tamamlandı. Yapılandırmayı Cloud Console'dan tamamlayalım.
8. Harici HTTP yük dengeleyiciyi oluşturma ve arka uç hizmetini ilişkilendirme
Cloud Console'da Load Balancing'e (Yük Dengeleme) gidin ve Create load balancer'ı (Yük dengeleyici oluştur) seçin.
HTTP(S) yük dengelemeyi belirleyin ve "yapılandırmayı başlat"ı tıklayın.

Aşağıdaki ekran görüntüsünde gösterildiği gibi, sanal makinenize herkese açık erişim izni veren "İnternetten sanal makinelerime" seçeneğini belirleyin.

Yük dengeleyicinin adı olarak "xlb"yi girin ve daha önce oluşturulan "şirket içi-backend-service" arka uç hizmetini, ardından sağlanan ekran görüntüsüne göre "Tamam"ı seçin.

Ön uç yapılandırması'nı seçin, "xlb-fe" adını güncelleyin ve daha önce oluşturulan statik IPv4 adresini seçin. Sağlanan ekran görüntüsünü yansıttığınızdan emin olun. 
Sağlanan ekran görüntüsüyle eşleşen "İncele ve sonlandır"ı seçip oluştur'u tıklayın.

Arka uç durum doğrulama
Bulut konsolunda, sağlanan ekran görüntüsüne göre arka uç "xlb"nin sağlıklı ve yeşil olduğundan emin olun.

9. NEG'ye internetten erişilebildiğini doğrulama
Yük dengeleyici oluşturulurken kullanılan harici statik IP adresinin artık ağ uç noktalarınızın ön uç IP'si olduğunu hatırlatırız. Son testimizi yürütmeden önce IP adresinin doğrulanmasını sağlayalım.
Cloud Shell'den
gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:
Çıkış (IP adresiniz farklı olacaktır)
Cloud Shell'den çıkış
$ gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress: IPAddress: 34.96.103.132
Küresel yük dengeleyici kullanıcı arabirimi IP adresini kullanarak ağ uç noktası arka ucuna erişebilirsiniz. Codelab'de uç noktanın bir GCE örneği olduğunu ancak bunu örneğin şirket içi uç noktalarla kullanacağınızı unutmayın.
Yerel iş istasyonunuzdan bir terminal başlatın ve yük dengeleyici IP adresine bir curl işlemi uygulayın.
İş istasyonunuzdan ön uç IP adresine karşı bir curl işlemi gerçekleştirin. 200 OK yanıtını ve neg örneği adı ile bölgeden oluşan sayfa ayrıntılarını inceleyin.
myworkstation$ curl -v 34.96.103.132
* Trying 34.96.103.132...
* TCP_NODELAY set
* Connected to 34.96.103.132 (34.96.103.132) port 80 (#0)
> GET / HTTP/1.1
> Host: 34.96.103.132
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Tue, 10 Aug 2021 01:21:54 GMT
< Server: Apache/2.4.25 (Debian)
< Last-Modified: Tue, 10 Aug 2021 00:35:41 GMT
< ETag: "24-5c929ae7384f4"
< Accept-Ranges: bytes
< Content-Length: 36
< Content-Type: text/html
< Via: 1.1 google
<
Page on on-prem-neg-2 in us-west1-a
* Connection #0 to host 34.96.103.132 left intact
* Closing connection 0
Tebrikler, NEG'ler içeren bir L7 hibrit yük dengeleyiciyi başarıyla dağıttınız.
Tebrikler, codelab'i tamamladınız.
İşlediğimiz konular
- Özel VPC oluşturma
- Ağ uç noktası grubu (NEG) olarak kullanılan iki sanal makine (VM) oluşturun.
- Hibrit yük dengeleyici, arka uç hizmeti ve ilişkili durum denetimleri oluşturma
- Yük dengeleyiciye erişime izin veren bir güvenlik duvarı kuralı oluşturun.
- Ağ uç noktası grubu erişilebilirliğini doğrulama
10. Temizleme adımları
Cloud Console kullanıcı arayüzünde "xlb" yük dengeleyiciyi belirleyip işaretleyin ve Ağ Hizmetleri → Yük Dengeleme üzerinden silmeyi seçin. Seçtikten sonra "on-premise-backend service" ve "on-premise-health-check"i işaretleyin, ardından sil'i seçin.

Cloud Console kullanıcı arayüzünde Compute Engine → Ağ Uç Noktası Grupları'na gidin. Seçtikten sonra "on-prem-neg-1" ve "on-prem-neg-2"yi işaretleyin, ardından sil'i seçin.

Bulut kabuğundan laboratuvar bileşenlerini silme
gcloud compute routers nats delete cloudnat --router=crnat --region us-west1 --quiet gcloud compute routers delete crnat --region us-west1 --quiet gcloud compute instances delete on-prem-neg-1 --zone=us-west1-a --quiet gcloud compute instances delete on-prem-neg-2 --zone=us-west1-a --quiet gcloud compute firewall-rules delete fw-allow-health-check --quiet gcloud compute networks subnets delete network-endpoint-group-subnet --region=us-west1 --quiet gcloud compute networks delete hybrid-network-lb --quiet gcloud compute addresses delete hybrid-lb-ip --global --quiet