Bir Ağ Uç Noktası Grubuna ulaşmak için Harici HTTP(s) Karma yük dengeleyiciyi kullanma

1. Giriş

Karma strateji, değişen pazar taleplerine uyum sağlamanız ve uygulamalarınızı aşamalı olarak modernleştirebileceğiniz pragmatik bir çözümdür. Google Cloud'un harici ve dahili HTTP(S) yük dengeleyicileri için karma destek, bulut yük dengelemesini şirket içinde ve diğer bulutlarda bulunan arka uçlara genişletir ve karma stratejiniz için önemli bir etkinleştiricidir. Bu, modern bir bulut tabanlı çözüme veya kuruluşunuzun BT altyapısının kalıcı bir unsuruna geçiş sağlamak için geçici olabilir.

3312e69c63b02f73.png

Bu laboratuvarda, harici HTTP (S) Global Yük Dengeleyici'den erişilebilen iki sanal makine kullanarak Ağ Uç Noktası Grubu(NEG) oluşturmayı öğreneceksiniz. Laboratuvardaki NEG, GCP içinde olsa da aynı prosedür, IP erişilebilirliğine sahip herkese açık veya şirket içi kaynaklarla iletişim kurmak için kullanılır.

Neler öğreneceksiniz?

  • Özel VPC oluşturma
  • Ağ Uç Noktası Grubu (NEG) olarak kullanılan iki sanal makine oluşturma
  • Karma yük dengeleyici, arka uç hizmeti ve ilişkili durum denetimleri oluşturma
  • Yük dengeleyiciye erişim sağlayan bir güvenlik duvarı kuralı oluşturma
  • İnternetten paket güncellemelerine izin vermek için Cloud Yönlendirici ve NAT oluşturulacak
  • Ağ Uç Noktası Grubu erişilebilirliğini doğrulama

Gerekenler

  • Yük dengeleyicileri hakkında bilgi

Kendi hızınızda ortam kurulumu

  1. 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.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • 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ıdır ve değiştirilemez (bir kez ayarlandıktan 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" bazı önemli belgeler vardır.
  1. Sonraki adımda, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.

Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. "Temizleme" bölümündeki talimatları izlediğinizden emin olun. bölümünde, bu eğiticinin dışında faturalandırmayla karşılaşmamanız için kaynakları nasıl kapatacağınız konusunda tavsiyelerde bulunuyoruz. 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:

bce75f34b2c53987.png

Ortamı sağlamak ve bağlamak yalnızca birkaç dakika sürer. Tamamlandığında şuna benzer bir sonuç görmeniz gerekir:

f6ef2b5f13479f3a.png

İ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.

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 temeli olan 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

Karma ağ iletişimi için gerekli olmasa da işlem örneği, uygulamaları ve güncellemeleri indirmek için internet bağlantısı gerektirir.

Bu görevde sanal makine örneklerine internet bağlantısına olanak tanıyan 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şturma

Bu görevde, laboratuvarın ilerleyen bölümlerinde Apache çalıştıran iki sanal makine örneği oluşturacaksınız. Bu sanal makine örnekleri, Ağ Uç Noktası Grubu (NEG) olacaktır.

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şturma

Öncelikle on-prem-neg-1 ve on-prem-neg-2 adlı bir NEG oluşturun. Ayrıca, LB'nin yönlendirme ve yük dengeleme amacıyla bu uç noktaların us-west1-a GCP alt bölgesinde olduğunu dikkate alması gerektiğini belirtmelisiniz. Yük dengelemede kullanılan yakınlık tabanlı yük dengeleme ölçümleri için yapılandırılmış alt bölgenin, Ara Bağlantı Eki/VPN Ağ Geçidi bölgesiyle ilişkili herhangi bir alt 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'deki 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 tanımlayın

gcloud compute instances list | grep -i on-prem

Ağ uç noktası grubunu, önceki adımda daha önce tanımlanan GCE örneği IP adresiyle ilişkilendirin. her bir negatif için on-prem-neg-1 & on-prem-neg-2.

Cloud Shell ilişkilendirmesinde on-prem-neg-1 ile x.x.x.x'i tanımlanan IP'nizle 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 ilişkilendirmesinde on-prem-neg-2 ile x.x.x.x'i tanımlanan IP'nizle 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. Şunu oluşturun: http durum denetimi, arka uç hizmeti ve güvenlik duvarı

Bu adımda, on-prem-backend-service adında global bir arka uç hizmeti oluşturacaksınız. Bu arka uç hizmeti, veri düzleminizin NEG'nize trafiği nasıl göndereceğini tanımlar.

Öncelikle, bu NEG'ye ait uç noktaların (yani şirket içi uç noktanızı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 adında bir arka uç hizmeti oluşturun ve bu hizmeti 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 ucu, 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 uç yönlendirmesine izin vermesi 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 ve arka uç hizmetini ilişkilendirme

On-prem-neg-1 NEG'yi bu arka uç hizmetine 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

On-prem-neg-2 NEG'yi bu arka uç hizmetine 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 IPv4 statik IP Adresi ayırma

Cloud Shell'den

gcloud compute addresses create hybrid-lb-ip --project=$projectid --global

CLI yapılandırmasını tamamladık. Cloud Console'dan yapılandırmayı tamamlayalım.

8. Harici HTTP yük dengeleyiciyi oluşturup arka uç hizmetini ilişkilendirme

Cloud Console'dan Yük Dengeleme'ye gidin ve Yük dengeleyici oluştur'u seçin

HTTP(S) yük dengelemeyi belirleyin ve "Yapılandırmayı başlat"ı tıklayın

70ccd168957e89d9.png

"İnternetten sanal makinelerime" seçeneğini belirleyin sanal makinenize herkese açık erişim sağlayan aşağıdaki ekran görüntüsüne göre

a55cd31dbeadfecc.png

"xlb" ekleyin adını yük dengeleyicinin adı olarak belirleyin ve önceden oluşturulan arka uç hizmetini "on-prem-backend-service" seçin ardından "tamam" sağlanan ekran görüntüsüne göre

f1589df43bf9e3e8.png

Frontend configuration'ı (Ön uç yapılandırması) seçin, "xlb-fe" adını güncelleyin. ve daha önce oluşturulan statik IPv4 adresini seçin. b47cd48c7c1ccfc3.png ile sağlanan ekran görüntüsünü yansıttığınızdan emin olun.

"İnceleme ve sonlandırma"yı seçin sağlanan ekran görüntüsüyle eşleşecek ve Oluştur'u seçin.

bfa39f7dc3ad91e1.png

Arka uç durumu doğrulaması

Cloud Console'da arka ucun "xlb" olduğundan emin olun. sağlıklı, sağlanan ekran görüntüsüne göre yeşil

131bbfc955d6166c.png

9. NEG'nin internetten erişilebilir olduğunu doğrulama

Yük dengeleyiciyi oluştururken kullanılan harici statik IP Adresi'nin artık ağ uç noktalarınızın ön uç IP'si olduğunu unutmayın. Son testimizi yürütmeden önce IP adresini doğrulayalım.

Cloud Shell'den

gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:

Çıkış (IP adresiniz farklılık gösterir)

Cloudshell çıkışı

$ gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:
IPAddress: 34.96.103.132

Global yük dengeleyici ön uç IP adresini kullanarak ağ uç noktası arka ucuna erişebilirsiniz. Codelab'de uç noktanın bir GCE örneği olduğunu unutmayın. Ancak bu örneği şirket içi uç noktalarda kullanabilirsiniz.

Yerel iş istasyonunuzdan bir terminal başlatın ve yük dengeleyici IP adresi için curl işlemi gerçekleştirin

İş istasyonunuzdan, ön uç IP adresine karşı bir curl işlemi gerçekleştirin. 200 OK değerinin yanı sıra olumsuz örnek adını ve bölgesini içeren 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'lerle L7 Karma Yük Dengeleyici'yi başarıyla dağıttınız

Tebrikler, codelab'i tamamladınız.

İşlediklerimiz

  • Özel VPC oluşturma
  • Ağ Uç Noktası Grubu (NEG) olarak kullanılan iki sanal makine oluşturma
  • Karma yük dengeleyici, arka uç hizmeti ve ilişkili durum denetimleri oluşturma
  • Yük dengeleyiciye erişim sağlayan bir güvenlik duvarı kuralı oluşturma
  • Ağ Uç Noktası Grubu erişilebilirliğini doğrulama

10. Temizleme adımları

Cloud Console kullanıcı arayüzünde "xlb" öğesini belirleyin ve işaretleyin. yük dengeleyici tıklayın ve Ağ Hizmetleri → Yük Dengeleme aracılığıyla sil'i seçin. Seçildikten sonra "şirket içi arka uç hizmeti"ni işaretleyin &amp; ‘on-premise-health-check&#39; ardından sil'i seçin

53d7463fe354fe66.png

Cloud Console kullanıcı arayüzünden Compute Engine → Ağ Uç Noktası Grupları'na gidin. Seçildikten sonra "on-prem-neg-1"i işaretleyin &amp; ‘on-prem-neg-2&#39; ardından sil'i seçin

4d8f04264b44d03c.png

Cloud Shell'den 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