Checkpoints
Create GCS bucket
/ 10
Copy startup script and code to Cloud Storage bucket
/ 10
Deploy instances and configure network
/ 20
Create managed instance groups
/ 20
Create HTTP(S) load balancers
/ 10
Update the frontend instances
/ 10
Scaling GCE
/ 10
Update the website
/ 10
Compute Engine'i Kullanarak Google Cloud'da Web Uygulaması Barındırma
- GSP662
- Genel bakış
- Kurulum ve şartlar
- 1. görev: Compute Engine API'yi etkinleştirme
- 2. görev: Cloud Storage paketi oluşturma
- 3. görev: Kaynak depoyu klonlama
- 4. görev: Compute Engine örnekleri oluşturma
- 5. görev: Yönetilen örnek grupları oluşturma
- 6. görev: Yük dengeleyicileri oluşturma
- 7. görev: Compute Engine'i ölçeklendirme
- 8. görev: Web sitesini güncelleme
- Tebrikler!
GSP662
Genel bakış
Google Cloud'da web sitelerini dağıtmanın birçok yolu vardır. Her çözüm; farklı özellikler, olanaklar ve kontrol düzeyleri sunar. Compute Engine, web sitesini çalıştırırken kullanılan altyapı üzerinde derin bir kontrol seviyesi sunmakla birlikte, Google Kubernetes Engines (GKE), App Engine veya diğer çözümlere göre biraz daha fazla operasyon yönetimi gerektirir. Compute Engine ile altyapının sanal makineler ve yük dengeleyiciler gibi birçok yönü üzerinde ayrıntılı kontrol sahibi olursunuz.
Bu laboratuvarda bir web sitesinin Compute Engine ile nasıl kolayca dağıtılabileceğini ve ölçeklendirilebileceğini göstermek için örnek bir uygulama olan "Fancy Store" e-ticaret web sitesini dağıtacaksınız.
Neler öğreneceksiniz?
Bu laboratuvarda şunları öğreneceksiniz:
- Compute Engine örnekleri oluşturma
- Kaynak örneklerden örnek şablonları oluşturma
- Yönetilen örnek grupları oluşturma
- Yönetilen örnek grubu durum denetimleri oluşturma ve test etme
- HTTP(S) yük dengeleyicileri oluşturma
- Yük dengeleyici durum denetimleri oluşturma
- Önbelleğe alma için İçerik Yayınlama Ağı (CDN) kullanma
Laboratuvarın sonunda web sitenize otomatik iyileştirme, yük dengeleme, otomatik ölçeklendirme ve periyodik güncellemeler sağlamak üzere yönetilen örnek gruplarının içinde örnekleriniz olacak.
Kurulum ve şartlar
Laboratuvarı Başlat düğmesini tıklamadan önce
Buradaki talimatları okuyun. Laboratuvarlar süreli olduğundan duraklatılamaz. Laboratuvarı Başlat'ı tıkladığınızda başlayan zamanlayıcı, Google Cloud kaynaklarının ne süreyle kullanımınıza açık durumda kalacağını gösterir.
Bu uygulamalı laboratuvarı kullanarak, laboratuvar etkinliklerini gerçek bir bulut ortamında (Simülasyon veya demo ortamında değil.) gerçekleştirebilirsiniz. Bu olanağın sunulabilmesi için size yeni, geçici kimlik bilgileri verilir. Bu kimlik bilgilerini laboratuvar süresince Google Cloud'da oturum açmak ve Google Cloud'a erişmek için kullanırsınız.
Bu laboratuvarı tamamlamak için şunlar gerekir:
- Standart bir internet tarayıcısına erişim (Chrome Tarayıcı önerilir).
- Laboratuvarı tamamlamak için yeterli süre. (Laboratuvarlar, başlatıldıktan sonra duraklatılamaz)
Laboratuvarınızı başlatma ve Google Cloud Console'da oturum açma
-
Laboratuvarı Başlat düğmesini tıklayın. Laboratuvar için ödeme yapmanız gerekiyorsa ödeme yöntemini seçebileceğiniz bir pop-up açılır. Soldaki Laboratuvar Ayrıntıları panelinde şunlar yer alır:
- Google Cloud Console'u aç düğmesi
- Kalan süre
- Bu laboratuvarda kullanmanız gereken geçici kimlik bilgileri
- Bu laboratuvarda ilerlemek için gerekebilecek diğer bilgiler
-
Google Cloud Console'u aç'ı tıklayın (veya Chrome Tarayıcı'yı kullanıyorsanız sağ tıklayıp Bağlantıyı gizli pencerede aç'ı seçin).
Laboratuvar, kaynakları çalıştırır ve sonra Oturum açın sayfasını gösteren başka bir sekme açar.
İpucu: Sekmeleri ayrı pencerelerde, yan yana açın.
Not: Hesap seçin iletişim kutusunu görürseniz Başka bir hesap kullan'ı tıklayın. -
Gerekirse aşağıdaki kullanıcı adını kopyalayıp Oturum açın iletişim kutusuna yapıştırın.
{{{user_0.username | "Username"}}} Kullanıcı adını Laboratuvar ayrıntıları panelinde de bulabilirsiniz.
-
İleri'yi tıklayın.
-
Aşağıdaki şifreyi kopyalayıp Hoş geldiniz iletişim kutusuna yapıştırın.
{{{user_0.password | "Password"}}} Şifreyi Laboratuvar ayrıntıları panelinde de bulabilirsiniz.
-
İleri'yi tıklayın.
Önemli: Laboratuvarın sizinle paylaştığı giriş bilgilerini kullanmanız gerekir. Google Cloud hesabınızın kimlik bilgilerini kullanmayın. Not: Bu laboratuvarda kendi Google Cloud hesabınızı kullanabilmek için ek ücret ödemeniz gerekebilir. -
Sonraki sayfalarda ilgili düğmeleri tıklayarak ilerleyin:
- Şartları ve koşulları kabul edin.
- Geçici bir hesap kullandığınızdan kurtarma seçenekleri veya iki faktörlü kimlik doğrulama eklemeyin.
- Ücretsiz denemelere kaydolmayın.
Birkaç saniye sonra Google Cloud Console bu sekmede açılır.
Cloud Shell'i etkinleştirme
Cloud Shell, çok sayıda geliştirme aracı içeren bir sanal makinedir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Cloud Shell, Google Cloud kaynaklarınıza komut satırı erişimi sağlar.
- Google Cloud Console'un üst kısmından Cloud Shell'i etkinleştir
simgesini tıklayın.
Bağlandığınızda, kimliğiniz doğrulanmış olur. Proje ise PROJECT_ID'nize göre ayarlanmıştır. Çıkış, bu oturum için PROJECT_ID'yi tanımlayan bir satır içerir:
gcloud
, Google Cloud'un komut satırı aracıdır. Cloud Shell'e önceden yüklenmiştir ve sekmeyle tamamlamayı destekler.
- (İsteğe bağlı) Etkin hesap adını şu komutla listeleyebilirsiniz:
-
Yetkilendir'i tıklayın.
-
Çıkışınız aşağıdaki gibi görünecektir:
Çıkış:
- (İsteğe bağlı) Proje kimliğini şu komutla listeleyebilirsiniz:
Çıkış:
Örnek çıkış:
gcloud
ile ilgili tüm belgeleri, Google Cloud'daki gcloud CLI'ya genel bakış rehberinde bulabilirsiniz.
Bölgenizi ve alt bölgenizi ayarlayın
Belirli Compute Engine kaynakları, bölge ve alt bölgelerde bulunur. Bölge, kaynaklarınızı çalıştırabileceğiniz belirli bir coğrafi konumdur. Her bölgede bir veya daha fazla alt bölge vardır.
Laboratuvarınızın varsayılan bölgesini ve alt bölgesini ayarlamak için Cloud Console'da şu gcloud komutlarını çalıştırın:
1. görev: Compute Engine API'yi etkinleştirme
- Aşağıdaki komutu çalıştırarak Compute Engine API'yi etkinleştirin:
2. görev: Cloud Storage paketi oluşturma
Hem derleme kodunuzu hem de başlangıç komut dosyalarınızı barındırmak için bir Cloud Storage paketi kullanacaksınız.
- Cloud Shell'den aşağıdaki kodu yürüterek yeni bir Cloud Storage paketi oluşturun:
$DEVSHELL_PROJECT_ID
ortam değişkeninin kullanılma amacı, nesne adlarının benzersiz olmasını sağlamaktır. Google Cloud'daki tüm proje kimliklerinin benzersiz olması gerektiğinden, proje kimliğinin eklenmesi diğer adların da benzersiz olmasını sağlar.
Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın.
3. görev: Kaynak depoyu klonlama
Web sitenizin temeli olarak monolith-to-microservices
deposunu temel alan mevcut Fancy Store e-ticaret web sitesini kullanın.
Compute Engine'e dağıtımla ilgili özelliklere odaklanabilmek için kaynak kodunu klonlayın. Bu laboratuvarın devamında, Compute Engine üzerinde güncelleme işleminin ne kadar basit olduğunu görmek için kodda küçük bir güncelleme yapacaksınız.
- Kaynak kodu klonlayın, ardından
monolith-to-microservices
dizinine gidin:
- Uygulamanın yerel olarak çalıştırılmasını sağlamak için kodun ilk derlemesini çalıştırın:
Bu komut dosyasının tamamlanması birkaç dakika sürer.
- İşlem tamamlandıktan sonra aşağıdaki komutla Cloud Shell'in uyumlu bir nodeJS sürümü çalıştırdığından emin olun:
- Ardından aşağıdaki komutu çalıştırarak uygulamayı test edin,
microservices
dizinine geçin ve web sunucusunu başlatın:
Aşağıdaki çıkışı göreceksiniz:
- Web önizleme simgesini tıklayıp ardından Preview on port 8080'yi (Bağlantı noktası 8080'de önizle) seçerek uygulamanızı önizleyin.
Bu işlemi yaptığınızda, Fancy Store'un ön ucunu görebileceğiniz yeni bir pencere açılır.
- Web sitesini görüntüledikten sonra bu pencereyi kapatın ve terminal penceresinde CTRL+C tuşlarına basarak web sunucusu işlemini durdurun.
4. görev: Compute Engine örnekleri oluşturma
Artık bazı Compute Engine örneklerini dağıtmaya başlamanın zamanı geldi.
Aşağıdaki adımlarda şunları yapacaksınız:
- Örnekleri yapılandırmak için başlangıç komut dosyası oluşturma
- Kaynak kodunu klonlama ve Google Cloud Storage'a yükleme
- Arka uç mikro hizmetlerini barındırmak için bir Compute Engine örneği dağıtma
- Arka uç mikro hizmetler örneğini kullanmak için ön uç kodunu yeniden yapılandırma
- Ön uç mikro hizmetini barındırmak için Compute Engine örneği dağıtma
- İletişime olanak tanıyacak şekilde ağı yapılandırma
Başlangıç komut dosyasını oluşturma
Başlangıç komut dosyası, örneğe her başlatıldığında ne yapılacağına ilişkin talimatları vermek için kullanılır. Bu yolla örnekler otomatik olarak yapılandırılır.
- Cloud Shell'de aşağıdaki komutu çalıştırarak
startup-script.sh
adlı bir dosya oluşturun:
- Kod düzenleyiciyi açmak için Cloud Shell şeridinde Open Editor'ı (Düzenleyiciyi Aç) tıklayın.
-
monolith-to-microservices
klasörüne gidin. -
Aşağıdaki kodu
startup-script.sh
dosyasına ekleyin. Eklendikten sonra kodun bir bölümünü düzenleyeceksiniz:
- Dosyada
[DEVSHELL_PROJECT_ID]
metnini bulup bu metin yerine proje kimliğinizi girin:
startup-script.sh
dosyasındaki kod satırı aşağıdaki gibi görünür:
-
startup-script.sh
dosyasını kaydedin fakat henüz kapatmayın. -
Cloud Shell kod düzenleyicinin sağ alt kısmına bakın ve "End of Line Sequence"ın (Satır Sırasının Sonu) "CRLF" olarak değil, "LF" olarak ayarlandığından emin olun.
- CRLF olarak ayarlanmışsa CRLF'yi tıklayın ve açılır menüden LF'yi seçin.
- End of Line Sequence (Satır Sırasının Sonu) zaten LF olarak ayarlanmışsa olduğu gibi bırakın.
-
startup-script.sh
dosyasını kapatın. -
Cloud Shell terminaline dönün ve aşağıdaki komutu çalıştırarak
startup-script.sh
dosyasını paketinize kopyalayın:
Artık dosyaya şu adresten erişilebilir: https://storage.googleapis.com/[PAKET_ADI]/startup-script.sh
.
[PAKET_ADI], Cloud Storage paketinin adını temsil eder. Bu paket, varsayılan olarak yalnızca yetkili kullanıcılar ve hizmet hesapları tarafından görüntülenebilir. Dolayısıyla web tarayıcısı üzerinden erişilemez. Compute Engine örnekleri kendi hizmet hesapları aracılığıyla bu pakete otomatik olarak erişebilir.
Başlangıç komut dosyası aşağıdaki görevleri yerine getirir:
- Günlük kaydı aracısını yükler. Aracı syslog'dan günlükleri otomatik olarak toplar.
- Node.js'yi ve Supervisor'ı yükler. Supervisor, uygulamayı bir arka plan programı olarak çalıştırır.
- Cloud Storage paketinden uygulamanın kaynak kodunu klonlar ve bağımlıları yükler.
- Uygulamayı çalıştırmak için Supervisor'ı yapılandırır. Supervisor, beklenmedik bir şekilde çıkış yapılırsa veya bir yönetici ya da işlem tarafından durdurulursa uygulamanın yeniden başlatılmasını sağlar. Ayrıca uygulamanın stdout ve stderr akışlarını günlük kaydı aracısı tarafından toplanması için syslog'a gönderir.
Kodu Cloud Storage paketine kopyalama
Örnekler başlatıldığında kod Cloud Storage paketinden alınır. Böylece bazı yapılandırma değişkenlerini kodun .env
dosyası içinde depolayabilirsiniz.
- Klonlanan kodu paketinize kopyalayın:
node_modules
bağımlı dizinleri, kopyalamanın olabildiğince hızlı ve etkili olmasını sağlamak için silinir. Bunlar, örnekler başlatıldığında yeniden oluşturulur.
Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın.
Arka uç örneğini dağıtma
Dağıtılacak ilk örnek, Orders (Siparişler) ve Products (Ürünler) mikro hizmetlerini barındıracak olan arka uç örneği olacaktır.
- Başlangıç komut dosyasını kullanacak şekilde yapılandırılan bir
e2-standard-2
örneği oluşturmak için aşağıdaki komutu yürütün.backend
örneği olarak etiketlendiğinden bu örneğe daha sonra belirli güvenlik duvarı kurallarını uygulayabilirsiniz:
Arka uçla bağlantıyı yapılandırma
Uygulamanın ön ucunu dağıtmadan önce yapılandırmayı yeni dağıttığınız arka uca işaret edecek şekilde güncellemeniz gerekir.
- Aşağıdaki komutla arka ucun harici IP adresini alın. Arka uç örneği için
EXTERNAL_IP
sekmesinin altına bakın:
Örnek çıkış:
-
Arka uç için harici IP'yi kopyalayın.
-
Cloud Shell gezgininde
monolith-to-microservices
>react-app
'e gidin. -
Kod Düzenleyici'de
.env
dosyasını görüntülemek için View (Görünüm) > Toggle Hidden Files'ı (Gizli Dosyaları Aç/Kapat) seçin.
Sonraki adımda .env
dosyasını arka ucun harici IP'sine işaret edecek şekilde düzenleyin. [ARKA_UÇ_ADRESİ], yukarıdaki gcloud
komutunda belirlenen arka uç örneğinin harici IP adresini temsil eder.
-
.env
dosyasındalocalhost
öğesini[ARKA_UÇ_ADRESİ]
değerinizle değiştirin:
-
Dosyayı kaydedin.
-
Cloud Shell'de aşağıdaki komutu çalıştırarak
react-app
'i yeniden derleyin. Bu işlemle ön uç kodu güncellenir:
- Ardından uygulama kodunu Cloud Storage paketine kopyalayın:
Ön uç örneğini dağıtma
Artık kod yapılandırıldığına göre, ön uç örneğini dağıtın.
- Öncekine benzer bir komutla
frontend
örneğini dağıtmak için aşağıdaki kodu yürütün. Bu örnek güvenlik duvarıyla ilgili amaçlarlafrontend
olarak etiketlenmiştir:
Ağı yapılandırma
- Ön uç için bağlantı noktası 8080'e ve arka uç için de bağlantı noktası 8081-8082'ye erişim sağlayacak güvenlik duvarı kuralları oluşturun. Bu güvenlik duvarı komutlarında, uygulama için örnek oluşturulurken atanan etiketler kullanılır:
Web sitesi artık tümüyle işlevsel olmalıdır.
-
frontend
harici IP'sine gitmek için adresi bilmeniz gerekir. Aşağıdakini çalıştırın vefrontend
örneğinin EXTERNAL_IP değerini bulun:
Örnek çıkış:
Örneğin başlatılması ve yapılandırılması birkaç dakika sürebilir.
-
3 dakika bekleyip yeni bir tarayıcı sekmesi açın ve web sitesine erişmek için
http://[ÖN_UÇ_ADRESİ]:8080
adresine gidin. Burada [ÖN_UÇ_ADRESİ], yukarıda belirlenen ön uç EXTERNAL_IP değeridir. -
Products (Ürünler) ve Orders (Siparişler) sayfalarına gitmeyi deneyin; artık gidebiliyor olmalısınız.
Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın.
5. görev: Yönetilen örnek grupları oluşturma
Uygulamanın ölçeklendirilmesine olanak sağlamak için yönetilen örnek grupları oluşturulur ve bunlar, örnek şablonları olarak frontend
ve backend
örneklerini kullanır.
Yönetilen örnek grubu (MIG), tek bir alt bölgede tek varlık gibi yönetebileceğiniz birbirinin aynı örnekler içerir. Yönetilen örnek grupları, örneklerinizi proaktif olarak kullanılabilir durumda, diğer bir deyişle RUNNING (ÇALIŞIYOR) durumda tutarak yüksek kullanılabilirlik sağlar. Otomatik iyileştirme, yük dengeleme, otomatik ölçeklendirme ve periyodik güncellemeler sağlamak amacıyla ön uç ve arka uç örneklerinizde yönetilen örnek grupları kullanacaksınız.
Kaynak örnekten örnek şablonu oluşturma
Yönetilen örnek grubu oluşturabilmek için önce grubun temelini sağlayan bir örnek şablonu oluşturmanız gerekir. Örnek şablonları yeni sanal makine örnekleri oluştururken kullanılacak makine türü, önyükleme diski görüntüsü veya kapsayıcı görüntüsü, ağ ve diğer örnek özelliklerini tanımlamanıza olanak sağlar. Örnek şablonlarını kullanarak yönetilen örnek grubunun içinde örnekler oluşturabileceğiniz gibi tek tek örnekler bile oluşturabilirsiniz.
Örnek şablonunu oluşturmak için daha önce hazırladığınız mevcut örnekleri kullanın.
- İlk olarak her iki örneği de durdurun:
- Ardından kaynak örneklerin her birinden örnek şablonu oluşturun:
- Örnek şablonlarının oluşturulduğunu onaylayın:
Örnek çıkış:
- Örnek şablonları oluşturulduktan sonra kaynak alanından tasarruf etmek için
backend
sanal makinesini silin:
- İstendiğinde y yazın.
Normalde frontend
sanal makinesini silebilirsiniz ancak bu sanal makineyi laboratuvarın sonraki aşamalarında örnek şablonunu güncellemek için kullanacaksınız.
Yönetilen örnek grubu oluşturma
- Ardından biri ön uç ve diğeri de arka uç için olmak üzere iki yönetilen örnek grubu oluşturun:
Bu yönetilen örnek grupları örnek şablonlarını kullanır ve her grubun içinde birer örnek olmak üzere iki örneğin başlatılacağı şekilde yapılandırılır. Örnekler base-instance-name
temel alınarak otomatik olarak adlandırılır ve sonlarına rastgele karakterler eklenir.
- Sizin uygulamanızda
frontend
mikro hizmeti, bağlantı noktası 8080 üzerinde çalışırkenbackend
mikro hizmetiorders
için bağlantı noktası 8081 ve products için bağlantı noktası 8082 üzerinde çalışır:
Bunlar, standart olmayan bağlantı noktaları olduğundan, bunları tanımlamak için adlandırılmış bağlantı noktaları belirtirsiniz. Adlandırılmış bağlantı noktaları, hizmet adını ve bu hizmetin üzerinde çalıştırıldığı bağlantı noktasını temsil eden anahtar:değer çifti meta verileridir. Adlandırılmış bağlantı noktaları bir örnek grubuna atanabilir ve bu da hizmetin gruptaki tüm örneklerde kullanılabilir olduğunu gösterir. Bu bilgiler daha sonra yapılandırılacak olan HTTP Yük Dengeleme hizmeti tarafından kullanılır.
Otomatik iyileştirmeyi yapılandırma
Uygulamanın kendi kullanılabilirliğini geliştirmek ve yanıt verdiğini doğrulamak için yönetilen örnek gruplarına bir otomatik iyileştirme politikası yapılandırın.
Otomatik iyileştirme politikası uygulamanın beklendiği gibi yanıt verdiğini doğrulamak için uygulama tabanlı durum denetimine güvenir. Uygulamanın yanıt verip vermediğini denetlemek, yalnızca örneğin RUNNING (ÇALIŞIYOR) durumda olduğunu doğrulamaktan (varsayılan davranış) daha kesin sonuç verir.
-
frontend
vebackend
için arka arkaya 3 kez "unhealthy" (kötü durumda) ayarını döndürürse örneği onaran bir durum denetimi oluşturun:
- Durum denetimi kontrollerinin 8080-8081 bağlantı noktalarında mikro hizmetlere bağlanmasını sağlamak için bir güvenlik duvarı kuralı oluşturun:
- Durum denetimlerini ilgili hizmetlerine uygulayın:
- Otomatik iyileştirmenin gruptaki örnekleri izlemesine biraz zaman tanımak için laboratuvara devam edin. Laboratuvarın sonunda otomatik iyileştirmeyi test etmek için bir hatayı simüle edeceksiniz.
Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın.
6. görev: Yük dengeleyicileri oluşturma
Yönetilen örnek gruplarınızı tamamlamak amacıyla ön uç ve arka uç mikro hizmetlerine trafik sağlamak için HTTP(S) yük dengeleyicileri kullanın. Yol oluşturma kurallarına göre uygun arka uç hizmetlerine trafik göndermek için ise eşlemeleri kullanın. Bu sayede, tüm hizmetler için yük dengeleme uygulanmış tek bir IP elde edilir.
Google Cloud'da yük dengeleme seçenekleri hakkında daha fazla bilgi edinebilirsiniz: Yük Dengelemeye Genel Bakış.
HTTP(S) yük dengeleyicisi oluşturma
Google Cloud, birçok farklı türde yük dengeleyici sunar. Bu laboratuvarda trafiğiniz için HTTP(S) yük dengeleyici kullanın. HTTP yük dengeleyici şöyle yapılandırılmıştır:
- Bir iletim kuralı gelen istekleri hedef HTTP proxy'ye yönlendirir.
- Hedef HTTP proxy isteğe uygun arka uç hizmetini belirlemek için her isteği bir URL eşlemesine göre denetler.
- Arka uç hizmeti; ekli arka uçlarının hizmet kapasitesi, alt bölgesi ve örnek durumuna göre her isteği uygun arka uca yönlendirir. Her arka uç örneğinin durumu HTTP durum denetimi kullanılarak doğrulanır. Arka uç hizmeti HTTPS veya HTTP/2 durum denetimi kullanacak şekilde yapılandırıldıysa istek, arka uç örneğine giderken şifrelenir.
- Yük dengeleyici ile örnek arasındaki oturumlar HTTP, HTTPS veya HTTP/2 protokolünü kullanabilir. HTTPS veya HTTP/2 kullanırsanız arka uç hizmetlerindeki her örneğin bir SSL sertifikası olmalıdır.
- Her hizmette trafik sunabilecek örnekleri belirlemek için kullanılacak durum denetimlerini oluşturun:
- Yük dengeli trafiğin hedefi olan arka uç hizmetlerini oluşturun. Arka uç hizmetleri sizin oluşturduğunuz durum denetimlerini ve adlandırılmış bağlantı noktalarını kullanır:
- Yük dengeleyicinin arka uç hizmetlerini ekleyin:
- URL eşlemesi oluşturun. URL eşlemesi hangi URL'lerin hangi arka uç hizmetlerine yönlendirildiğini tanımlar:
-
/api/orders
ve/api/products
yollarının ilgili hizmetlere yönlendirilmesini sağlamak için bir yol eşleştirici oluşturun:
- URL eşlemesine bağlanan bir proxy oluşturun:
- Herkese açık IP adresini ve bağlantı noktasını proxy'ye bağlayan bir genel iletim kuralı oluşturun:
Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın.
Yapılandırmayı güncelleme
Artık yeni bir statik IP adresiniz olduğuna göre frontend
kodunu daha önce kullanılan ve backend
örneğine işaret eden geçici adres yerine bu yeni adrese işaret edecek şekilde güncelleyin.
- Cloud Shell'de, içinde yapılandırmanın bulunduğu
.env
dosyasını barındıranreact-app
klasörüne geçin:
- Yük dengeleyicinin IP adresini bulun:
Örnek çıkış:
- Cloud Shell düzenleyicisine dönün ve
.env
dosyasını düzenleyerek yük dengeleyicinin herkese açık IP'sine işaret etmesini sağlayın. [LB_IP] yukarıda belirlenen arka uç örneğinin harici IP adresidir.
-
Dosyayı kaydedin.
-
Ön uç kodunu güncelleyecek olan
react-app
'i yeniden derleyin:
- Uygulama kodunu pakete kopyalayın:
Ön uç örneklerini güncelleme
Artık yeni bir kod ve yapılandırma olduğuna göre, yönetilen örnek grubunun içindeki ön uç örneklerinin yeni kodu almasını istersiniz.
Örnekleriniz, başlatma sırasında kodu aldığından periyodik bir yeniden başlatma komutu düzenleyebilirsiniz:
--max-unavailable
parametresiyle tüm makinelerin hemen değiştirilebileceğini özellikle belirtmiş olursunuz. Bu parametre kullanılmadığında, komut örnekleri yeniden başlatırken kullanılabilirliği güvence altına almak için bir örneğin aktif kalmasını sağlar. Test amacıyla, hızla tamamlanması için tümünü hemen değiştirmeyi belirtiyorsunuz.
Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın.
Web sitesini test etme
- Örneklerin işlenmesine zaman tanımak için
rolling-action replace
komutu gönderildikten sonra 3 dakika bekleyin, ardından yönetilen örnek grubunun durumunu kontrol edin. Aşağıdaki komutu çalıştırarak hizmetin HEALTHY (İyi Durumda) olarak listelendiğini onaylayın:
- İki hizmet de HEALTHY (İyi Durumda) olarak listelenene kadar bekleyin.
Örnek çıkış:
Biraz bekledikten sonra iki örnek de HEALTHY (İyi Durumda) duruma geçmezse, ön uç örneklerinin kurulumunda bir sorun vardır ve bağlantı noktası 8080 üzerinden bu örneklere erişim sağlanamıyordur. Doğrudan bağlantı noktası 8080 üzerinden örneklere göz atarak bunu test edin.
- Her iki öğe de listede HEALTHY (İyi Durumda) olarak görüntülendiğinde CTRL+C tuşlarına basarak
watch
komutundan çıkın.
gcloud compute forwarding-rules list --global
7. görev: Compute Engine'i ölçeklendirme
Şimdiye kadar her birinde iki örnek bulunan iki yönetilen örnek grubu oluşturdunuz. Bu tam olarak işlevsel ama yükten bağımsız olarak statik bir yapılandırmadır. Şimdi, her yönetilen örnek grubunu otomatik olarak ölçeklendirmek üzere kullanımı temel alan bir otomatik ölçeklendirme politikası oluşturacaksınız.
Kullanıma göre otomatik olarak yeniden boyutlandırma
- Otomatik ölçeklendirme politikası oluşturmak için aşağıdaki kodu yürütün:
Bu komutlar, yönetilen örnek gruplarında kullanım %60'ın üzerine çıktığında otomatik olarak örnek ekleyen ve yük dengeleyici %60 kullanım oranının altına düştüğünde örnek kaldıran bir otomatik ölçekleyici oluşturur.
İçerik yayınlama ağını etkinleştirme
Ölçeklendirmeye yardımcı olabilecek bir diğer özellik, ön uç için önbelleğe alma sağlamak üzere içerik yayınlama ağı hizmetini etkinleştirmektir.
- Ön uç hizmetinde aşağıdaki komutu yürütün:
Kullanıcı HTTP(S) yük dengeleyiciden içerik istediğinde istek, Google Front End (GFE) hizmetine gelir ve bu hizmet de kullanıcı isteğinin yanıtı için ilk olarak Cloud CDN önbelleğine bakar. GFE önbelleğe alınmış bir yanıt bulursa önbellekteki yanıtı kullanıcıya gönderir. Bu önbellek isabeti olarak adlandırılır.
GFE istek için önbelleğe alınmış bir yanıt bulamazsa doğrudan arka uca istekte bulunur. Bu isteğin yanıtı önbelleğe alınabiliyorsa GFE yanıtı Cloud CDN önbelleğinde depolar ve bu şekilde sonraki isteklerde önbellek kullanılabilir.
Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın.
8. görev: Web sitesini güncelleme
Örnek şablonunu güncelleme
Mevcut örnek şablonları üzerinde düzenleme yapılamaz. Bununla birlikte, örnekleriniz durum bilgisiz olduğundan ve tüm yapılandırma başlangıç komut dosyası yoluyla gerçekleştirildiğinden, şablon ayarlarını değiştirmek istediğinizde örnek şablonunu değiştirmeniz yeterlidir. Şimdi daha büyük bir makine türü kullanmak ve bunu dışarı çıkarmak için basit bir değişiklik yapacaksınız.
Aşağıdaki adımları uygulayarak:
-
Örnek şablonuna temel oluşturan
frontend
örneğini güncelleyin. Güncelleme sırasında örnek şablonu görüntüsünün güncellenmiş sürümüne bir dosya yerleştirin, ardından örnek şablonunu güncelleyin, yeni şablonu kullanıma sunun ve dosyanın yönetilen örnek grubu örneklerinde mevcut olduğunu onaylayın. -
e2-standard-2
makine türündene2-small
makine türüne geçerek örnek şablonunuzun makine türünü değiştirin.
- Aşağıdaki komutu çalıştırarak ön uç örneğinin makine türünü değiştirin:
- Yeni örnek şablonunu oluşturun:
- Güncellenen örnek şablonunu yönetilen örnek grubunun kullanımına sunun:
- 3 dakika bekleyin, ardından güncellemenin durumunu izlemek için aşağıdaki komutu çalıştırın:
Bu işlem kısa süre içinde tamamlanır.
Aşağıdaki durumda en az 1 örneğiniz olduğunda:
- STATUS: RUNNING
- ACTION None olarak ayarlanmış
- INSTANCE_TEMPLATE: yeni şablon adı (fancy-fe-new)
-
Sonraki komutta kullanmak üzere listelenen makinelerden birinin adını kopyalayın.
-
watch
işleminden çıkmak için CTRL+C tuşlarına basın. -
Sanal makinenin yeni makine türünü (e2-small) kullanıp kullanmadığını öğrenmek için aşağıdaki komutu çalıştırın. Burada [SANAL_MAKİNE_ADI], yeni oluşturulan örneği temsil eder:
Beklenen örnek çıkış:
Web sitesinde değişiklik yapma
Senaryo: Pazarlama ekibiniz sizden sitenizin ana sayfasını değiştirmenizi istedi. Bu sayfanın şirketinizin kimliği ve aslında nelerin satışını yaptığı konusunda daha bilgilendirici olması gerektiğini düşünüyorlar.
Görev: Pazarlama ekibini mutlu etmek için ana sayfaya biraz metin ekleyin. Geliştiricilerden biri istenen değişiklikleri index.js.new
adlı bir dosyada zaten hazırlamış. Bu dosyayı index.js
dosyasına kopyalarsanız değişiklikler sayfaya yansıtılacaktır. Uygun değişiklikleri yapmak için aşağıdaki talimatları uygulayın.
- Aşağıdaki komutları çalıştırarak güncellenmiş dosyayı kopyalayın ve dosya adının doğru olmasını sağlayın:
- Değişiklikleri doğrulamak için dosyanın içeriğini yazdırın:
Bu işlem sonucunda elde edilen kod aşağıdaki gibi görünmelidir:
React bileşenlerini güncellediniz ancak statik dosyaları oluşturmak için React uygulamasını derlemeniz gerekiyor.
- React uygulamasını derlemek için aşağıdaki komutu çalıştırın ve monolitin herkese açık dizinine kopyalayın:
- Ardından bu kodu pakete yeniden aktarın:
Periyodik değişiklikleri aktarma
- Şimdi tüm örnekleri güncellemeyi almak için değiştirilmeye zorlayın:
Not: Bu periyodik değiştirme örneğinde, --max-unavailable
parametresiyle tüm makinelerin hemen değiştirilebileceğini özellikle belirtmiş olursunuz. Bu parametre kullanılmadığında, komut örnekleri değiştirirken kullanılabilirliği güvence altına almak için bir örneğin aktif kalmasını sağlar. Test amacıyla, hızla tamamlanması için tümünü hemen değiştirmeyi belirtiyorsunuz. Üretimde bir arabellek boşluğu bırakmak, web sitesinin güncelleme sırasında hizmet vermeye devam etmesini sağlayabilir.
Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın.
- Örneklerin işlenmesine zaman tanımak için
rolling-action replace
komutu gönderildikten sonra 3 dakika bekleyin, ardından yönetilen örnek grubunun durumunu kontrol edin. Aşağıdaki komutu çalıştırarak hizmetin HEALTHY (İyi Durumda) olarak listelendiğini onaylayın:
- Her iki hizmetin de görüntülenmesi ve HEALTHY (İyi Durumda) olması için biraz bekleyin.
Örnek çıkış:
-
Listede öğeler HEALTHY (İyi Durumda) durumuyla gösterildiğinde, CTRL+C tuşlarına basarak
watch
komutundan çıkın. -
Web sitesine
http://[LB_IP]
üzerinden göz atabilirsiniz. Burada [LB_IP], yük dengeleyici için belirlenen IP_ADDRESS değeridir ve aşağıdaki komutla bulunabilir:
Yeni web sitesi değişiklikleri artık görülebiliyor olmalıdır.
Hata simülasyonu
Durum denetiminin çalıştığını onaylamak için bir örneğe giriş yapın ve hizmetleri durdurun.
- Örnek adını bulmak için aşağıdakini yürütün:
- Bir örnek adı kopyalayın, ardından örnekte kabuğun güvenliğini sağlamak için aşağıdakini çalıştırın; burada ÖRNEK_ADI, listedeki örneklerden biridir:
-
Onaylamak için "y" yazın ve parola kullanmamak için Enter tuşuna iki kez basın.
-
Örneğin içinde
supervisorctl
kullanarak uygulamayı durdurun:
- Örnekten çıkın:
- Onarım işlemlerini izleyin:
Bu işlemin tamamlanması birkaç dakika sürer.
Aşağıdaki örnek çıkışı bulun:
Yönetilen örnek grubu örneği onarmak için yeniden oluşturdu.
- Ayrıca, konsol aracılığıyla izlemek için gezinme menüsü > Compute Engine > VM instances'a (Sanal makine örnekleri) gidebilirsiniz.
Tebrikler!
Web sitenizi Compute Engine üzerinde başarıyla dağıttınız, ölçeklendirdiniz ve güncellediniz. Artık Compute Engine, yönetilen örnek grupları, yük dengeleyiciler ve durum denetimleri konularında deneyimli bir kullanıcısınız.
Sonraki adımlar / Daha fazla bilgi
- Google Cloud'da Ölçeklenebilir Web Uygulamaları Barındırma konulu örnek olay videosunu izleyin
Google Cloud eğitimi ve sertifikası
...Google Cloud teknolojilerinden en iyi şekilde yararlanmanıza yardımcı olur. Derslerimizde teknik becerilere odaklanırken en iyi uygulamalara da yer veriyoruz. Gerekli yetkinlik seviyesine hızlıca ulaşmanız ve öğrenim maceranızı sürdürebilmeniz için sizlere yardımcı olmayı amaçlıyoruz. Temel kavramlardan ileri seviyeye kadar farklı eğitim programlarımız mevcut. Ayrıca, yoğun gündeminize uyması için talep üzerine sağlanan, canlı ve sanal eğitim alternatiflerimiz de var. Sertifikasyonlar ise Google Cloud teknolojilerindeki becerilerinizi ve uzmanlığınızı doğrulamanıza ve kanıtlamanıza yardımcı oluyor.
Kılavuzun Son Güncellenme Tarihi: 26 Nisan 2024
Laboratuvarın Son Test Edilme Tarihi: 15 Aralık 2023
Telif Hakkı 2024 Google LLC Tüm hakları saklıdır. Google ve Google logosu, Google LLC şirketinin ticari markalarıdır. Diğer tüm şirket ve ürün adları ilişkili oldukları şirketlerin ticari markaları olabilir.