arrow_back

Menghosting Aplikasi Web di Google Cloud Menggunakan Compute Engine

Login Gabung
Dapatkan akses ke 700+ lab dan kursus

Menghosting Aplikasi Web di Google Cloud Menggunakan Compute Engine

Lab 1 jam 30 menit universal_currency_alt 1 Kredit show_chart Pengantar
info Lab ini mungkin menggabungkan alat AI untuk mendukung pembelajaran Anda.
Dapatkan akses ke 700+ lab dan kursus

GSP662

Logo lab mandiri Google Cloud

Ringkasan

Ada banyak cara untuk men-deploy situs di dalam Google Cloud. Setiap solusi menawarkan fitur, kapabilitas, dan level kontrol yang berbeda. Compute Engine menawarkan level kontrol yang mendalam atas infrastruktur yang digunakan untuk menjalankan situs. Namun, layanan ini memerlukan pengelolaan operasional yang sedikit lebih banyak dibandingkan solusi seperti Google Kubernetes Engines (GKE), App Engine, atau lainnya. Dengan Compute Engine, Anda memiliki kontrol menyeluruh atas berbagai aspek infrastruktur, termasuk virtual machine, load balancer, dan lainnya.

Di lab ini, Anda akan mempelajari cara men-deploy aplikasi contoh, yakni situs e-commerce "Fancy Store", untuk menunjukkan bagaimana situs dapat di-deploy dan diskalakan dengan mudah menggunakan Compute Engine.

Yang akan Anda pelajari

Di lab ini, Anda akan mempelajari cara melakukan tugas berikut:

Di akhir lab, Anda akan memiliki instance di dalam grup instance terkelola untuk menyediakan autohealing, load balancing, penskalaan otomatis, dan update berkelanjutan untuk situs Anda.

Penyiapan dan persyaratan

Sebelum mengklik tombol Start Lab

Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer yang dimulai saat Anda mengklik Start Lab akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.

Lab interaktif ini dapat Anda gunakan untuk melakukan aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.

Untuk menyelesaikan lab ini, Anda memerlukan:

  • Akses ke browser internet standar (disarankan browser Chrome).
Catatan: Gunakan jendela Samaran (direkomendasikan) atau browser pribadi untuk menjalankan lab ini. Hal ini akan mencegah konflik antara akun pribadi Anda dan akun siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.
  • Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Catatan: Hanya gunakan akun siswa untuk lab ini. Jika Anda menggunakan akun Google Cloud yang berbeda, Anda mungkin akan dikenai tagihan ke akun tersebut.

Cara memulai lab dan login ke Google Cloud Console

  1. Klik tombol Start Lab. Jika Anda perlu membayar lab, dialog akan terbuka untuk memilih metode pembayaran. Di sebelah kiri ada panel Lab Details yang berisi hal-hal berikut:

    • Tombol Open Google Cloud console
    • Waktu tersisa
    • Kredensial sementara yang harus Anda gunakan untuk lab ini
    • Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
  2. Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).

    Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.

    Tips: Atur tab di jendela terpisah secara berdampingan.

    Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account.
  3. Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.

    {{{user_0.username | "Username"}}}

    Anda juga dapat menemukan Username di panel Lab Details.

  4. Klik Next.

  5. Salin Password di bawah dan tempel ke dialog Welcome.

    {{{user_0.password | "Password"}}}

    Anda juga dapat menemukan Password di panel Lab Details.

  6. Klik Next.

    Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda. Catatan: Menggunakan akun Google Cloud sendiri untuk lab ini dapat dikenai biaya tambahan.
  7. Klik halaman berikutnya:

    • Setujui persyaratan dan ketentuan.
    • Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
    • Jangan mendaftar uji coba gratis.

Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.

Catatan: Untuk mengakses produk dan layanan Google Cloud, klik Navigation menu atau ketik nama layanan atau produk di kolom Search. Ikon Navigation menu dan kolom Search

Mengaktifkan Cloud Shell

Cloud Shell adalah mesin virtual yang dilengkapi dengan berbagai alat pengembangan. Mesin virtual ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud. Cloud Shell menyediakan akses command-line untuk resource Google Cloud Anda.

  1. Klik Activate Cloud Shell Ikon Activate Cloud Shell di bagian atas Konsol Google Cloud.

  2. Klik jendela berikut:

    • Lanjutkan melalui jendela informasi Cloud Shell.
    • Beri otorisasi ke Cloud Shell untuk menggunakan kredensial Anda guna melakukan panggilan Google Cloud API.

Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke Project_ID, . Output berisi baris yang mendeklarasikan Project_ID untuk sesi ini:

Project Cloud Platform Anda dalam sesi ini disetel ke {{{project_0.project_id | "PROJECT_ID"}}}

gcloud adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.

  1. (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list
  1. Klik Authorize.

Output:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} Untuk menetapkan akun aktif, jalankan: $ gcloud config set account `ACCOUNT`
  1. (Opsional) Anda dapat menampilkan daftar ID project dengan perintah ini:
gcloud config list project

Output:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Catatan: Untuk mendapatkan dokumentasi gcloud yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.

Menetapkan region dan zona

Resource Compute Engine tertentu berada di region dan zona. Region adalah lokasi geografis spesifik tempat Anda dapat menjalankan resource. Setiap region memiliki satu atau beberapa zona.

Jalankan perintah gcloud berikut di Cloud Shell guna menetapkan region dan zona default untuk lab Anda:

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)

Tugas 1. Mengaktifkan Compute Engine API

gcloud services enable compute.googleapis.com

Tugas 2. Membuat bucket Cloud Storage

Anda akan menggunakan bucket Cloud Storage untuk menampung kode yang Anda buat serta skrip startup Anda.

  • Dari Cloud Shell, jalankan perintah berikut untuk membuat bucket Cloud Storage baru:
gsutil mb gs://fancy-store-{{{project_0.project_id | Project ID}}}

Klik Periksa progres saya untuk memverifikasi tujuan. Membuat bucket Cloud Storage

Tugas 3. Membuat clone repositori sumber

Lab ini menggunakan situs e-commerce Fancy Store yang ada berdasarkan repositori monolith-to-microservices sebagai dasar untuk situs Anda.

Dalam tugas ini, Anda akan membuat clone kode sumber sehingga dapat berfokus pada aspek deployment ke Compute Engine. Nanti di lab ini, Anda akan melakukan update kecil pada kode untuk menunjukkan kemudahan melakukan update di Compute Engine.

  1. Jalankan perintah berikut untuk membuat clone kode sumber, lalu buka direktori monolith-to-microservices:
git clone https://github.com/googlecodelabs/monolith-to-microservices.git cd ~/monolith-to-microservices
  1. Jalankan build awal kode agar aplikasi dapat dijalankan secara lokal dengan perintah berikut:
./setup.sh

Perlu waktu beberapa menit hingga skrip ini selesai.

  1. Setelah selesai, pastikan Cloud Shell menjalankan versi nodeJS yang kompatibel dengan perintah berikut:
nvm install --lts
  1. Selanjutnya, jalankan perintah berikut untuk menguji aplikasi, beralih ke direktori microservices, dan memulai server web:
cd microservices npm start

Anda akan menerima output berikut.

Output:

Products microservice listening on port 8082! Frontend microservice listening on port 8080! Orders microservice listening on port 8081!
  1. Pratinjau aplikasi Anda dengan mengklik ikon pratinjau web, lalu memilih Preview on port 8080.

Ikon pratinjau web dan opsi Preview on port 8080 disorot

Tindakan ini akan membuka jendela baru dan Anda dapat melihat frontend Fancy Store.

Catatan: Dalam opsi Preview, Anda seharusnya dapat melihat Frontend. Namun, fungsi Products dan Orders tidak akan berfungsi karena layanan tersebut belum terekspos.
  1. Tutup jendela ini setelah Anda melihat situs, kemudian tekan CTRL+C di jendela terminal untuk menghentikan proses server web.

Mengaktifkan Gemini Code Assist di Cloud Shell IDE

Anda dapat menggunakan Gemini Code Assist di lingkungan pengembangan terintegrasi (IDE) seperti Cloud Shell untuk menerima panduan tentang kode atau menyelesaikan masalah dengan kode Anda. Sebelum mulai menggunakan Gemini Code Assist, Anda perlu mengaktifkannya.

  1. Di Cloud Shell, aktifkan Gemini for Google Cloud API dengan perintah berikut:
gcloud services enable cloudaicompanion.googleapis.com
  1. Klik Open Editor di toolbar Cloud Shell.
Catatan: Untuk membuka Cloud Shell Editor, klik Open Editor di toolbar Cloud Shell. Anda dapat beralih antara Cloud Shell dan Editor kode dengan mengklik Open Editor atau Open Terminal, sesuai kebutuhan.
  1. Di panel kiri, klik ikon Settings, lalu di tampilan Settings, cari Gemini Code Assist.

  2. Temukan dan pastikan kotak centang dipilih untuk Geminicodeassist: Enable, lalu tutup Settings.

  3. Klik Cloud Code - No Project di status bar di bagian bawah layar.

  4. Berikan otorisasi pada plugin seperti yang ditunjukkan. Jika project tidak dipilih secara otomatis, klik Select a Google Cloud Project, lalu pilih .

  5. Pastikan project Google Cloud Anda () ditampilkan dalam pesan status Cloud Code di status bar.

Tugas 4. Membuat instance Compute Engine

Sekarang saatnya mulai men-deploy instance Compute Engine.

Di bagian selanjutnya, Anda akan melakukan tindakan berikut:

  1. Membuat skrip startup untuk mengonfigurasi instance.
  2. Membuat clone kode sumber dan menguploadnya ke Cloud Storage.
  3. Men-deploy instance Compute Engine untuk menghosting microservice backend.
  4. Mengonfigurasi ulang kode frontend untuk memanfaatkan instance microservice backend.
  5. Men-deploy instance Compute Engine untuk menghosting microservice frontend.
  6. Mengonfigurasi jaringan untuk memungkinkan komunikasi.

Membuat skrip startup

Skrip startup digunakan untuk menginstruksikan instance tentang hal yang harus dilakukan setiap kali instance dimulai. Dengan cara ini, instance akan dikonfigurasi secara otomatis.

  1. Di terminal Cloud Shell, jalankan perintah berikut untuk membuat file bernama startup-script.sh:
touch ~/monolith-to-microservices/startup-script.sh
  1. Klik Open Editor pada toolbar Cloud Shell untuk membuka Editor Kode.

Tombol Open Editor

  1. Buka folder monolith-to-microservices.

  2. Tambahkan kode berikut ke file startup-script.sh. Nanti, Anda akan mengedit beberapa bagiannya setelah kode ditambahkan:

#!/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. Untuk mengupdate file startup-script.sh, klik ikon Gemini Code Assist: Smart Actions Gemini Code Assist: Smart Actions, dan tempel kode berikut ke dalam perintah untuk menemukan dan mengganti teks untuk [DEVSHELL_PROJECT_ID].
Sebagai developer aplikasi di Cymbal AI, perbarui file "startup-script.sh". Ganti [DEVSHELL_PROJECT_ID] dengan ID project: {{{project_0.project_id | Project ID}}}.
  1. Tekan Enter untuk memperbarui file. Saat diminta di tampilan Gemini Diff, klik Accept.

Baris kode dalam startup-script.sh sekarang akan terlihat seperti berikut:

gs://fancy-store-{{{project_0.project_id | Project ID}}}/monolith-to-microservices/microservices/* /fancy-store/
  1. Klik Save atau tekan CTRL+S untuk menyimpan file startup-script.sh, tetapi jangan ditutup dulu.

  2. Lihat bagian kanan bawah Editor Kode Cloud Shell dan pastikan "End of Line Sequence" disetel ke "LF", bukan "CRLF".

&quot;End of Line Sequence&quot;

  • Jika disetel ke CRLF, klik CRLF, lalu pilih LF pada drop-down.
  • Jika sudah disetel ke LF, biarkan saja.

Menggunakan Gemini Code Assist untuk mempelajari file skrip startup

Untuk membantu Anda menjadi lebih produktif sekaligus meminimalkan pengalihan konteks, Gemini Code Assist menyediakan tindakan cerdas yang didukung AI langsung di editor kode Anda. Misalnya, Anda dapat menggunakan fitur "Explain this" agar Gemini Code Assist memberi Anda informasi lebih lanjut tentang file, blok kode, atau fungsi tertentu.

Di bagian ini, Anda akan memasukkan perintah ke Gemini Code Assist untuk memberikan informasi lebih lanjut tentang skrip startup kepada anggota tim baru yang belum memahaminya.

  1. Dengan file startup-script.sh terbuka, klik ikon Gemini Code Assist: Smart Actions Gemini Code Assist: Smart Actions di toolbar, lalu pilih Explain this.

  2. Gemini Code Assist membuka panel chat dengan perintah yang sudah diisi sebelumnya, yaitu Explain this. Di kotak teks bagian dari chat Code Assist, ganti perintah yang sudah terisi dengan teks berikut, lalu klik Send:

You are an Application developer at Cymbal AI. A new team member is unfamiliar with this startup script. Explain this "startup-script.sh" file in detail, breaking down its key components used in the code. Do not suggest any improvements or changes to the file.

Penjelasan untuk kode di file startup-script.sh akan muncul di chat Gemini Code Assist.

  1. Tutup file startup-script.sh.

Kembali ke Cloud Shell Terminal, lalu jalankan perintah berikut untuk menyalin file startup-script.sh ke bucket Anda:

gsutil cp ~/monolith-to-microservices/startup-script.sh gs://fancy-store-{{{project_0.project_id | Project ID}}}

File tersebut sekarang dapat diakses di: https://storage.googleapis.com/[BUCKET_NAME]/startup-script.sh.

[BUCKET_NAME] mewakili nama bucket Cloud Storage. Nama ini hanya dapat dilihat oleh pengguna resmi dan akun layanan secara default, dan tidak dapat diakses di browser web. Instance Compute Engine akan otomatis mengakses nama ini melalui akun layanannya.

Skrip startup akan melakukan tugas-tugas berikut:

  • Menginstal agen Logging. Agen ini mengumpulkan log dari syslog secara otomatis.
  • Menginstal Node.js dan Supervisor. Supervisor menjalankan aplikasi sebagai daemon.
  • Membuat clone kode sumber aplikasi dari Bucket Cloud Storage, lalu menginstal dependensi.
  • Mengonfigurasi Supervisor untuk menjalankan aplikasi. Supervisor memastikan aplikasi akan dimulai ulang jika menutup secara tidak terduga atau dihentikan oleh admin atau proses. Supervisor juga akan mengirimkan stdout dan stderr aplikasi ke syslog untuk dikumpulkan oleh agen Logging.

Menyalin kode ke dalam bucket Cloud Storage

Saat diluncurkan, instance tersebut akan mengambil kode dari bucket Cloud Storage, sehingga Anda dapat menyimpan beberapa variabel konfigurasi dalam file .env kode tersebut.

Catatan: Anda juga dapat membuat kode ini untuk mengambil variabel lingkungan dari tempat lain. Namun, untuk tujuan demonstrasi, ini adalah metode sederhana untuk menangani konfigurasi. Dalam produksi, variabel lingkungan kemungkinan akan disimpan di luar kode.
  • Jalankan perintah berikut untuk menyalin clone kode ke dalam bucket Anda:
cd ~ rm -rf monolith-to-microservices/*/node_modules gsutil -m cp -r monolith-to-microservices gs://fancy-store-{{{project_0.project_id | Project ID}}}/ Catatan: Direktori dependensi node_modules dihapus untuk memastikan penyalinan dapat dilakukan secepat dan seefisien mungkin. Direktori ini dibuat ulang di instance saat instance dimulai.

Klik Periksa progres saya untuk memverifikasi tujuan. Menyalin skrip startup dan kode ke bucket Cloud Storage

Men-deploy backend instance

Instance pertama yang akan di-deploy adalah backend instance, yang menampung microservice Orders dan Products.

Catatan: Dalam lingkungan produksi, Anda mungkin sebaiknya memisahkan tiap microservice ke dalam instance dan grup instance masing-masing agar skalanya dapat disesuaikan sendiri-sendiri. Untuk tujuan demonstrasi, kedua microservice backend (Orders & Products) akan berada pada instance dan grup instance yang sama.
  • Jalankan perintah berikut untuk membuat instance e2-standard-2 yang dikonfigurasi untuk menggunakan skrip startup. Instance ini ditandai sebagai backend instance, sehingga Anda dapat menerapkan aturan firewall tertentu padanya nanti:
gcloud compute instances create backend \ --zone={{{project_0.default_zone | zone}}} \ --machine-type=e2-standard-2 \ --tags=backend \ --metadata=startup-script-url=https://storage.googleapis.com/fancy-store-{{{project_0.project_id | Project ID}}}/startup-script.sh

Mengonfigurasi koneksi ke backend

Sebelum men-deploy frontend aplikasi, Anda perlu mengupdate konfigurasinya agar terkoneksi ke backend yang baru saja Anda deploy.

  1. Ambil alamat IP eksternal backend dengan perintah berikut. Lihat pada tab EXTERNAL_IP untuk backend instance tersebut:
gcloud compute instances list

Contoh output:

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. Salin IP Eksternal untuk backend.

  2. Pada Cloud Shell Explorer, buka monolith-to-microservices > react-app.

  3. Pada Editor Kode, pilih View > Toggle Hidden Files untuk melihat file .env.

Pada langkah berikutnya, Anda akan mengedit file .env agar terkoneksi ke IP Eksternal backend. [BACKEND_ADDRESS] mewakili alamat IP Eksternal dari backend instance yang ditentukan dari perintah gcloud yang baru saja dieksekusi.

  1. Pada file .env, ganti localhost dengan [BACKEND_ADDRESS] Anda:
REACT_APP_ORDERS_URL=http://[BACKEND_ADDRESS]:8081/api/orders REACT_APP_PRODUCTS_URL=http://[BACKEND_ADDRESS]:8082/api/products
  1. Simpan file dengan mengklik tombol Save.

  2. Di Cloud Shell, jalankan perintah berikut untuk membangun kembali react-app, yang mengupdate kode frontend:

cd ~/monolith-to-microservices/react-app npm install && npm run-script build
  1. Kemudian jalankan perintah berikut untuk menyalin kode aplikasi ke dalam bucket Cloud Storage:
cd ~ rm -rf monolith-to-microservices/*/node_modules gsutil -m cp -r monolith-to-microservices gs://fancy-store-{{{project_0.project_id | Project ID}}}/

Men-deploy frontend instance

Sekarang setelah kode dikonfigurasi, Anda siap men-deploy frontend instance.

  • Jalankan perintah berikut untuk men-deploy frontend instance dengan perintah serupa seperti sebelumnya. Instance ini ditandai sebagai frontend untuk keperluan firewall:
gcloud compute instances create frontend \ --zone={{{project_0.default_zone | zone}}} \ --machine-type=e2-standard-2 \ --tags=frontend \ --metadata=startup-script-url=https://storage.googleapis.com/fancy-store-{{{project_0.project_id | Project ID}}}/startup-script.sh Catatan: Perintah deployment dan skrip startup digunakan dengan frontend instance dan backend instance untuk kemudahan, dan karena kode dikonfigurasi untuk meluncurkan semua microservice secara default. Sebab itu, dalam contoh ini, semua microservice berjalan baik di frontend maupun backend. Dalam lingkungan produksi, Anda hanya akan menjalankan microservice yang Anda perlukan pada tiap komponen.

Mengonfigurasi jaringan

  1. Jalankan perintah berikut untuk membuat aturan firewall yang mengizinkan akses ke port 8080 untuk frontend, dan port 8081-8082 untuk backend. Perintah firewall ini menggunakan tag yang ditetapkan dalam pembuatan instance untuk aplikasi:
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

Situs sekarang seharusnya sudah dapat berfungsi sepenuhnya.

  1. Untuk melihat IP eksternal frontend, Anda perlu mengetahui alamatnya. Jalankan perintah berikut dan cari EXTERNAL_IP dari frontend instance:
gcloud compute instances list

Contoh output:

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

Mungkin perlu waktu beberapa menit untuk memulai dan mengonfigurasi instance.

  1. Tunggu 3 menit lalu buka tab browser baru dan masukkan alamat http://[FRONTEND_ADDRESS]:8080 untuk mengakses situs, dengan [FRONTEND_ADDRESS] adalah EXTERNAL_IP frontend yang disebutkan sebelumnya.

  2. Coba buka halaman Products dan Orders. Seharusnya sekarang semuanya berfungsi.

Halaman tab Products di Fancy Store. Gambar produk ditampilkan dalam format ubin.

Klik Periksa progres saya untuk memverifikasi tujuan. Men-deploy instance dan mengonfigurasi jaringan

Tugas 5. Membuat grup instance terkelola

Agar aplikasi dapat diskalakan, grup instance terkelola akan dibuat dan menggunakan instance frontend dan backend sebagai Template Instance.

Grup instance terkelola (MIG) berisi instance identik yang dapat Anda kelola sebagai satu entity dalam satu zona. Grup instance terkelola menjaga ketersediaan tinggi aplikasi Anda dengan secara proaktif memastikan instance Anda terus tersedia, yaitu dalam status RUNNING. Anda akan menggunakan grup instance terkelola untuk frontend instance dan backend instance guna menyediakan autohealing, load balancing, penskalaan otomatis, dan update berkelanjutan.

Membuat template instance dari instance sumber

Sebelum dapat membuat grup instance terkelola, Anda harus terlebih dahulu membuat template instance yang akan menjadi fondasi grup tersebut. Dengan template instance, Anda dapat menentukan jenis mesin, boot disk image atau image container, jaringan, dan properti instance lainnya yang akan digunakan saat membuat instance VM baru. Anda dapat menggunakan template instance untuk membuat instance dalam grup instance terkelola atau bahkan membuat instance secara individual.

Untuk membuat template instance, gunakan instance yang sudah Anda buat sebelumnya.

  1. Pertama, jalankan perintah berikut untuk menghentikan kedua instance:
gcloud compute instances stop frontend --zone={{{project_0.default_zone | zone}}} gcloud compute instances stop backend --zone={{{project_0.default_zone | zone}}}
  1. Kemudian, buat template instance dari setiap instance sumber dengan perintah berikut:
gcloud compute instance-templates create fancy-fe \ --source-instance-zone={{{project_0.default_zone | zone}}} \ --source-instance=frontend gcloud compute instance-templates create fancy-be \ --source-instance-zone={{{project_0.default_zone | zone}}} \ --source-instance=backend
  1. Jalankan perintah berikut untuk mengonfirmasi bahwa template instance telah dibuat:
gcloud compute instance-templates list

Contoh output:

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. Setelah template instance dibuat, jalankan perintah berikut untuk menghapus VM backend guna menghemat ruang resource:
gcloud compute instances delete backend --zone={{{project_0.default_zone | zone}}}
  1. Ketikkan dan masukkan y saat diminta.

Biasanya, Anda juga dapat menghapus VM frontend, tetapi Anda akan menggunakannya untuk memperbarui template instance nanti di lab.

Membuat grup instance terkelola

  1. Selanjutnya, jalankan perintah berikut untuk membuat dua grup instance terkelola, satu untuk frontend dan satu lagi untuk backend:
gcloud compute instance-groups managed create fancy-fe-mig \ --zone={{{project_0.default_zone | zone}}} \ --base-instance-name fancy-fe \ --size 2 \ --template fancy-fe gcloud compute instance-groups managed create fancy-be-mig \ --zone={{{project_0.default_zone | zone}}} \ --base-instance-name fancy-be \ --size 2 \ --template fancy-be

Grup instance terkelola ini akan menggunakan template instance dan dikonfigurasi untuk tiap dua instance dalam tiap grup sebagai awalnya. Instance secara otomatis diberi nama berdasarkan base-instance-name yang ditentukan dengan penambahan karakter acak.

  1. Jalankan perintah berikut untuk memastikan bahwa untuk aplikasi Anda, microservice frontend berjalan di port 8080, dan microservice backend berjalan di port 8081 untuk orders, dan port 8082 untuk products:
gcloud compute instance-groups set-named-ports fancy-fe-mig \ --zone={{{project_0.default_zone | zone}}} \ --named-ports frontend:8080 gcloud compute instance-groups set-named-ports fancy-be-mig \ --zone={{{project_0.default_zone | zone}}} \ --named-ports orders:8081,products:8082

Karena ini adalah port nonstandar, Anda menentukan port bernama untuk mengidentifikasinya. Port bernama adalah metadata pasangan nilai kunci yang mewakili nama layanan dan port tempatnya dijalankan. Port bernama dapat ditetapkan ke grup instance, yang menunjukkan bahwa layanan tersedia di semua instance dalam grup. Informasi ini digunakan oleh layanan Load Balancing HTTP yang akan Anda konfigurasi nanti.

Mengonfigurasi autohealing

Untuk meningkatkan ketersediaan aplikasi itu sendiri dan memverifikasi bahwa aplikasi responsif, atur kebijakan autohealing untuk grup instance terkelola.

Kebijakan autohealing bergantung pada health check berbasis aplikasi untuk memverifikasi bahwa aplikasi merespons seperti yang diharapkan. Memeriksa responsivitas aplikasi akan lebih tepat dibanding sekadar memverifikasi bahwa suatu instance berstatus RUNNING, yang merupakan perilaku default.

Catatan: Health check terpisah digunakan untuk load balancing dan autohealing. Health check untuk load balancing dapat dan seharusnya lebih agresif karena health check ini menentukan apakah suatu instance menerima traffic pengguna atau tidak. Anda sebaiknya cepat mendeteksi instance yang tidak responsif, sehingga dapat mengalihkan traffic jika perlu. Sebaliknya, health check untuk autohealing menyebabkan Compute Engine secara proaktif mengganti instance yang gagal, sehingga health check ini harus lebih konservatif daripada health check load balancing.
  1. Jalankan perintah berikut untuk membuat health check yang akan memperbaiki instance jika menampilkan "unhealthy" 3 kali berturut-turut untuk frontend dan backend:
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. Jalankan perintah berikut untuk membuat aturan firewall yang mengizinkan pemeriksaan health check terhubung ke microservice pada port 8080-8081:
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. Terapkan health check ke layanan masing-masing dengan perintah berikut:
gcloud compute instance-groups managed update fancy-fe-mig \ --zone={{{project_0.default_zone | zone}}} \ --health-check fancy-fe-hc \ --initial-delay 300 gcloud compute instance-groups managed update fancy-be-mig \ --zone={{{project_0.default_zone | zone}}} \ --health-check fancy-be-hc \ --initial-delay 300 Catatan: Mungkin diperlukan waktu 15 menit sebelum autohealing mulai memantau instance dalam grup.
  1. Lanjutkan ke lab untuk memberikan waktu bagi autohealing memantau instance dalam grup. Anda akan menyimulasikan kegagalan untuk menguji autohealing di akhir lab.

Klik Periksa progres saya untuk memverifikasi tujuan. Membuat grup instance terkelola

Tugas 6. Membuat load balancer

Untuk melengkapi grup instance terkelola Anda, gunakan Load Balancer HTTP(S) untuk menyajikan traffic ke microservice frontend dan backend, dan gunakan pemetaan untuk mengirim traffic ke layanan backend yang tepat berdasarkan aturan penetapan jalur. Hal ini akan mengekspos satu IP yang di-load balance untuk semua layanan.

Anda dapat mempelajari lebih lanjut opsi Load Balancing di Google Cloud: Ringkasan Load Balancing.

Membuat load balancer HTTP(S)

Google Cloud menawarkan beragam jenis load balancer. Pada lab ini, Anda akan menggunakan Load Balancer HTTP(S) untuk traffic Anda. Load balancer HTTP disusun sebagai berikut:

  • Aturan penerusan mengarahkan permintaan masuk ke proxy HTTP target.
  • Proxy HTTP target memeriksa tiap permintaan di peta URL guna menentukan layanan backend yang sesuai untuk permintaan.
  • Layanan backend mengarahkan tiap permintaan ke backend yang sesuai berdasarkan kapasitas penyajian, zona, dan responsivitas instance dari backend yang terkait. Respons tiap backend instance diverifikasi menggunakan health check HTTP. Jika layanan backend dikonfigurasi untuk menggunakan health check HTTPS atau HTTP/2, permintaan akan dienkripsi saat dikirimkan ke backend instance.
  • Sesi antara load balancer dan instance dapat menggunakan protokol HTTP, HTTPS, atau HTTP/2. Jika Anda menggunakan HTTPS atau HTTP/2, tiap instance di layanan backend harus memiliki sertifikat SSL.
Catatan: Untuk tujuan demonstrasi guna menghindari kerumitan sertifikat SSL, gunakan HTTP, bukan HTTPS. Untuk produksi, disarankan menggunakan HTTPS untuk enkripsi jika memungkinkan.
  1. Jalankan perintah berikut untuk membuat health check yang digunakan untuk menentukan instance mana yang mampu menyajikan traffic untuk setiap layanan:
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 Catatan: Health check ini ditujukan untuk load balancer, dan hanya menangani pengarahan traffic dari load balancer. Health check ini tidak menyebabkan grup instance terkelola membuat ulang instance.
  1. Jalankan perintah berikut untuk membuat layanan backend yang menjadi target untuk traffic yang di-load balance; layanan backend menggunakan health check dan port bernama yang Anda buat:
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. Jalankan perintah berikut untuk menambahkan layanan backend load balancer:
gcloud compute backend-services add-backend fancy-fe-frontend \ --instance-group-zone={{{project_0.default_zone | zone}}} \ --instance-group fancy-fe-mig \ --global gcloud compute backend-services add-backend fancy-be-orders \ --instance-group-zone={{{project_0.default_zone | zone}}} \ --instance-group fancy-be-mig \ --global gcloud compute backend-services add-backend fancy-be-products \ --instance-group-zone={{{project_0.default_zone | zone}}} \ --instance-group fancy-be-mig \ --global
  1. Jalankan perintah berikut untuk membuat peta URL yang menentukan URL mana yang diarahkan ke layanan backend yang dituju:
gcloud compute url-maps create fancy-map \ --default-service fancy-fe-frontend
  1. Jalankan perintah berikut untuk membuat path matcher yang memungkinkan jalur /api/orders dan /api/products diarahkan ke layanannya masing-masing:
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. Jalankan perintah berikut untuk membuat proxy yang terikat ke peta URL:
gcloud compute target-http-proxies create fancy-proxy \ --url-map fancy-map
  1. Jalankan perintah berikut untuk membuat aturan penerusan global yang mengikat alamat IP publik dan port ke proxy:
gcloud compute forwarding-rules create fancy-http-rule \ --global \ --target-http-proxy fancy-proxy \ --ports 80

Klik Periksa progres saya untuk memverifikasi tujuan. Membuat load balancer HTTP(S)

Mengupdate konfigurasi

Setelah Anda memiliki alamat IP statis baru, update kode di frontend agar terkoneksi ke alamat baru ini, bukan alamat sementara sebelumnya yang terkoneksi ke backend instance.

  1. Di Cloud Shell, jalankan perintah berikut untuk mengubah ke folder react-app yang berisi file .env, yang menyimpan konfigurasi:
cd ~/monolith-to-microservices/react-app/
  1. Cari alamat IP untuk Load Balancer dengan menjalankan perintah berikut:
gcloud compute forwarding-rules list --global

Contoh output:

NAME: fancy-http-rule REGION: IP_ADDRESS: 34.111.203.235 IP_PROTOCOL: TCP TARGET: fancy-proxy
  1. Kembali ke Editor Cloud Shell, lalu edit lagi file .env agar terkoneksi ke IP Publik Load Balancer. [LB_IP] mewakili alamat IP Eksternal dari backend instance yang ditentukan sebelumnya.
REACT_APP_ORDERS_URL=http://[LB_IP]/api/orders REACT_APP_PRODUCTS_URL=http://[LB_IP]/api/products Catatan: Port dihapus di alamat baru karena load balancer dikonfigurasi guna menangani penerusan ini untuk Anda.
  1. Simpan file dengan mengklik tombol Save.

  2. Jalankan perintah berikut untuk membangun kembali react-app, yang mengupdate kode frontend:

cd ~/monolith-to-microservices/react-app npm install && npm run-script build
  1. Jalankan perintah berikut untuk menyalin kode aplikasi ke dalam bucket Anda:
cd ~ rm -rf monolith-to-microservices/*/node_modules gsutil -m cp -r monolith-to-microservices gs://fancy-store-{{{project_0.project_id | Project ID}}}/

Mengupdate frontend instance

Setelah ada kode dan konfigurasi baru, frontend instance dalam grup instance terkelola sebaiknya mengambil kode baru.

  • Karena instance Anda mengambil kode saat sistem dimulai, jalankan perintah berikut untuk mengeluarkan perintah mulai ulang yang berkelanjutan:
gcloud compute instance-groups managed rolling-action replace fancy-fe-mig \ --zone={{{project_0.default_zone | zone}}} \ --max-unavailable 100% Catatan: Dalam contoh penggantian berkelanjutan ini, Anda secara spesifik menyatakan bahwa semua mesin dapat segera diganti melalui parameter --max-unavailable. Tanpa parameter ini, perintah akan membuat sebuah instance tetap berjalan sambil memulai ulang instance lainnya untuk memastikan ketersediaan. Untuk tujuan pengujian ini, Anda menentukan bahwa semua instance dapat segera diganti demi kecepatan.

Klik Periksa progres saya untuk memverifikasi tujuan. Mengupdate frontend instance

Menguji situs

  1. Tunggu 3 menit setelah Anda memberikan perintah rolling-action replace agar ada cukup waktu untuk pemrosesan instance, lalu periksa status grup instance terkelola. Jalankan perintah berikut untuk mengonfirmasi bahwa layanan tercantum sebagai HEALTHY:
watch -n 2 gcloud compute backend-services get-health fancy-fe-frontend --global
  1. Tunggu hingga ke-2 layanan tercantum sebagai HEALTHY.

Contoh output:

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 Catatan: Jika satu instance mengalami masalah dan statusnya UNHEALTHY, instance tersebut akan otomatis diperbaiki. Tunggu sampai perbaikan ini terjadi.

Jika tidak ada instance yang menunjukkan status HEALTHY setelah ditunggu beberapa saat, berarti ada yang salah dengan penyiapan frontend instance sehingga tidak dapat diakses pada port 8080. Uji hal ini dengan mengakses instance secara langsung pada port 8080.
  1. Setelah kedua item muncul sebagai HEALTHY pada daftar, keluar dari perintah watch dengan menekan CTRL+C.
Catatan: Aplikasi dapat diakses melalui http://[LB_IP] dengan [LB_IP] adalah IP_ADDRESS yang ditentukan untuk Load Balancer, yang dapat ditemukan dengan perintah berikut:

gcloud compute forwarding-rules list --global

Anda akan memeriksa aplikasinya nanti di lab.

Tugas 7. Menskalakan Compute Engine

Sejauh ini Anda telah membuat dua grup instance terkelola, masing-masing dengan dua instance. Konfigurasi ini berfungsi penuh, tetapi merupakan konfigurasi statis terlepas dari bebannya. Selanjutnya, Anda akan membuat kebijakan penskalaan otomatis berdasarkan penggunaan untuk secara otomatis menskalakan tiap grup instance terkelola.

Mengubah ukuran secara otomatis berdasarkan penggunaan

  • Untuk membuat kebijakan penskalaan otomatis, jalankan perintah berikut:
gcloud compute instance-groups managed set-autoscaling \ fancy-fe-mig \ --zone={{{project_0.default_zone | zone}}} \ --max-num-replicas 2 \ --target-load-balancing-utilization 0.60 gcloud compute instance-groups managed set-autoscaling \ fancy-be-mig \ --zone={{{project_0.default_zone | zone}}} \ --max-num-replicas 2 \ --target-load-balancing-utilization 0.60

Perintah ini membuat autoscaler pada grup instance terkelola yang secara otomatis menambahkan instance ketika penggunaan load balancer berada di atas 60%, dan menghapus instance ketika penggunaannya berada di bawah 60%.

Mengaktifkan jaringan penayangan konten

Cara lain yang dapat membantu penskalaan adalah mengaktifkan layanan Jaringan Penayangan Konten guna menyediakan penyimpanan cache untuk frontend.

  • Jalankan perintah berikut pada layanan frontend:
gcloud compute backend-services update fancy-fe-frontend \ --enable-cdn --global

Saat pengguna meminta konten dari load balancer HTTP(S), permintaan tersebut akan tiba di Google Front End (GFE), dan layanan ini pertama-tama akan mencari respons atas permintaan pengguna di cache Cloud CDN. Jika GFE menemukan respons yang di-cache, layanan ini akan mengirimkan respons yang di-cache itu ke pengguna. Hal ini disebut cache hit, atau cache ditemukan.

Jika GFE tidak dapat menemukan respons yang telah di-cache untuk permintaan tersebut, GFE akan membuat permintaan langsung ke backend. Jika respons terhadap permintaan ini dapat disimpan dalam cache, GFE akan menyimpan respons tersebut dalam cache Cloud CDN sehingga cache tersebut dapat digunakan untuk permintaan berikutnya.

Klik Periksa progres saya untuk memverifikasi tujuan. Menskalakan Compute Engine

Tugas 8. Mengupdate situs

Mengupdate template instance

Template instance yang ada tidak dapat diedit. Namun, karena instance Anda stateless dan semua konfigurasi dilakukan melalui skrip startup, Anda hanya perlu mengubah template instance jika ingin mengubah setelan template. Dalam tugas ini, Anda akan membuat perubahan sederhana untuk menggunakan jenis mesin yang lebih besar dan menerapkannya.

Selesaikan langkah-langkah berikut untuk melakukan tindakan yang relevan:

  • Update frontend instance, yang bertindak sebagai dasar untuk template instance. Selama update berlangsung, masukkan file pada versi terbaru image template instance, lalu update template instance, luncurkan template baru, dan konfirmasi bahwa file tersebut ada pada instance grup instance terkelola.

  • Ubah jenis mesin template instance Anda dengan beralih dari jenis mesin e2-standard-2 ke e2-small.

  1. Jalankan perintah berikut untuk mengubah jenis mesin frontend instance:
gcloud compute instances set-machine-type frontend \ --zone={{{project_0.default_zone | zone}}} \ --machine-type e2-small
  1. Jalankan perintah berikut untuk membuat Template Instance baru:
gcloud compute instance-templates create fancy-fe-new \ --region=$REGION \ --source-instance=frontend \ --source-instance-zone={{{project_0.default_zone | zone}}}
  1. Luncurkan template instance yang diupdate ke Grup Instance Terkelola menggunakan perintah berikut:
gcloud compute instance-groups managed rolling-action start-update fancy-fe-mig \ --zone={{{project_0.default_zone | zone}}} \ --version template=fancy-fe-new
  1. Tunggu 3 menit, lalu jalankan perintah berikut untuk memantau status update:
watch -n 2 gcloud compute instance-groups managed list-instances fancy-fe-mig \ --zone={{{project_0.default_zone | zone}}}

Proses ini memerlukan waktu beberapa menit.

Pastikan Anda memiliki setidaknya satu instance dalam kondisi berikut sebelum melanjutkan:

  • STATUS: RUNNING
  • ACTION disetel ke None
  • INSTANCE_TEMPLATE: nama template baru (fancy-fe-new)
  1. Salin nama salah satu mesin yang tercantum untuk digunakan pada perintah berikutnya.

  2. Tekan CTRL+C untuk keluar dari proses watch.

  3. Jalankan perintah berikut untuk melihat apakah virtual machine tersebut menggunakan jenis mesin baru (e2-small), dengan [VM_NAME] sebagai instance yang baru dibuat:

gcloud compute instances describe [VM_NAME] --zone={{{project_0.default_zone | zone}}} | grep machineType

Contoh output yang diharapkan:

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

Membuat perubahan pada situs

Skenario: Tim pemasaran telah meminta Anda mengubah halaman beranda situs Anda. Menurut mereka, halaman ini harus lebih representatif terkait apa perusahaan Anda dan apa yang sebenarnya Anda jual.

Di bagian ini, Anda akan menambahkan teks ke beranda agar tim pemasaran merasa senang. Sepertinya salah satu developer telah membuat perubahan itu dengan nama file index.js.new. Anda cukup menyalin file ini ke index.js dan perubahannya akan diterapkan. Lakukan petunjuk berikut untuk membuat perubahan yang sesuai.

  1. Jalankan perintah berikut untuk menyalin file yang telah diperbarui itu ke nama file yang benar:
cd ~/monolith-to-microservices/react-app/src/pages/Home mv index.js.new index.js
  1. Cetak konten file untuk memverifikasi perubahan:
cat ~/monolith-to-microservices/react-app/src/pages/Home/index.js

Kode yang dihasilkan akan menyerupai output berikut.

Output:

/* 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> ); }

Anda telah mengupdate komponen React, tetapi Anda perlu membangun aplikasi React untuk menghasilkan file statis.

  1. Jalankan perintah berikut untuk membangun aplikasi React dan salin ke direktori publik monolit:
cd ~/monolith-to-microservices/react-app npm install && npm run-script build
  1. Kemudian jalankan perintah berikut untuk mengirim kembali kode ini ke bucket:
cd ~ rm -rf monolith-to-microservices/*/node_modules gsutil -m cp -r monolith-to-microservices gs://fancy-store-{{{project_0.project_id | Project ID}}}/

Memaksakan perubahan dengan penggantian berkelanjutan

  1. Sekarang, jalankan perintah berikut untuk memaksa semua instance diganti agar dapat mengambil update:
gcloud compute instance-groups managed rolling-action replace fancy-fe-mig \ --zone={{{project_0.default_zone | zone}}} \ --max-unavailable=100%

Catatan: Dalam contoh penggantian berkelanjutan ini, Anda secara spesifik menyatakan bahwa semua mesin dapat segera diganti melalui parameter --max-unavailable. Tanpa parameter ini, perintah akan membuat sebuah instance tetap berjalan sambil menggantikan yang lain. Untuk tujuan pengujian ini, Anda menentukan bahwa semua instance dapat segera diganti demi kecepatan. Dalam produksi, membiarkan buffer akan memungkinkan situs untuk terus menyajikan kontennya sambil melakukan update.

Klik Periksa progres saya untuk memverifikasi tujuan. Mengupdate situs

  1. Tunggu 3 menit setelah Anda memberikan perintah rolling-action replace agar ada cukup waktu untuk pemrosesan instance, lalu periksa status grup instance terkelola. Jalankan perintah berikut untuk mengonfirmasi bahwa layanan tercantum sebagai HEALTHY:
watch -n 2 gcloud compute backend-services get-health fancy-fe-frontend --global
  1. Tunggu beberapa saat hingga kedua layanan tersebut muncul dan menjadi HEALTHY.

Contoh output:

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. Setelah ada item yang muncul dalam daftar dengan status HEALTHY, keluar dari perintah watch dengan menekan CTRL+C.

  2. Jelajahi situs melalui http://[LB_IP] dengan [LB_IP] adalah IP_ADDRESS yang ditentukan untuk Load Balancer, yang dapat ditemukan dengan perintah berikut:

gcloud compute forwarding-rules list --global

Perubahan situs yang baru sekarang akan terlihat.

Menyimulasikan kegagalan

Untuk mengonfirmasi bahwa health check berfungsi, Anda memutuskan untuk login ke sebuah instance dan menghentikan layanan.

  1. Untuk menemukan nama instance, jalankan perintah berikut:
gcloud compute instance-groups list-instances fancy-fe-mig --zone={{{project_0.default_zone | zone}}}
  1. Salin nama instance, lalu jalankan perintah berikut untuk menjalankan SSH pada instance, dengan INSTANCE_NAME adalah salah satu instance dari daftar:
gcloud compute ssh [INSTANCE_NAME] --zone={{{project_0.default_zone | zone}}}
  1. Ketik "y" untuk mengonfirmasi, dan tekan Enter dua kali untuk tidak menggunakan sandi.

  2. Dalam instance, jalankan perintah berikut untuk menggunakan supervisorctl guna menghentikan aplikasi:

sudo supervisorctl stop nodeapp; sudo killall node
  1. Jalankan perintah berikut untuk keluar dari instance:
exit
  1. Pantau operasi perbaikan:
watch -n 2 gcloud compute operations list \ --filter='operationType~compute.instances.repair.*'

Proses ini membutuhkan waktu beberapa menit.

Cari contoh output berikut.

Output:

NAME: repair-1755080598062-63c3c8b99843b-eed8dabc-f1833ea3 TYPE: compute.instances.repair.recreateInstance TARGET: us-east4-c/instances/fancy-fe-tn40 HTTP_STATUS: 200 STATUS: DONE TIMESTAMP: 2025-08-13T03:23:18.062-07:00

Grup instance terkelola telah membuat ulang instance tersebut untuk memperbaikinya.

  1. Anda juga dapat membuka Navigation menu > Compute Engine > VM instances untuk memantau melalui konsol.

Selamat!

Anda telah berhasil men-deploy, menskalakan, dan mengupdate situs Anda di Compute Engine. Anda kini berpengalaman dengan Compute Engine, Grup Instance Terkelola, Load Balancer, dan Health Check.

Langkah berikutnya/Pelajari lebih lanjut

Sertifikasi dan pelatihan Google Cloud

...membantu Anda mengoptimalkan teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual untuk menyesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.

Panduan Terakhir Diperbarui pada 25 Agustus 2025

Lab Terakhir Diuji pada 25 Agustus 2025

Hak cipta 2025 Google LLC. Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.

Sebelum memulai

  1. Lab membuat project dan resource Google Cloud untuk jangka waktu tertentu
  2. Lab memiliki batas waktu dan tidak memiliki fitur jeda. Jika lab diakhiri, Anda harus memulainya lagi dari awal.
  3. Di kiri atas layar, klik Start lab untuk memulai

Gunakan penjelajahan rahasia

  1. Salin Nama Pengguna dan Sandi yang diberikan untuk lab tersebut
  2. Klik Open console dalam mode pribadi

Login ke Konsol

  1. Login menggunakan kredensial lab Anda. Menggunakan kredensial lain mungkin menyebabkan error atau dikenai biaya.
  2. Setujui persyaratan, dan lewati halaman resource pemulihan
  3. Jangan klik End lab kecuali jika Anda sudah menyelesaikan lab atau ingin mengulanginya, karena tindakan ini akan menghapus pekerjaan Anda dan menghapus project

Konten ini tidak tersedia untuk saat ini

Kami akan memberi tahu Anda melalui email saat konten tersedia

Bagus!

Kami akan menghubungi Anda melalui email saat konten tersedia

Satu lab dalam satu waktu

Konfirmasi untuk mengakhiri semua lab yang ada dan memulai lab ini

Gunakan penjelajahan rahasia untuk menjalankan lab

Gunakan jendela Samaran atau browser pribadi untuk menjalankan lab ini. Langkah ini akan mencegah konflik antara akun pribadi Anda dan akun Siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.