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.
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ç Nokta Grubu erişilebilirliğini doğrulama
Gerekenler
- Yük dengeleyicileri hakkında bilgi
Kendi hızınızda ortam kurulumu
- 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.
- 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.
- 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:
Ortamı sağlamak ve bağlamak yalnızca birkaç dakika sürer. Tamamlandığında şuna benzer bir sonuç görmeniz gerekir:
İ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 bir 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 dengeleyici oluşturun ve 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 tanımlayın ve "Yapılandırmayı başlat"ı tıklayın
"İ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
"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
Ön uç yapılandırmasını seçin, "xlb-fe" adını güncelleyin ve daha önce oluşturulan statik IPv4 adresini seçin. 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.
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
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ç Nokta 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 & ‘on-premise-health-check' ardından sil'i seçin
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 & ‘on-prem-neg-2' ardından sil'i seçin
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