Menerapkan konfigurasi VM baru di MIG


Halaman ini menjelaskan cara mengonfigurasi instance virtual machine (VM) dalam grup instance terkelola (MIG) dan metode yang dapat Anda gunakan untuk menerapkan konfigurasi ke VM dalam grup.

Tentukan konfigurasi yang diinginkan untuk VM di MIG menggunakan komponen konfigurasi VM berikut:

  • Wajib: Template instance
  • Opsional: Konfigurasi semua instance
  • Opsional: Konfigurasi stateful

Setiap kali Anda mengupdate konfigurasi yang diinginkan menggunakan komponen tersebut, Compute Engine akan secara otomatis menerapkan konfigurasi yang telah Anda perbarui ke VM baru yang ditambahkan ke grup.

Untuk menerapkan konfigurasi terbaru ke VM yang ada, gunakan metode yang dijelaskan di halaman ini:

  • Peluncuran otomatis dengan anggaran gangguan dan update canary opsional untuk template baru
  • Update manual yang selektif hanya untuk VM tertentu, untuk meminimalkan gangguan
  • Pembuatan ulang VM tertentu

Anda juga dapat mengonfigurasi MIG untuk menerapkan konfigurasi terbaru yang tersedia ke VM selama perbaikan VM. Untuk mengetahui informasi selengkapnya, lihat Menerapkan update konfigurasi selama perbaikan.

Jika Anda hanya perlu mengubah ukuran MIG, baca dokumentasi untuk mengetahui cara menambahkan atau menghapus VM di MIG. Jika Anda ingin mempelajari cara mengonfigurasi fitur MIG, lihat dokumen untuk autoscaling, autohealing, load balancing , dan workload stateful.

Sebelum memulai

  • Siapkan autentikasi, jika Anda belum melakukannya. Autentikasi adalah proses verifikasi identitas Anda untuk akses ke layanan dan API Google Cloud. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat melakukan autentikasi ke Compute Engine sebagai berikut.

    Pilih tab untuk melihat bagaimana Anda berencana menggunakan contoh di halaman ini:

    Konsol

    Saat menggunakan Konsol Google Cloud untuk mengakses API dan layanan Google Cloud, Anda tidak perlu menyiapkan autentikasi.

    gcloud

    1. Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init
    2. Menetapkan region dan zona default.

    REST

    Untuk menggunakan contoh REST API di halaman ini dalam lingkungan pengembangan lokal, gunakan kredensial yang Anda berikan ke gcloud CLI.

      Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

      gcloud init

Komponen konfigurasi untuk VM di MIG

Anda mengonfigurasi VM di MIG melalui komponen berikut:

KomponenPropertiKasus penggunaan
Template instance Jenis mesin, boot disk image, label, skrip startup, dan properti VM lainnya Wajib: Gunakan template instance untuk menentukan properti instance wajib dan opsional untuk semua VM dalam grup.

Opsional: Jika ingin melakukan pengujian canary konfigurasi VM kedua, Anda dapat menambahkan template instance kedua ke grup dan menerapkannya ke subset VM di grup.
Konfigurasi semua instance Label dan metadata Opsional: Gunakan konfigurasi semua instance untuk mengganti properti template instance dengan cepat untuk semua VM dalam grup.
Konfigurasi stateful Disk, alamat IP, dan metadata stateful Opsional: Jika Anda perlu mendukung workload stateful, tambahkan konfigurasi stateful ke VM dalam grup.

Jika memperbarui konfigurasi apa pun untuk grup melalui komponen tersebut, Anda harus menerapkan konfigurasi terbaru ke VM yang ada dalam grup agar konfigurasi yang diperbarui efektif.

Metode untuk menerapkan konfigurasi baru ke VM yang ada

Setelah mengupdate konfigurasi VM MIG, Anda dapat menerapkan konfigurasi baru ke VM yang ada di grup menggunakan metode berikut:

  • Otomatis (proaktif): Gunakan metode ini jika Anda ingin MIG menerapkan konfigurasi baru secara otomatis ke semua atau subset VM yang ada dalam grup. Tingkat gangguan pada VM yang berjalan bergantung pada kebijakan update yang Anda konfigurasikan. Anda dapat menggunakan metode ini untuk melakukan update canary pada template instance baru. Untuk menggunakan metode ini, setel jenis update MIG ke "proactive".
  • Selektif (oportunistik): Gunakan metode ini jika Anda ingin menerapkan update secara manual, atau jika ingin mengupdate semua VM yang ada di grup sekaligus. Anda akan menargetkan setiap atau semua VM untuk diupdate ke konfigurasi terbaru. Untuk menggunakan metode ini, tetapkan jenis update MIG ke "opportunistic".
  • Pembuatan ulang VM: Menerapkan konfigurasi baru dengan membuat ulang VM tertentu.

Untuk mengetahui informasi selengkapnya tentang cara menetapkan jenis update MIG, lihat Menyiapkan update proaktif atau oportunistik.

Otomatis (proaktif)

Jenis update otomatis juga dikenal sebagai jenis update proaktif. Saat Anda menetapkan jenis update MIG ke proaktif, MIG akan otomatis menerapkan konfigurasi terbaru ke VM sesuai kebutuhan.

Menetapkan jenis update MIG sebagai proaktif menawarkan dua keuntungan utama:

  • Peluncuran update terjadi secara otomatis sesuai spesifikasi Anda, tanpa perlu input tambahan setelah permintaan awal. Anda dapat menentukan kecepatan deployment, tingkat gangguan pada layanan Anda, dan cakupan update.
  • Anda dapat mengotomatiskan peluncuran parsial, yang memungkinkan pengujian canary.

Untuk mempelajari cara menetapkan jenis update MIG, lihat Menyiapkan update proaktif atau oportunistik.

Untuk mengetahui informasi selengkapnya tentang peluncuran otomatis, lihat Menerapkan update konfigurasi VM secara otomatis di MIG.

Selektif (oportunistik)

Jenis update selektif juga dikenal sebagai jenis update oportunistik. Jika Anda menetapkan jenis update MIG ke oportunistik, MIG akan menerapkan konfigurasi baru ke VM yang ada hanya saat Anda secara selektif menargetkan VM tertentu untuk diupdate.

Menetapkan jenis update MIG ke oportunistik menawarkan keuntungan berikut:

  • Anda dapat memilih VM yang ingin diupdate.
  • Anda dapat mengontrol pengaturan waktu dan urutan pembaruan.
  • Anda dapat menggunakan gcloud CLI atau REST untuk langsung mengupdate semua instance.

Dalam skenario tertentu, jenis update selektif berguna karena Anda tidak ingin menyebabkan ketidakstabilan pada sistem jika dapat dihindari. Misalnya, pertimbangkan hal berikut:

  • Salah satu VM di MIG Anda tidak aktif dan perlu diperbaiki, tetapi Anda tidak ingin konfigurasinya berubah. Jika Anda menetapkan jenis update MIG ke oportunistik dan Anda tidak menerapkan update selama perbaikan secara paksa, Compute Engine akan memperbaiki VM menggunakan konfigurasi yang sama dengan yang digunakan sebelumnya untuk membuat VM tersebut, meskipun template instance aslinya sudah tidak ada lagi.

  • Anda memiliki MIG yang diskalakan otomatis dan ingin menerapkan update yang tidak begitu penting tanpa keadaan mendesak. Guna memastikan bahwa Compute Engine tidak merusak VM yang ada untuk menerapkan update, tetapkan jenis update MIG ke oportunistik. Saat melakukan penskalaan, autoscaler akan menghentikan VM dengan konfigurasi lama. Saat penyebaran skala, grup akan membuat VM dengan konfigurasi terbaru.

Untuk mempelajari cara menetapkan jenis update MIG, lihat Menyiapkan update proaktif atau oportunistik.

Untuk mengetahui informasi selengkapnya tentang mengupdate VM secara selektif, baca Menerapkan update konfigurasi VM secara selektif di MIG.

Pembuatan ulang VM

Anda dapat membuat ulang setiap VM di MIG. Jika Anda melakukannya, MIG akan menerapkan konfigurasi terbaru yang belum diterapkan ke VM tersebut. Untuk mengetahui informasi selengkapnya, lihat Membuat ulang VM di MIG.

Menyiapkan pembaruan proaktif atau oportunistik

Untuk menerapkan konfigurasi baru ke VM yang ada secara otomatis, tetapkan jenis update MIG ke "proactive". Untuk menerapkan konfigurasi baru ke VM yang ada hanya saat Anda memilih VM yang akan diupdate, tetapkan jenis update MIG ke "opportunistic".

Gunakan konsol Google Cloud, Google Cloud CLI, atau REST.

Konsol

  1. Di konsol Google Cloud, buka halaman Instance groups.

    Buka halaman Instance groups

  2. Pilih MIG yang ingin diperbarui.

  3. Di bagian atas halaman, klik Update VM.

  4. Guna menetapkan template yang berbeda untuk grup, di bagian New template, pilih template instance yang ingin Anda gunakan.

  5. Di bagian Update configuration, pilih update otomatis atau selektif.

gcloud

Gunakan perintah rolling-action start-update dan setel flag --type ke opportunistic atau proactive.

gcloud compute instance-groups managed rolling-action start-update INSTANCE_GROUP_NAME \
    --version=template=NEW_TEMPLATE \
    --type=TYPE

Anda juga dapat menggunakan perintah update beta dan menyertakan flag --update-policy-type.

gcloud beta compute instance-groups managed update INSTANCE_GROUP_NAME \
    --update-policy-type=TYPE

Ganti kode berikut:

  • INSTANCE_GROUP_NAME: nama grup
  • NEW_TEMPLATE: nama template baru untuk grup
  • TYPE: jenis update, opportunistic atau proactive

REST

Panggil metode patch pada resource miG tingkat zona atau regional.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "updatePolicy": {
    "type": "TYPE" # Choose an opportunistic or proactive update
  },
  "versions": [{
    "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
    }]
}

Ganti kode berikut:

  • PROJECT_ID: project tempat MIG berada.
  • REGION: region tempat MIG Anda berada. Untuk MIG tingkat zona, ganti regions/REGION dengan zones/ZONE.
  • INSTANCE_GROUP_NAME: nama grup.
  • NEW_TEMPLATE: nama template baru untuk grup.
  • TYPE: jenis update, OPPORTUNISTIC atau PROACTIVE.

Untuk mempelajari lebih lanjut tentang cara menetapkan template baru dan menerapkan template tersebut ke VM baru dan yang sudah ada di MIG, lihat halaman berikut:

Periksa jenis kebijakan pembaruan grup Anda

Anda dapat melihat jenis kebijakan update MIG yang saat ini dikonfigurasi ("oportunistik" atau "proaktif") dan setelan kebijakan update lainnya menggunakan gcloud CLI atau REST.

gcloud

Gunakan perintah describe dan sertakan flag --format untuk hanya mencantumkan setelan updatePolicy.

gcloud beta compute instance-groups managed describe INSTANCE_GROUP_NAME \
    --format="(updatePolicy)"

REST

Buat permintaan GET pada MIG tingkat zona atau regional, lalu centang kolom updatePolicy.

GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

Untuk mengubah jenis kebijakan, lihat Menyiapkan update proaktif atau oportunistik.

Update untuk VM yang ditangguhkan dan dihentikan

Jika telah menangguhkan dan menghentikan pool VM dalam MIG, Anda dapat mengupdate secara selektif (oportunistik) terhadap VM yang ditangguhkan atau menghentikan VM seperti Anda mengupdate VM lain yang sedang berjalan. Jika Anda mengonfigurasi update otomatis (proaktif), MIG akan mengupdate VM dalam urutan berikut:

  1. Menjalankan, menangguhkan, dan menghentikan VM
  2. VM dengan status SUSPENDING atau STOPPING

Untuk update otomatis, MIG menghitung lonjakan maksimum dan maksimum tidak tersedia berdasarkan jumlah target VM yang berjalan saja, dan tidak mempertimbangkan VM di kumpulan standby.

Jika update otomatis mengharuskan penggantian VM dalam grup, MIG akan melakukan hal berikut:

  1. Menghapus VM yang ditangguhkan dan dihentikan.
  2. Membuat VM baru dengan template instance baru.
  3. Melakukan proses inisialisasi.
  4. Menangguhkan atau menghentikan VM.

Jika update otomatis hanya memerlukan pemuatan ulang atau mulai ulang VM dalam grup, MIG akan melakukan hal berikut:

  1. Melanjutkan atau memulai VM.
  2. Melakukan update pada VM saat VM berjalan.
  3. Melakukan proses inisialisasi.
  4. Menangguhkan atau menghentikan VM.

Update canary

Jika Anda ingin memulai update canary pada MIG yang telah ditangguhkan atau menghentikan VM, hal berikut akan berlaku:

  • Dalam mode kebijakan standby manual, MIG hanya mengupdate VM yang berjalan berdasarkan jumlah atau persentase VM yang ingin Anda terapkan update. VM yang ditangguhkan dan dihentikan akan tetap berada di versi sebelumnya.
  • Dalam mode kebijakan standby scale-out-pool, Anda tidak dapat memulai update canary di MIG.

Hubungan antara kolom versions dan instanceTemplate

Jika Anda menggunakan REST, sebaiknya gunakan kolom instanceGroupManagers.versions dan regionInstanceGroupManagers.versions guna mengonfigurasi template instance untuk MIG zona dan regional.

Kolom instanceTemplate lama memiliki fungsi yang tumpang-tindih dengan kolom versions karena kedua kolom tersebut memungkinkan Anda menentukan template instance yang digunakan oleh MIG untuk membuat VM. Namun, hanya kolom versions yang memungkinkan Anda menentukan konfigurasi dua template (canary) lanjutan.

Untuk kompatibilitas mundur, MIG tetap mendukung penetapan kolom instanceTemplate level teratas, meskipun sebaiknya Anda beralih ke hanya menggunakan kolom versions. Menggunakan kolom instanceTemplate level teratas dan kolom versions secara bersamaan dapat menyebabkan ambiguitas dan kebingungan.

Jika Anda menentukan kolom instanceTemplate dan kolom versions saat memanggil metode update() atau patch(), ada tiga kemungkinan hasil:

  • Anda menetapkan kedua kolom ke nilai yang sama.

    Ini adalah permintaan yang valid. Dalam kasus ini, hal ini tidak akan menimbulkan ambiguitas, dan template instance yang baru akan diterapkan ke MIG.

    Misalnya, dalam permintaan berikut, instanceTemplate level teratas dan kolom versions akan menentukan template instance yang sama yang berbeda dari template yang ada saat ini, sehingga MIG akan diperbarui ke template instance baru:

    {
     "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
     "versions": [
      {
       "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE"
      }
     ],
     "updatePolicy": {
       "type": "PROACTIVE"
     }
    }
    
  • Anda menetapkan kedua kolom ke nilai yang tidak cocok, tetapi hanya satu nilai yang berbeda dari template instance saat ini di MIG.

    Ini adalah permintaan yang valid. Kolom yang berbeda dari setelan saat ini dianggap sebagai nilai yang diinginkan. Misalnya, Anda memanggil metode update() dan menyediakan kedua kolom, tetapi hanya satu kolom yang diperbarui:

    {
     "instanceTemplate": "global/instanceTemplates/CURRENT_TEMPLATE",
     "versions": [
      {
       "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE"
      }
     ],
     "updatePolicy": {
       "type": "PROACTIVE"
     }
    }
    
  • Anda menetapkan kedua kolom ke nilai yang tidak cocok, dan kedua nilai berbeda dari template instance saat ini di MIG.

    Setelan ini tidak valid dan akan menampilkan error karena tidak ada intent yang jelas.

    {
     "instanceTemplate": "global/instanceTemplates/NEW_TEMPLATE",
     "versions": [
      {
       "instanceTemplate": "global/instanceTemplates/A_DIFFERENT_NEW_TEMPLATE"
      }
     ],
     "updatePolicy": {
       "type": "PROACTIVE"
     }
    }
    

Kolom versions, kolom instanceTemplate, dan metode get()

Jika Anda hanya menentukan satu template instance, baik melalui kolom instanceTemplate level teratas maupun melalui kolom versions atau melalui keduanya, metode get() akan menampilkan kedua kolom tersebut dalam responsnya. Hal ini membuat kolom versions baru kompatibel dengan versi sebelumnya. Selama Anda menentukan satu template instance di salah satu kolom ini, tidak akan ada perubahan pada apa yang ditampilkan metode get() di kolom instanceTemplate.

Jika kolom versions memiliki dua template instance yang ditentukan, metode get() akan menampilkan kolom instanceTemplate level teratas yang kosong. Tidak ada cara untuk mengekspresikan secara jelas konfigurasi template dua instance canary di kolom instanceTemplate level teratas, sehingga kolom ini tidak digunakan selama update canary.

Kolom versions dan metode setInstanceTemplate()

Untuk kompatibilitas mundur, metode setInstanceTemplate() berperilaku seperti sebelumnya, sehingga Anda dapat mengubah template yang digunakan MIG untuk membuat VM. Saat Anda memanggil metode ini, kolom versions akan diganti dengan template instance yang ditentukan oleh metode setInstanceTemplate().

Metode setInstanceTemplate() juga menetapkan updatePolicy ke OPPORTUNISTIC. Hal ini mencegah MIG men-deploy template instance secara aktif yang tidak ditentukan secara eksplisit di kolom versions.

Langkah selanjutnya