arrow_back

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

Join Sign in
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

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

Lab 1 hour 30 minutes universal_currency_alt 1 Credit show_chart Introductory
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP662

Google Cloud Rehbersiz Laboratuvarları

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:

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).
Not: Bu laboratuvarı çalıştırmak için tarayıcıyı gizli pencerede 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: Kişisel bir Google Cloud hesabınız veya projeniz varsa bu laboratuvarda kullanmayın. Aksi takdirde hesabınızdan ek ücret 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 pop-up açılır. Soldaki Laboratuvar Ayrıntıları panelinde şunlar yer alır:

    • Google 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
  2. Google Console'u Aç'ı tıklayın. 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 Laboratuvar Ayrıntıları panelinden Kullanıcı adı'nı kopyalayın ve Oturum aç iletişim kutusuna yapıştırın. Sonraki'ni tıklayın.

  4. Laboratuvar Ayrıntıları panelinden Şifre'yi kopyalayın ve Hoş geldiniz iletişim penceresine yapıştırın. Sonraki'ni tıklayın.

    Önemli: Sol paneldeki kimlik bilgilerini kullanmanız gerekir. Google Cloud Öğrenim Merkezi kimlik bilgilerinizi kullanmayın. Not: Bu laboratuvarda kendi Google Cloud hesabınızı kullanabilmek için ek ücret ödemeniz gerekebilir.
  5. 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 Cloud Console bu sekmede açılır.

Not: Soldaki Gezinme menüsü'nü tıklayarak Google Cloud ürün ve hizmetlerinin listelendiği menüyü görüntüleyebilirsiniz. Gezinme menüsü simgesi

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 Console'un üst kısmından Cloud Shell'i etkinleştir Cloud Shell'i etkinleştir simgesi 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:

Your Cloud Platform project in this session is set to YOUR_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. Yetkilendir'i tıklayın.

  2. Çıkışınız aşağıdaki gibi görünecektir:

Çıkış:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net 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_ID>

Örnek çıkış:

[core] project = qwiklabs-gcp-44776a13dea667a6 Not: 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:

gcloud config set compute/zone "{{{project_0.default_zone|ZONE}}}" export ZONE=$(gcloud config get compute/zone) gcloud config set compute/region "{{{project_0.default_region|REGION}}}" export REGION=$(gcloud config get compute/region)

1. görev: Compute Engine API'yi etkinleştirme

gcloud services enable compute.googleapis.com

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:
gsutil mb gs://fancy-store-$DEVSHELL_PROJECT_ID Not: Cloud Shell'den $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. Cloud Storage paketi oluşturma

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.

  1. Kaynak kodu klonlayın, ardından monolith-to-microservices dizinine gidin:
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

Aşağıdaki çıkışı göreceksiniz:

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 ardından Preview on port 8080'yi (Bağlantı noktası 8080'de önizle) seçerek uygulamanızı önizleyin.

Web önizlemesi simgesi ve Preview on port 8080 (Bağlantı noktası 8080&#39;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 sunulmamış 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 ö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:

  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. Cloud Shell'de aşağıdaki komutu çalıştırarak startup-script.sh adlı bir dosya oluşturun:
touch ~/monolith-to-microservices/startup-script.sh
  1. Kod Düzenleyici'yi açmak için Cloud Shell şeridinde Open Editor'ı (Düzenleyiciyi Aç) tıklayın.

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

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

  2. Aşağıdaki kodu startup-script.sh dosyasına ekleyin. Eklendikten sonra kodun bir bölümünü düzenleyeceksiniz:

#!/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-[DEVSHELL_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. 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:

gs://fancy-store-{{{project_0.project_id | Proje Kimliği}}}/monolith-to-microservices/microservices/* /fancy-store/
  1. startup-script.sh dosyasını kaydedin fakat henüz kapatmayın.

  2. Cloud Shell Kod Düzenleyici'nin 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.

&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 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.
  1. startup-script.sh dosyasını kapatın.

  2. 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-$DEVSHELL_PROJECT_ID

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.

Not: Ayrıca başka bir yerden ortam değişkenlerini çekmek için kod yazabilirsiniz ama basit bir yapılandırma işleme yöntemi olduğundan örnek olarak vermiyoruz. Üretimde, ortam değişkenleri büyük olasılıkla kodun dışında depolanır.
  1. Klonlanan kodu paketinize kopyalayın:
cd ~ rm -rf monolith-to-microservices/*/node_modules gsutil -m cp -r monolith-to-microservices gs://fancy-store-$DEVSHELL_PROJECT_ID/ 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 İlerleme durumumu kontrol et'i 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-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:
gcloud compute instances create backend \ --zone=$ZONE \ --machine-type=e2-standard-2 \ --tags=backend \ --metadata=startup-script-url=https://storage.googleapis.com/fancy-store-$DEVSHELL_PROJECT_ID/startup-script.sh

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: backend ZONE: {{{project_0.default_zone | zone}}} MACHINE_TYPE: e2-standard-2 PREEMPTIBLE: INTERNAL_IP: 10.142.0.2 EXTERNAL_IP: 35.237.245.193 STATUS: RUNNING
  1. Arka uç için harici IP'yi kopyalayın.

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

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

  1. .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. Cloud Shell'de aşağıdaki komutu çalıştırarak react-app'i yeniden derleyin. Bu işlemle ön uç kodu güncellenir:

cd ~/monolith-to-microservices/react-app npm install && npm run-script build
  1. Ardından uygulama kodunu Cloud Storage paketine kopyalayın:
cd ~ rm -rf monolith-to-microservices/*/node_modules gsutil -m cp -r monolith-to-microservices gs://fancy-store-$DEVSHELL_PROJECT_ID/

Ö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çlarla frontend olarak etiketlenmiştir:
gcloud compute instances create frontend \ --zone=$ZONE \ --machine-type=e2-standard-2 \ --tags=frontend \ --metadata=startup-script-url=https://storage.googleapis.com/fancy-store-$DEVSHELL_PROJECT_ID/startup-script.sh Not: Basitlik sağlamak 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

  1. Ö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:
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: us-central1-f MACHINE_TYPE: e2-standard-2 PREEMPTIBLE: INTERNAL_IP: 10.128.0.2 EXTERNAL_IP: 34.27.178.79 STATUS: RUNNING NAME: frontend ZONE: us-central1-f MACHINE_TYPE: e2-standard-2 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. 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.

  2. 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 İlerleme durumumu kontrol et'i tıklayın. Örnekleri dağıtma ve ağı yapılandırma

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.

  1. İlk olarak her iki örneği de durdurun:
gcloud compute instances stop frontend --zone=$ZONE gcloud compute instances stop backend --zone=$ZONE
  1. Ardından kaynak örneklerin her birinden örnek şablonu oluşturun:
gcloud compute instance-templates create fancy-fe \ --source-instance-zone=$ZONE \ --source-instance=frontend gcloud compute instance-templates create fancy-be \ --source-instance-zone=$ZONE \ --source-instance=backend
  1. Örnek şablonlarının oluşturulduğunu onaylayın:
gcloud compute instance-templates list

Örnek çıkış:

NAME: fancy-be MACHINE_TYPE: e2-standard-2 PREEMPTIBLE: CREATION_TIMESTAMP: 2023-07-25T14:52:21.933-07:00 NAME: fancy-fe MACHINE_TYPE: e2-standard-2 PREEMPTIBLE: CREATION_TIMESTAMP: 2023-07-25T14:52:15.442-07:00
  1. Örnek şablonları oluşturulduktan sonra kaynak alanından tasarruf etmek için backend sanal makinesini silin:
gcloud compute instances delete backend --zone=$ZONE
  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 olmak üzere iki yönetilen örnek grubu oluşturun:
gcloud compute instance-groups managed create fancy-fe-mig \ --zone=$ZONE \ --base-instance-name fancy-fe \ --size 2 \ --template fancy-fe gcloud compute instance-groups managed create fancy-be-mig \ --zone=$ZONE \ --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. Sizin uygulamanızda frontend mikro hizmeti, bağlantı noktası 8080 üzerinde çalışırken backend mikro hizmeti orders için bağlantı noktası 8081 ve products için bağlantı noktası 8082 üzerinde çalışır:
gcloud compute instance-groups set-named-ports fancy-fe-mig \ --zone=$ZONE \ --named-ports frontend:8080 gcloud compute instance-groups set-named-ports fancy-be-mig \ --zone=$ZONE \ --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ı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.

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şturun:
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ını sağlamak için 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 hizmetlerine uygulayın:
gcloud compute instance-groups managed update fancy-fe-mig \ --zone=$ZONE \ --health-check fancy-fe-hc \ --initial-delay 300 gcloud compute instance-groups managed update fancy-be-mig \ --zone=$ZONE \ --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 İlerleme durumumu kontrol et'i tıklayın. Yönetilen örnek grupları oluşturma

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:

  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. Üretimde 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-zone=$ZONE \ --instance-group fancy-fe-mig \ --global gcloud compute backend-services add-backend fancy-be-orders \ --instance-group-zone=$ZONE \ --instance-group fancy-be-mig \ --global gcloud compute backend-services add-backend fancy-be-products \ --instance-group-zone=$ZONE \ --instance-group fancy-be-mig \ --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şturun:
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 İlerleme durumumu kontrol et'i 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üncelleyecek olan react-app'i yeniden derleyin:

cd ~/monolith-to-microservices/react-app npm install && npm run-script build
  1. Uygulama kodunu pakete kopyalayın:
cd ~ rm -rf monolith-to-microservices/*/node_modules gsutil -m cp -r monolith-to-microservices gs://fancy-store-$DEVSHELL_PROJECT_ID/

Ö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 \ --zone=$ZONE \ --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 İlerleme durumumu kontrol et'i 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 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:
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/us-central1-a/instanceGroups/fancy-fe-mig status: healthStatus: - healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/my-gce-codelab/zones/us-central1-a/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/us-central1-a/instances/fancy-fe-cgrt ipAddress: 10.128.0.11 port: 8080 kind: compute#backendServiceGroupHealth Not: Sorunla karşılaşan ve UNHEALTHY (İyi Durumda Değil) durumunda olan örneklerin otomatik olarak onarılması gerekir. 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'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:
gcloud compute instance-groups managed set-autoscaling \ fancy-fe-mig \ --zone=$ZONE \ --max-num-replicas 2 \ --target-load-balancing-utilization 0.60 gcloud compute instance-groups managed set-autoscaling \ fancy-be-mig \ --zone=$ZONE \ --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.

  1. Ö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 İlerleme durumumu kontrol et'i 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.

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ünden e2-small makine türüne geçerek örnek şablonunuzun makine türünü değiştirin.

  1. 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 \ --zone=$ZONE \ --machine-type e2-small
  1. Yeni örnek şablonunu oluşturun:
gcloud compute instance-templates create fancy-fe-new \ --region=$REGION \ --source-instance=frontend \ --source-instance-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 \ --zone=$ZONE \ --version template=fancy-fe-new
  1. 3 dakika 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 \ --zone=$ZONE

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)
  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ü (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:

gcloud compute instances describe [SANAL_MAKİNE_ADI] --zone=$ZONE | grep machineType

Beklenen örnek çıkış:

machineType: https://www.googleapis.com/compute/v1/projects/project-name/zones/us-central1-f/machineTypes/e2-small

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 ( <Box sx={{ flexGrow: 1 }}> <Paper elevation={3} sx={{ width: "800px", margin: "0 auto", padding: (theme) => theme.spacing(3, 2), }} > <Typography variant="h5">Welcome to the Fancy Store!</Typography> <br /> <Typography variant="body1"> Take a look at our wide variety of products. </Typography> </Paper> </Box> ); }

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-$DEVSHELL_PROJECT_ID/

Periyodik değişiklikleri aktarma

  1. Şimdi tüm örnekleri güncellemeyi almak için değiştirilmeye zorlayın:
gcloud compute instance-groups managed rolling-action replace fancy-fe-mig \ --zone=$ZONE \ --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. Ü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. Web sitesini güncelleme

  1. Ö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:
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/us-central1-a/instanceGroups/fancy-fe-mig status: healthStatus: - healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/my-gce-codelab/zones/us-central1-a/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/us-central1-a/instances/fancy-fe-cgrt ipAddress: 10.128.0.11 port: 8080 kind: compute#backendServiceGroupHealth
  1. Listede öğeler HEALTHY (İyi Durumda) durumuyla gösterildiğinde, 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ğıdakini yürütün:
gcloud compute instance-groups list-instances fancy-fe-mig --zone=$ZONE
  1. 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:
gcloud compute ssh [ÖRNEK_ADI] --zone=$ZONE
  1. Onaylamak için "y" yazın ve parola 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ürer.

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

NAME TYPE TARGET HTTP_STATUS STATUS TIMESTAMP repair-1568314034627-5925f90ee238d-fe645bf0-7becce15 compute.instances.repair.recreateInstance us-central1-a/instances/fancy-fe-1vqq 200 DONE 2019-09-12T11:47:14.627-07:00

Yönetilen örnek grubu örneği onarmak için yeniden oluşturdu.

  1. Ayrıca, konsol aracılığıyla izleme 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

Daha fazla bilgi için Yönetilen örnek gruplarında otomatik iyileştirme ve durum denetimleri başlıklı makaleyi inceleyin.

Öğrenme yolculuğunuza şu konularla devam edin:

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: 8 Şubat 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.