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ı 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, bulut yük dengelemeyi şirket içinde ve diğer bulutlarda bulunan arka uçlara genişletir ve hibrit stratejinizin temelini oluşturur. Bu, modern bulut tabanlı bir çözüme geçişi sağlamak için geçici bir durum olabilir veya kuruluşunuzun BT altyapısının kalıcı bir özelliği olabilir.

3312e69c63b02f73.png

Bu laboratuvarda, harici bir HTTP (s) global yük dengeleyiciden erişilebilen iki sanal makine kullanarak nasıl ağ uç noktası grubu(NEG) oluşturacağınızı öğ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

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

96a9c957bc475304.pngb9a10ebdf5b5a448.pnga1e3c01a38fa61c2.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 adı 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_ID olarak tanımlanır) başvurmanız gerekir. Bu nedenle, proje kimliğini beğenmezseniz başka bir rastgele kimlik oluşturabilir veya kendi kimliğinizi deneyip kullanılabilir olup olmadığını görebilirsiniz. Proje oluşturulduktan sonra bu ayar "dondurulur".
  1. 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:

bce75f34b2c53987.png

Ortamın temel hazırlığı ve bağlantı kurulması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

f6ef2b5f13479f3a.png

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarıyla birlikte gelir. 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 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 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, bilgi işlem örneğinin uygulama ve güncelleme 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 on-prem-neg-1 ve on-prem-neg-2 adlı NEG'ler 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 tanımlanan GCE örneği IP adresiyle ilişkilendirin. Her NEG için: on-prem-neg-1 & on-prem-neg-2.

Cloud Shell'de 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'de on-prem-neg-2 ile ilişkilendirin, x.x.x.x değerini tanımladığınız 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ını 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 ait tüm uç noktaların (yani şirket içi uç noktanız) 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 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 dengeleyiciden arka uca yönlendirmeye 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 şirket içi-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

on-prem-neg-2 NEG'sini 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 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 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

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.

a55cd31dbeadfecc.png

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

f1589df43bf9e3e8.png

Ö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. b47cd48c7c1ccfc3.png

Sağlanan ekran görüntüsüyle eşleşen "İncele ve sonlandır"ı seçin ve oluştur'u tıklayın.

bfa39f7dc3ad91e1.png

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.

131bbfc955d6166c.png

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ırlayın. 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 ön uç 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.

Codelab'i tamamladığınız için tebrik ederiz.

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

53d7463fe354fe66.png

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şaretleyip sil'i seçin.

4d8f04264b44d03c.png

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