Get access to 700+ labs and courses

Compute Engine'i Kullanarak Google Cloud'da Web Uygulaması Barındırma (AWS)

Lab 1 hour 30 minutes universal_currency_alt 5 Credits show_chart Intermediate
info This lab may incorporate AI tools to support your learning.
Get access to 700+ labs and courses

GSP1122

Google Cloud yönlendirmesiz öğrenim laboratuvarı logosu

Genel bakış

Uygulama oluşturma sürecinin yönetimi, dağıtım ve devamlı güncellemeler, bulut sistemlerinin temelini oluşturur. HDS'ye uymak için kaynakların optimize edilmesi, kod değişikliklerinin dağıtılması, sorunsuz sanal makine güncellemeleri ve ağ/yük dengeleme yapılandırması bu bağlamda büyük önem taşır. AWS, CodeDeploy ardışık düzenlerinden, otomatik olarak ölçeklendirilen EC2 örneklerindeki dağıtım gruplarından ve IAM/güvenlik duvarı yapılandırmasından yararlanır. Hizmet rolleri, uygulama yürütme ve iletişimi açısından çok önemlidir. NAT ağ geçitleri, yük dengeleyiciler, durum denetimleri ve replika stratejileri ise altyapı kurulumunu tamamlar. Sanal makineler güncellenirken tetikleyicilerle örnekler yenilenebilir ve Lambda işlevleri kullanabilir.

Google Cloud da benzer bir esneklik sunar. Kod güncellemelerini getirebilen başlangıç komut dosyaları sayesinde, sıfır kapalı kalma süresiyle periyodik güncellemeler yapılabilir. GKE ve App Engine gibi çözümlere kıyasla Compute Engine, sanal makineler ve yük dengeleyiciler üzerinde ayrıntılı kontrol sağlar. Bu laboratuvarda, web uygulaması yönetimine yönelik bu güçlü yaklaşımı vurgulayarak "Fancy Store" e-ticaret uygulamasının Compute Engine'de nasıl dağıtılacağı ve ölçeklendirileceği gösterilecektir.

Hedefler

Bu laboratuvarda, aşağıdaki görevleri nasıl gerçekleştireceğinizi öğreneceksiniz:

Bu laboratuvarın sonunda web sitemiz için 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. Start Lab'i (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 simülasyon veya demo ortamı yerine gerçek bir bulut ortamında gerçekleştirebilirsiniz. Bunu yapabilmeniz 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 kullanabilirsiniz.

Bu laboratuvarı tamamlamak için gerekenler:

  • Standart bir internet tarayıcısına erişim (Chrome Tarayıcı önerilir)
Not: Bu laboratuvarı çalıştırmak için tarayıcıyı gizli modda (önerilen) veya gizli tarama penceresinde açın. Aksi takdirde, kişisel hesabınızla öğrenci hesabınız arasında oluşabilecek çakışmalar nedeniyle kişisel hesabınızdan ek ücret alınabilir.
  • Laboratuvarı tamamlamak için yeterli süre (Laboratuvarlar başlatıldıktan sonra duraklatılamaz.)
Not: Bu laboratuvar için yalnızca öğrenci hesabını kullanın. Farklı bir Google Cloud hesabı kullanırsanız bu hesaptan ödeme alınabilir.

Laboratuvarınızı başlatma ve Google Cloud Console'da oturum açma

  1. Laboratuvarı Başlat düğmesini tıklayın. Laboratuvar için ödeme yapmanız gerekiyorsa ödeme yöntemini seçebileceğiniz bir iletişim kutusu açılır. Soldaki "Laboratuvar ayrıntıları" panelinde şunlar yer alır:

    • "Google Cloud konsolunu aç" düğmesi
    • Kalan süre
    • Bu laboratuvarda kullanmanız gereken geçici kimlik bilgileri
    • Bu laboratuvarda ilerlemek için gerekebilecek diğer bilgiler
  2. 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ç" 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.
  3. 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.

  4. İleri'yi tıklayın.

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

  6. İ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.
  7. Sonraki sayfalarda ilgili düğmeleri tıklayarak ilerleyin:

    • Hükümler 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 konsolu bu sekmede açılır.

Not: Google Cloud ürün ve hizmetlerine erişmek için gezinme menüsünü tıklayın veya Arama alanına hizmetin veya ürünün adını yazın. Gezinme menüsü simgesi ve arama alanı

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.

  1. Google Cloud konsolunun üst kısmından Activate Cloud Shell (Cloud Shell'i etkinleştir) Cloud Shell'i etkinleştir simgesi simgesini tıklayın.

  2. Aşağıdaki pencereleri tıklayın:

    • Cloud Shell bilgi penceresinde devam edin.
    • Google Cloud API çağrıları yapmak için Cloud Shell'e kimlik bilgilerinizi kullanma yetkisi verin.

Bağlandığınızda kimliğiniz zaten doğrulanmıştır. 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:

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud, Google Cloud'un komut satırı aracıdır. Cloud Shell'e önceden yüklenmiştir ve sekmeyle tamamlamayı destekler.

  1. (İsteğe bağlı) Etkin hesap adını şu komutla listeleyebilirsiniz:
gcloud auth list
  1. Authorize'ı (Yetkilendir) tıklayın.

Çıkış:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (İsteğe bağlı) Proje kimliğini şu komutla listeleyebilirsiniz:
gcloud config list project

Çıkış:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Not: gcloud ile ilgili tüm belgeleri, Google Cloud'daki gcloud CLI'a genel bakış rehberinde bulabilirsiniz.

Varsayılan alt bölgeyi ayarlama

  • Varsayılan alt bölgeyi ve proje yapılandırmasını ayarlayın:
gcloud config set compute/zone {{{ project_0.default_zone | "ZONE" }}}

Bölgeler ve Alt Bölgeler belgesinde daha fazla bilgi edinebilirsiniz.

Not: gcloud'u kendi makinenizde çalıştırdığınızda yapılandırma ayarları oturumlar genelinde kalıcı olur. Ama Cloud Shell'de bu ayarları her yeni oturum veya yeniden bağlanma için tekrar belirlemeniz gerekir.

1. görev: Compute Engine API ve Gemini Code Assist'i etkinleştirme

Ardından Compute Engine API'yi etkinleştirin.

  • Compute Engine API'yi etkinleştirmek için aşağıdaki komutu yürütün:
gcloud services enable compute.googleapis.com

Cloud Shell IDE'de Gemini Code Assist'i etkinleştirme

Cloud Shell gibi entegre geliştirme ortamlarında (IDE) Gemini Code Assist'i kullanarak kodlarla ilgili rehberlik alabilir veya kodlarınızdaki sorunları çözebilirsiniz. Gemini Code Assist'i kullanmaya başlamadan önce etkinleştirmeniz gerekir.

  1. Cloud Shell'de aşağıdaki komutu kullanarak Google Cloud için Gemini API'yi etkinleştirin:
gcloud services enable cloudaicompanion.googleapis.com
  1. Cloud Shell araç çubuğunda Open Editor'ı (Düzenleyiciyi Aç) tıklayın.
Not: Cloud Shell Düzenleyici'yi açmak için Cloud Shell araç çubuğunda Open Editor'ı (Düzenleyiciyi Aç) tıklayın. İhtiyaç duyduğunuzda Open Editor'ı (Düzenleyiciyi Aç) veya Open Terminal'ı (Terminali Aç) tıklayarak Cloud Shell ile kod düzenleyici arasında geçiş yapabilirsiniz.
  1. Sol bölmede Ayarlar simgesini tıklayın, ardından Ayarlar görünümünde Gemini Code Assist'i arayın.

  2. Geminicodeassist: Enable (Geminicodeassist: Etkinleştir) onay kutusunu bulun ve işaretli olduğundan emin olun. Ardından Settings'i (Ayarlar) kapatın.

  3. Ekranın alt kısmındaki durum çubuğunda Cloud Code - No Project'i (Cloud Code - Proje Yok) tıklayın.

  4. Eklentiyi talimatlara uygun şekilde yetkilendirin. Proje otomatik olarak seçilmezse Google Cloud projesi seçin'i tıklayın ve öğesini seçin.

  5. Durum çubuğundaki Cloud Code durum mesajında Google Cloud projenizin () göründüğünü doğrulayın.

2. görev: Cloud Storage paketi oluşturma

Bu görevde, hem derleme kodunuzu hem de başlangıç komut dosyalarınızı barındırmak için bir Cloud Storage paketi yapılandıracaksınız.

  • Cloud Shell'den aşağıdaki kodu yürüterek yeni bir Cloud Storage paketi oluşturun:
gsutil mb gs://fancy-store-{{{project_0.project_id | BUCKET}}}

Hedefi doğrulamak için Check my progress'i (İlerleme durumumu kontrol et) tıklayın. Cloud Storage paketi oluşturma

3. görev: Kaynak depoyu klonlama

Bu görevde, web sitenizin temeli olarak monolith-to-microservices deposuna dayanan mevcut Fancy Store e-ticaret web sitesini kullanacaksınız.

Compute Engine'e dağıtımla ilgili özelliklere odaklanabilmek için kaynak kodunu klonlayacaksınız. Bu laboratuvarın devamında, Compute Engine'de güncelleme işleminin ne kadar basit olduğunu görmek için kodda küçük bir güncelleme yapacaksınız.

  1. Kaynak kodu klonlamak ve monolith-to-microservices dizinine gitmek için aşağıdaki komutları çalıştırın:
git clone https://github.com/googlecodelabs/monolith-to-microservices.git cd ~/monolith-to-microservices
  1. Uygulamanın yerel olarak çalıştırılmasını sağlamak için kodun ilk derlemesini çalıştırın:
./setup.sh

Bu komut dosyasının tamamlanması birkaç dakika sürer.

  1. İşlem tamamlandıktan sonra aşağıdaki komutla Cloud Shell'in uyumlu bir nodeJS sürümü çalıştırdığından emin olun:
nvm install --lts
  1. Ardından aşağıdaki komutu çalıştırarak uygulamayı test edin, microservices dizinine geçin ve web sunucusunu başlatın:
cd microservices npm start

Çıkış şu şekilde görünmelidir:

Çıkış:

Products microservice listening on port 8082! Frontend microservice listening on port 8080! Orders microservice listening on port 8081!
  1. Web önizleme simgesini tıklayıp Preview on port 8080'i (Bağlantı noktası 8080'de önizle) seçerek uygulamanızı önizleyin.

Web önizlemesi simgesi ve Preview on port 8080 (Bağlantı noktası 8080'de önizle) seçeneği vurgulanıyor

Bu işlemi yaptığınızda, Fancy Store'un ön ucunu görebileceğiniz yeni bir pencere açılır.

Not: Önizleme seçeneğinde Frontend'i (Ön uç) görebilirsiniz ancak Products (Ürünler) ve Orders (Siparişler) işlevleri çalışmaz. Bunun nedeni, bu hizmetlerin henüz kullanıma açılmamış olmasıdır.
  1. 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 örneklerini oluşturun

Artık bazı Compute Engine örneklerini dağıtmaya başlamanın zamanı geldi.

Sonraki adımlarda çeşitli işlemler yapacaksınız:

  1. Örnekleri yapılandırmak için başlangıç komut dosyası oluşturma
  2. Kaynak kodunu klonlama ve Google Cloud Storage'a yükleme
  3. Arka uç mikro hizmetlerini barındırmak için bir Compute Engine örneği dağıtma
  4. Arka uç mikro hizmetler örneğini kullanmak için ön uç kodunu yeniden yapılandırma
  5. Ön uç mikro hizmetini barındırmak için Compute Engine örneği dağıtma
  6. İ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.

  1. Kod düzenleyiciyi açmak için Cloud Shell araç çubuğunda Open Editor'ı (Düzenleyiciyi Aç) tıklayın.

Open Editor (Düzenleyiciyi Aç) düğmesi

  1. monolith-to-microservices klasörüne gidin.

  2. File (Dosya) > New File'ı (Yeni Dosya) tıklayın ve startup-script.sh adlı bir dosya oluşturun.

Ardından, bash komut dosyasını düzenlemek için Gemini Code Assist'in yapay zeka destekli akıllı işlemlerinden yararlanacaksınız.

  1. Aşağıdaki kodu dosyaya yapıştırın.
#!/bin/bash # Install logging monitor. The monitor will automatically pick up logs sent to # syslog. curl -s "https://storage.googleapis.com/signals-agents/logging/google-fluentd-install.sh" | bash service google-fluentd restart & # Install dependencies from apt apt-get update apt-get install -yq ca-certificates git build-essential supervisor psmisc # Install nodejs mkdir /opt/nodejs curl https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.gz | tar xvzf - -C /opt/nodejs --strip-components=1 ln -s /opt/nodejs/bin/node /usr/bin/node ln -s /opt/nodejs/bin/npm /usr/bin/npm # Get the application source code from the Google Cloud Storage bucket. mkdir /fancy-store gsutil -m cp -r gs://fancy-store-[PROJECT_ID]/monolith-to-microservices/microservices/* /fancy-store/ # Install app dependencies. cd /fancy-store/ npm install # Create a nodeapp user. The application will run as this user. useradd -m -d /home/nodeapp nodeapp chown -R nodeapp:nodeapp /opt/app # Configure supervisor to run the node app. cat >/etc/supervisor/conf.d/node-app.conf << EOF [program:nodeapp] directory=/fancy-store command=npm start autostart=true autorestart=true user=nodeapp environment=HOME="/home/nodeapp",USER="nodeapp",NODE_ENV="production" stdout_logfile=syslog stderr_logfile=syslog EOF supervisorctl reread supervisorctl update
  1. Dosyayı kaydetmek için File (Dosya) > Save'i (Kaydet) tıklayın.

  2. Cloud Shell kod düzenleyicisinde "End of Line Sequence" (Satır Sonu Dizisi) seçeneğinin "CRLF" değil, "LF" olarak ayarlandığından emin olun. Onaylamak için kod düzenleyicinin sağ alt kısmına bakın.

&quot;End of Line Sequence&quot; (Satır Sırasının Sonu)

  • CRLF olarak ayarlanmışsa CRLF'yi tıklayın ve açılır listeden LF'yi seçerek değiştirin.
  1. Dosya düzenleyicide startup-script.sh adlı bash komut dosyası açıkken, düzenleyicinin sağ üst köşesindeki Gemini Code Assist: Akıllı İşlemler simgesi, Gemini Code Assist'in kullanıma hazır olduğunu gösterir.

  2. Araç çubuğundaki Gemini Code Assist: Smart Actions (Gemini Code Assist: Akıllı İşlemler) Gemini Code Assist simgesini tıklayın.

  3. Gemini Code Assist'ten startup-script.sh dosyasını güncellemenize yardımcı olmasını istemek için araç çubuğunda açılan Gemini Code Assist satır içi metin alanına aşağıdaki istemi yapıştırın.

In the startup-script.sh file, replace the [PROJECT_ID] placeholder with {{{project_0.project_id | PROJECT_ID}}}.
  1. Gemini Code Assist'in kodu bu şekilde değiştirmesi için ENTER tuşuna basın.

  2. Gemini Diff görünümünde istendiğinde Accept'i (Kabul Et) tıklayın.

startup-script.sh içindeki kod satırı şimdi aşağıdakine benzer olmalıdır:

gs://fancy-store-{{{project_0.project_id | BUCKET}}}/monolith-to-microservices/microservices/* /fancy-store/

Ardından, Gemini Code Assist'in yapay zeka destekli akıllı işlemlerinden yararlanarak bash komut dosyasının amacını ve Node.js mikro hizmetinin dağıtımını otomatikleştirmedeki rolünü açıklayan bir metin oluşturacaksınız.

  1. Dosya gezgininde data.csv dosyasını açın. Daha önce olduğu gibi, düzenleyicinin sağ üst köşesindeki Gemini Code Assist: Akıllı İşlemler simgesi, Gemini Code Assist'in kullanıma hazır olduğunu gösterir.

  2. Gemini Code Assist: Smart Actions (Gemini Code Assist: Akıllı İşlemler) Gemini Code Assist: Akıllı İşlemler simgesini tıklayın ve Explain this'i (Bunu açıkla) seçin.

  3. Gemini Code Assist, Explain this (Bunu açıkla) istemiyle önceden doldurulmuş bir sohbet bölmesi açar. Code Assist sohbetinin satır içi metin kutusunda, önceden doldurulmuş istemi aşağıdakiyle değiştirin ve Send'i (Gönder) tıklayın:

You are an expert Application developer at Cymbal AI. Provide a comprehensive explanation of the startup-script.sh bash script's purpose and functionality. The explanation is intended to assist a new team member and should address the following points: * A high-level overview of the script's primary function in an automated deployment workflow. * A breakdown of the key steps, including the installation of application dependencies (npm), and the retrieval of source code from a remote storage location. * The role of supervisor in managing the application process, ensuring it starts automatically, and restarts upon failure. * An explanation of how the script configures the production environment, including user creation (useradd), and security best practices. For the suggested improvements, don't make any changes to the file's content.

startup-script.sh adlı bash komut dosyasının koduyla ilgili ayrıntılı açıklamalar Gemini Code Assist sohbetinde gösterilir.

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.
  1. Cloud Shell terminaline dönün ve aşağıdaki komutu çalıştırarak startup-script.sh dosyasını paketinize kopyalayın:
gsutil cp ~/monolith-to-microservices/startup-script.sh gs://fancy-store-{{{project_0.project_id | BUCKET}}}

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

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.

Not: Ayrıca başka bir yerden ortam değişkenlerini çekmek için kod yazabilirsiniz ama daha kolay anlaşılması için basit bir yapılandırma işlemini örnek veriyoruz. Canlı sürümde, ortam değişkenleri büyük olasılıkla kodun dışında depolanır.
  • Klonlanan kodu paketinize kopyalamak için aşağıdaki komutu çalıştırın:
cd ~ rm -rf monolith-to-microservices/*/node_modules gsutil -m cp -r monolith-to-microservices gs://fancy-store-{{{project_0.project_id | BUCKET}}}/ Not: 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 Check my progress'i (İlerleme durumumu kontrol et) tıklayın. Başlangıç komut dosyası ve kodunu Cloud Storage paketine kopyalama

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.

Not: Üretim ortamında, bağımsız olarak ölçeklendirilebilmeleri için her mikro hizmeti kendi örneğine ve örnek grubuna ayırmanız önerilir. Gösterim amacıyla her iki arka uç mikro hizmeti de (Siparişler ve Ürünler) aynı örnekte ve örnek grubunda yer alacaktır.
  • Başlangıç komut dosyasını kullanacak şekilde yapılandırılan bir e2-medium ö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:
gcloud compute instances create backend \ --machine-type=e2-medium \ --tags=backend \ --metadata=startup-script-url=https://storage.googleapis.com/fancy-store-{{{project_0.project_id | BUCKET}}}/startup-script.sh Not: Alt bölge belirtmeniz istenirse bu laboratuvarın Kurulum bölümünde varsayılan bir alt bölgenin yapılandırıldığından emin olun.

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.

  1. Aşağıdaki komutla arka ucun harici IP adresini alın. Arka uç örneği için EXTERNAL_IP sekmesinin altına bakın:
gcloud compute instances list

Örnek çıkış:

NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS backend {{{ project_0.default_zone | "ZONE" }}} e2-medium 10.128.0.2 34.68.223.88 RUNNING
  1. Arka uç için harici IP'yi kopyalayın.

  2. Cloud Shell dosya gezgininde monolith-to-microservices > react-app'e gidin.

  3. Kod düzenleyicide .env dosyasını görüntülemek için View (Görünüm) > Toggle Hidden Files'ı (Gizli Dosyaları Aç/Kapat) seçin.

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

  5. .env dosyasında localhost öğesini [ARKA_UÇ_ADRESİ] değerinizle değiştirin:

REACT_APP_ORDERS_URL=http://[ARKA_UÇ_ADRESİ]:8081/api/orders REACT_APP_PRODUCTS_URL=http://[ARKA_UÇ_ADRESİ]:8082/api/products
  1. Dosyayı kaydedin.

  2. Ön uç kodunu güncelleyecek olan react-app'i yeniden derlemek için aşağıdaki komutu çalıştırın:

cd ~/monolith-to-microservices/react-app npm install && npm run-script build
  1. Ardından uygulama kodunu Cloud Storage paketine kopyalamak için aşağıdaki komutu çalıştırın:
cd ~ rm -rf monolith-to-microservices/*/node_modules gsutil -m cp -r monolith-to-microservices gs://fancy-store-{{{project_0.project_id | BUCKET}}}/

Ö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ı nedeniyle frontend olarak etiketlenmiştir:
gcloud compute instances create frontend \ --machine-type=e2-medium \ --tags=frontend \ --metadata=startup-script-url=https://storage.googleapis.com/fancy-store-{{{project_0.project_id | BUCKET}}}/startup-script.sh Not: İşlemi kolaylaştırmak amacıyla ve kod varsayılan olarak tüm mikro hizmetleri başlatacak şekilde yapılandırıldığından, dağıtım komutu ve başlangıç komut dosyası hem ön uç hem de arka uç örnekleriyle kullanılır. Sonuç olarak bu örnekte tüm mikro hizmetler hem ön uç hem de arka uçta çalışır. Üretim ortamında, her bileşende yalnızca ihtiyacınız olan mikro hizmetleri çalıştırabilirsiniz.

Ağı yapılandırma

Bu bölümde, ön uç için bağlantı noktası 8080'e ve arka uç için bağlantı noktası 8081-8082'ye erişim sağlayacak güvenlik duvarı kuralları oluşturacaksınız. Güvenlik duvarı komutlarında, uygulama için örnek oluşturulurken atanan etiketler kullanılır.

  1. Güvenlik duvarı kurallarını yapılandırmak için aşağıdaki komutları çalıştırın:
gcloud compute firewall-rules create fw-fe \ --allow tcp:8080 \ --target-tags=frontend gcloud compute firewall-rules create fw-be \ --allow tcp:8081-8082 \ --target-tags=backend

Web sitesi artık tümüyle işlevsel olmalıdır.

  1. frontend harici IP'sine gitmek için adresi bilmeniz gerekir. Aşağıdakini çalıştırın ve frontend örneğinin EXTERNAL_IP değerini bulun:
gcloud compute instances list

Örnek çıkış:

NAME: backend ZONE: {{{ project_0.default_zone | "ZONE" }}} MACHINE_TYPE: e2-medium PREEMPTIBLE: INTERNAL_IP: 10.128.0.2 EXTERNAL_IP: 34.27.178.79 STATUS: RUNNING NAME: frontend ZONE: {{{ project_0.default_zone | "ZONE" }}} MACHINE_TYPE: e2-medium PREEMPTIBLE: INTERNAL_IP: 10.128.0.3 EXTERNAL_IP: 34.172.241.242 STATUS: RUNNING

Örneğin başlatılması ve yapılandırılması birkaç dakika sürebilir.

  1. 30 saniye bekleyin, ardından uygulamanın hazır duruma gelip gelmediğini kontrol etmek için FRONTEND_ADDRESS öğesini ön uç örneğinin harici IP'siyle değiştirerek aşağıdaki kodu yürütün:
watch -n 2 curl http://[FRONTEND_ADDRESS]:8080

Aşağıdakine benzer bir çıkış gördüğünüzde web sitesi hazır olacaktır.

Çıkış

  1. Ctrl+C tuşlarına basarak watch komutunu iptal edin.

  2. Yeni bir gizli tarayıcı sekmesi açın ve web sitesine erişmek için http://[FRONTEND_ADDRESS]:8080 adresine gidin ([FRONTEND_ADDRESS], yukarıda belirlenen ön uç EXTERNAL_IP değeridir).

  3. Products (Ürünler) ve Orders (Siparişler) sayfalarına gitmeyi deneyin; artık gidebiliyor olmalısınız.

Fancy Store sekmeli Products (Ürünler) sayfası. Ürün resimleri karo görünümüne sahiptir.

Hedefi doğrulamak için Check my progress'i (İlerleme durumumu kontrol et) tıklayın. Örnekleri dağıtma ve ağı yapılandırma

5. görev: Yönetilen örnek grupları oluşturma

Uygulamanın ölçeklendirilebilmesi için yönetilen örnek grupları oluşturulur ve bunlar, örnek şablonları olarak frontend (ön uç) ve backend (arka uç) ö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. Bu laboratuvarda 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 container 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.

  1. İlk olarak her iki örneği de durdurmak için şu komutları çalıştırın:
gcloud compute instances stop frontend gcloud compute instances stop backend
  1. Ardından aşağıdaki komutlarla kaynak örneklerin her birinden örnek şablonu oluşturun:
gcloud compute instance-templates create fancy-fe \ --source-instance=frontend gcloud compute instance-templates create fancy-be \ --source-instance=backend
  1. Aşağıdaki komutla örnek şablonlarının oluşturulduğunu onaylayın:
gcloud compute instance-templates list

Örnek çıkış:

NAME MACHINE_TYPE PREEMPTIBLE CREATION_TIMESTAMP fancy-be e2-medium 2020-02-03T10:34:12.966-08:00 fancy-fe e2-medium 2020-02-03T10:34:01.082-08:00
  1. Örnek şablonları oluşturulduktan sonra kaynak alanından tasarruf etmek için backend sanal makinesini silmek üzere aşağıdaki komutu çalıştırın:
gcloud compute instances delete backend
  1. İ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

  1. Ardından biri ön uç ve diğeri de arka uç için iki yönetilen örnek grubu oluşturmak üzere aşağıdaki komutları yürütün:
gcloud compute instance-groups managed create fancy-fe-mig \ --base-instance-name fancy-fe \ --size 2 \ --template fancy-fe gcloud compute instance-groups managed create fancy-be-mig \ --base-instance-name fancy-be \ --size 2 \ --template fancy-be

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.

  1. Uygulamanızda frontend mikro hizmetinin bağlantı noktası 8080 üzerinde, backend mikro hizmetinin ise orders için bağlantı noktası 8081 ve products için bağlantı noktası 8082 üzerinde çalıştığından emin olmak için aşağıdaki komutları çalıştırın:
gcloud compute instance-groups set-named-ports fancy-fe-mig \ --named-ports frontend:8080 gcloud compute instance-groups set-named-ports fancy-be-mig \ --named-ports orders:8081,products:8082

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ıracağınız 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.

Not: Yük dengeleme ve otomatik iyileştirme için ayrı durum denetimleri kullanılacaktır. Yük dengelemeye yönelik durum denetimleri daha agresif olabilir ve olmalıdır çünkü bu durum denetimleri bir örneğin kullanıcı trafiği alıp almadığını belirler. Gerektiğinde trafiği yeniden yönlendirebilmek için yanıt vermeyen örnekleri yakalamak istersiniz.

Buna karşılık otomatik iyileştirme için durum denetimi Compute Engine'in başarısız örnekleri proaktif olarak değiştirmesine neden olduğundan bu durum denetimi, yük dengeleme durum denetiminden daha koruyucu olmalıdır.
  1. frontend ve backend için arka arkaya 3 kez "unhealthy" (kötü durumda) ayarını döndürürse örneği onaran bir durum denetimi oluşturmak için aşağıdaki komutları çalıştırın:
gcloud compute health-checks create http fancy-fe-hc \ --port 8080 \ --check-interval 30s \ --healthy-threshold 1 \ --timeout 10s \ --unhealthy-threshold 3 gcloud compute health-checks create http fancy-be-hc \ --port 8081 \ --request-path=/api/orders \ --check-interval 30s \ --healthy-threshold 1 \ --timeout 10s \ --unhealthy-threshold 3
  1. Durum denetimi kontrollerinin 8080-8081 bağlantı noktalarında mikro hizmetlere bağlanması için aşağıdaki komutla bir güvenlik duvarı kuralı oluşturun:
gcloud compute firewall-rules create allow-health-check \ --allow tcp:8080-8081 \ --source-ranges 130.211.0.0/22,35.191.0.0/16 \ --network default
  1. Durum denetimlerini ilgili hizmetlere uygulamak için aşağıdaki komutları çalıştırın:
gcloud compute instance-groups managed update fancy-fe-mig \ --health-check fancy-fe-hc \ --initial-delay 300 gcloud compute instance-groups managed update fancy-be-mig \ --health-check fancy-be-hc \ --initial-delay 300 Not: Otomatik iyileştirmenin gruptaki örnekleri izlemeye başlaması 15 dakika sürebilir.
  1. 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 Check my progress'i (İlerleme durumumu kontrol et) tıklayın. Yönetilen örnek grupları oluşturma

6. görev: Yük dengeleyicileri oluşturma

Yönetilen örnek gruplarınızı tamamlamak için HTTP(S) yük dengeleyicilerini kullanarak trafiği ön uç ve arka uç mikro hizmetlerine sunacak ve eşlemeleri kullanarak trafiği yol oluşturma kurallarına göre doğru arka uç hizmetlerine göndereceksiniz. 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 dengeleyiciyi 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:

  1. Bir iletim kuralı gelen istekleri hedef HTTP proxy'ye yönlendirir.
  2. Hedef HTTP proxy isteğe uygun arka uç hizmetini belirlemek için her isteği bir URL eşlemesine göre denetler.
  3. 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.
  4. 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.
Not: Buradaki örneklerde SSL sertifikasının karmaşıklığından kaçınmak için HTTPS yerine HTTP kullanın. Canlı sürümde mümkün olduğunca şifreleme için HTTPS kullanılması önerilir.
  1. Her hizmette trafik sunabilecek örnekleri belirlemek için kullanılacak durum denetimlerini oluşturun:
gcloud compute http-health-checks create fancy-fe-frontend-hc \ --request-path / \ --port 8080 gcloud compute http-health-checks create fancy-be-orders-hc \ --request-path /api/orders \ --port 8081 gcloud compute http-health-checks create fancy-be-products-hc \ --request-path /api/products \ --port 8082 Not: Bu durum denetimleri yük dengeleyiciye yöneliktir ve yalnızca yük dengeleyiciden gelen trafik yönlendirmesini işler ancak yönetilen örnek gruplarının örnekleri yeniden oluşturmasına neden olmaz.
  1. 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:
gcloud compute backend-services create fancy-fe-frontend \ --http-health-checks fancy-fe-frontend-hc \ --port-name frontend \ --global gcloud compute backend-services create fancy-be-orders \ --http-health-checks fancy-be-orders-hc \ --port-name orders \ --global gcloud compute backend-services create fancy-be-products \ --http-health-checks fancy-be-products-hc \ --port-name products \ --global
  1. Yük dengeleyicinin arka uç hizmetlerini ekleyin:
gcloud compute backend-services add-backend fancy-fe-frontend \ --instance-group fancy-fe-mig \ --instance-group-zone {{{ project_0.default_zone | "ZONE" }}} \ --global gcloud compute backend-services add-backend fancy-be-orders \ --instance-group fancy-be-mig \ --instance-group-zone {{{ project_0.default_zone | "ZONE" }}} \ --global gcloud compute backend-services add-backend fancy-be-products \ --instance-group fancy-be-mig \ --instance-group-zone {{{ project_0.default_zone | "ZONE" }}} \ --global
  1. URL eşlemesi oluşturun. URL eşlemesi hangi URL'lerin hangi arka uç hizmetlerine yönlendirildiğini tanımlar:
gcloud compute url-maps create fancy-map \ --default-service fancy-fe-frontend
  1. /api/orders ve /api/products yollarının ilgili hizmetlere yönlendirilmesini sağlamak için bir yol eşleştirici oluşturun:
gcloud compute url-maps add-path-matcher fancy-map \ --default-service fancy-fe-frontend \ --path-matcher-name orders \ --path-rules "/api/orders=fancy-be-orders,/api/products=fancy-be-products"
  1. URL eşlemesine bağlanan bir proxy oluşturmak için aşağıdaki komutu çalıştırın:
gcloud compute target-http-proxies create fancy-proxy \ --url-map fancy-map
  1. Herkese açık IP adresini ve bağlantı noktasını proxy'ye bağlayan bir genel iletim kuralı oluşturun:
gcloud compute forwarding-rules create fancy-http-rule \ --global \ --target-http-proxy fancy-proxy \ --ports 80

Hedefi doğrulamak için Check my progress'i (İlerleme durumumu kontrol et) tıklayın. HTTP(S) yük dengeleyicileri oluşturma

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.

  1. Cloud Shell'de, içinde yapılandırmanın bulunduğu .env dosyasını barındıran react-app klasörüne geçin:
cd ~/monolith-to-microservices/react-app/
  1. Yük dengeleyicinin IP adresini bulun:
gcloud compute forwarding-rules list --global

Örnek çıkış:

NAME: fancy-http-rule REGION: IP_ADDRESS: 34.111.203.235 IP_PROTOCOL: TCP TARGET: fancy-proxy
  1. 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.
REACT_APP_ORDERS_URL=http://[LB_IP]/api/orders REACT_APP_PRODUCTS_URL=http://[LB_IP]/api/products Not: Yük dengeleyici bu yönlendirmeyi sizin yerinize işleyecek şekilde yapılandırıldığından yeni adreste bağlantı noktaları kaldırılmıştır.
  1. Dosyayı kaydedin.

  2. Ön uç kodunu güncelleyen react-app'i yeniden derleyin:

cd ~/monolith-to-microservices/react-app npm install && npm run-script build
  1. Uygulama kodunu paketinize kopyalayın:
cd ~ rm -rf monolith-to-microservices/*/node_modules gsutil -m cp -r monolith-to-microservices gs://fancy-store-{{{project_0.project_id | BUCKET}}}/

Ö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:
gcloud compute instance-groups managed rolling-action replace fancy-fe-mig \ --max-unavailable 100% 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 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 Check my progress'i (İlerleme durumumu kontrol et) tıklayın. Ön uç örneklerini güncelleme

Web sitesini test etme

  1. Örneklerin işlenmesine zaman tanımak için rolling-action replace komutu gönderildikten sonra 30 saniye kadar bekleyin, ardından örnekler listede gösterilene kadar yönetilen örnek grubunun durumunu denetleyin:
watch -n 2 gcloud compute instance-groups list-instances fancy-fe-mig
  1. Öğeler listede görüntülenince Ctrl+C tuşlarına basarak watch komutundan çıkın.

  2. Aşağıdaki komutu çalıştırarak hizmetin HEALTHY (İyi durumda) olarak listelendiğini onaylayın:

watch -n 2 gcloud compute backend-services get-health fancy-fe-frontend --global
  1. İki hizmet de HEALTHY (İyi durumda) olarak listelenene kadar bekleyin.

Örnek çıkış:

--- backend: https://www.googleapis.com/compute/v1/projects/my-gce-codelab/zones/{{{ project_0.default_zone | "ZONE" }}}/instanceGroups/fancy-fe-mig status: healthStatus: - healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/my-gce-codelab/zones/{{{ project_0.default_zone | "ZONE" }}}/instances/fancy-fe-x151 ipAddress: 10.128.0.7 port: 8080 - healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/my-gce-codelab/zones/{{{ project_0.default_zone | "ZONE" }}}/instances/fancy-fe-cgrt ipAddress: 10.128.0.11 port: 8080 kind: compute#backendServiceGroupHealth Not: Bir örnekte sorun yaşanır ve UNHEALTHY (Kötü durumda) durumu oluşursa bu örnek otomatik olarak onarılır. Bunun gerçekleşmesini bekleyin.

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.
  1. Her iki öğe de listede HEALTHY (İyi durumda) olarak görüntülendiğinde CTRL+C tuşlarına basarak watch komutundan çıkın.
Not: Uygulamaya http://[LB_IP] üzerinden erişilebilir. Burada [LB_IP], yük dengeleyici için belirlenen IP_ADDRESS değeridir ve aşağıdaki komutla bulunabilir: gcloud compute forwarding-rules list --global Uygulamayı laboratuvarın ilerleyen bölümlerinde kontrol edeceksiniz.

7. görev: Compute Engine örnek gruplarını ö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:
gcloud compute instance-groups managed set-autoscaling \ fancy-fe-mig \ --max-num-replicas 2 \ --target-load-balancing-utilization 0.60 gcloud compute instance-groups managed set-autoscaling \ fancy-be-mig \ --max-num-replicas 2 \ --target-load-balancing-utilization 0.60

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:
gcloud compute backend-services update fancy-fe-frontend \ --enable-cdn --global

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 Check my progress'i (İlerleme durumumu kontrol et) tıklayın. Compute Engine'i ölçeklendirme

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.

  1. Ö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ştirecek, ardından örnek şablonunu güncelleyecek, yeni şablonu kullanıma sunacak ve dosyanın yönetilen örnek grubu örneklerinde mevcut olduğunu onaylayacaksınız.

  2. Şimdi e2-medium makine türünden 4 vCPU ve 3.840 MiB RAM içeren bir özel makine türüne geçerek örnek şablonunuzun makine türünü değiştirin.

  3. Aşağıdaki komutu çalıştırarak ön uç örneğinin makine türünü değiştirin:

gcloud compute instances set-machine-type frontend --machine-type custom-4-3840
  1. Yeni örnek şablonunu oluşturun:
gcloud compute instance-templates create fancy-fe-new \ --source-instance=frontend \ --source-instance-zone={{{ project_0.default_zone | "ZONE" }}}
  1. Güncellenen örnek şablonunu yönetilen örnek grubunun kullanımına sunun:
gcloud compute instance-groups managed rolling-action start-update fancy-fe-mig \ --version template=fancy-fe-new
  1. 30 saniye bekleyin, ardından güncellemenin durumunu izlemek için aşağıdaki komutu çalıştırın:
watch -n 2 gcloud compute instance-groups managed list-instances fancy-fe-mig

Bu işlem birkaç dakika sürer.

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)
  1. Sonraki komutta kullanmak üzere listelenen makinelerden birinin adını kopyalayın.

  2. watch işleminden çıkmak için CTRL+C tuşlarına basın.

  3. Sanal makinenin yeni makine türünü (custom-4-3840) kullanıp kullanmadığını öğrenmek için aşağıdaki komutu çalıştırın. Burada [VM_NAME], yeni oluşturulan örneği temsil eder:

gcloud compute instances describe [VM_NAME] | grep machineType

Beklenen örnek çıkış:

machineType: https://www.googleapis.com/compute/v1/projects/project-name/zones/{{{ project_0.default_zone | "ZONE" }}}/machineTypes/custom-4-3840

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.

  1. Aşağıdaki komutları çalıştırarak güncellenmiş dosyayı kopyalayın ve dosya adının doğru olmasını sağlayın:
cd ~/monolith-to-microservices/react-app/src/pages/Home mv index.js.new index.js
  1. Değişiklikleri doğrulamak için dosyanın içeriğini yazdırın:
cat ~/monolith-to-microservices/react-app/src/pages/Home/index.js

Bu işlem sonucunda elde edilen kod aşağıdaki gibi görünmelidir:

/* Copyright 2019 Google LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ import React from "react"; import { Box, Paper, Typography } from "@mui/material"; export default function Home() { return ( theme.spacing(3, 2), }} > Fancy Fashion & Style Online
Tired of mainstream fashion ideas, popular trends and societal norms? This line of lifestyle products will help you catch up with the Fancy trend and express your personal style. Start shopping Fancy items now!
); }

React bileşenlerini güncellediniz ancak statik dosyaları oluşturmak için React uygulamasını derlemeniz gerekiyor.

  1. React uygulamasını derlemek için aşağıdaki komutu çalıştırın ve monolitin herkese açık dizinine kopyalayın:
cd ~/monolith-to-microservices/react-app npm install && npm run-script build
  1. Ardından bu kodu pakete yeniden aktarın:
cd ~ rm -rf monolith-to-microservices/*/node_modules gsutil -m cp -r monolith-to-microservices gs://fancy-store-{{{project_0.project_id | BUCKET}}}/

Periyodik değişiklikleri aktarma

  1. Şimdi, güncellemeyi almak için tüm örnekleri değiştirin:
gcloud compute instance-groups managed rolling-action replace fancy-fe-mig \ --max-unavailable=100% 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. Canlı sürümde 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 Check my progress'i (İlerleme durumumu kontrol et) tıklayın. Web sitesini güncelleme

  1. Örneklerin işlenmesine zaman tanımak için rolling-action replace komutu gönderildikten sonra 30 saniye kadar bekleyin, ardından örnekler listede gösterilene kadar yönetilen örnek grubunun durumunu denetleyin:
watch -n 2 gcloud compute instance-groups list-instances fancy-fe-mig
  1. Öğeler listede görüntülenince Ctrl+C tuşlarına basarak watch komutundan çıkın.

  2. Aşağıdaki komutu çalıştırarak hizmetin HEALTHY (İyi durumda) olarak listelendiğini onaylayın:

watch -n 2 gcloud compute backend-services get-health fancy-fe-frontend --global
  1. Her iki hizmetin de görüntülenmesi ve HEALTHY (İyi Durumda) olması için biraz bekleyin.

Örnek çıkış:

--- backend: https://www.googleapis.com/compute/v1/projects/my-gce-codelab/zones/{{{ project_0.default_zone | "ZONE" }}}/instanceGroups/fancy-fe-mig status: healthStatus: - healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/my-gce-codelab/zones/{{{ project_0.default_zone | "ZONE" }}}/instances/fancy-fe-x151 ipAddress: 10.128.0.7 port: 8080 - healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/my-gce-codelab/zones/{{{ project_0.default_zone | "ZONE" }}}/instances/fancy-fe-cgrt ipAddress: 10.128.0.11 port: 8080 kind: compute#backendServiceGroupHealth
  1. Öğeler listede görüntülenince Ctrl+C tuşlarına basarak watch komutundan çıkın.

  2. 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:

gcloud compute forwarding-rules list --global

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.

  1. Örnek adını bulmak için aşağıdaki komutu yürütün:
gcloud compute instance-groups list-instances fancy-fe-mig
  1. Bir örnek adı kopyalayın, ardından örnekte kabuğun güvenliğini sağlamak için aşağıdaki komutu çalıştırın. Burada INSTANCE_NAME, listedeki örneklerden biridir:
gcloud compute ssh [INSTANCE_NAME]
  1. Onaylamak için "y" yazın ve şifre kullanmamak için ENTER tuşuna iki kez basın.

  2. Örneğin içinde supervisorctl kullanarak uygulamayı durdurun:

sudo supervisorctl stop nodeapp; sudo killall node
  1. Örnekten çıkın:
exit
  1. Onarım işlemlerini izleyin:
watch -n 2 gcloud compute operations list \ --filter='operationType~compute.instances.repair.*'

Bu işlemin tamamlanması birkaç dakika sürebilir.

Aşağıdaki örnek çıkışı bulun.

Örnek çıkış:

NAME TYPE TARGET HTTP_STATUS STATUS TIMESTAMP repair-1568314034627-5925f90ee238d-fe645bf0-7becce15 compute.instances.repair.recreateInstance {{{ project_0.default_zone | "ZONE" }}}/instances/fancy-fe-1vqq 200 DONE 2019-09-12T11:47:14.627-07:00

Yönetilen örnek grubu, örneği yeniden oluşturarak sorunu çözdü.

  1. Konsoldan da izleyebilirsiniz: Gezinme menüsü > Compute Engine > VM instances'a (Sanal makine örnekleri) gidin.

Tebrikler!

Tebrikler! Bu laboratuvarda, web sitenizi Compute Engine'de başarıyla dağıttınız, ölçeklendirdiniz ve güncellediniz. Böylece Compute Engine, yönetilen örnek grupları, yük dengeleyiciler ve durum denetimleri konularında uygulamalı deneyim kazandınız. Bu laboratuvarda, hem Google Cloud hem de AWS'nin internete yönelik yük dengeleyicilerle sanal makine tabanlı uygulama dağıtımlarını nasıl kolaylaştırdığı vurgulanmaktadır. Google Cloud'un yaklaşımı, kod dağıtımını ve sanal makine yapılandırmasını birleştirmek için başlangıç komut dosyalarından yararlanır, otomatik ölçeklendirme ile sanal makine yönetimini kolaylaştırır, dünya çapında harici HTTP(S) yük dengeleme sunar, başlangıç komut dosyası ve MIG iş akışında sorunsuz görüntü ve uygulama güncellemeleri sağlar.

Sonraki adımlar / Daha fazla bilgi

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: 14 Ekim 2025

Laboratuvarın Son Test Edilme Tarihi: 14 Ekim 2025

Telif Hakkı 2025 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.

Before you begin

  1. Labs create a Google Cloud project and resources for a fixed time
  2. Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
  3. On the top left of your screen, click Start lab to begin

Use private browsing

  1. Copy the provided Username and Password for the lab
  2. Click Open console in private mode

Sign in to the Console

  1. Sign in using your lab credentials. Using other credentials might cause errors or incur charges.
  2. Accept the terms, and skip the recovery resource page
  3. Don't click End lab unless you've finished the lab or want to restart it, as it will clear your work and remove the project

This content is not currently available

We will notify you via email when it becomes available

Great!

We will contact you via email if it becomes available

One lab at a time

Confirm to end all existing labs and start this one

Use private browsing to run the lab

Use an Incognito or private browser window to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.