Memigrasikan workload yang ada ke grup instance terkelola stateful


Jika Anda sudah memiliki aplikasi stateful pada instance mesin virtual (VM) Compute Engine mandiri (tidak terkelola), Anda dapat memigrasikan aplikasi tersebut ke grup instance terkelola stateful (MIG).

Dengan mengonfigurasi MIG stateful dan menggunakan instance terkelola, Anda bisa mendapatkan manfaat berikut:

  • Status yang dipertahankan: pemeliharaan nama instance, disk, dan metadata meskipun instance dibuat ulang.
  • Autohealing: pembuatan ulang VM secara otomatis dengan workload yang gagal dalam zona yang sama.
  • Update otomatis: deployment konfigurasi instance atau versi software baru yang lancar ke VM di MIG.

Batasan

  • Anda harus menghentikan VM yang ada untuk memigrasikan disk yang ada atau, sebagai alternatif, mengambil snapshot yang konsisten untuk digunakan oleh instance terkelola yang baru.
  • Anda harus menghapus VM yang ada jika ingin menggunakan kembali nama VM-nya.
  • Aplikasi Anda harus dapat berjalan di VM dengan jenis mesin yang sama. Jika aplikasi Anda yang ada memerlukan beberapa instance dari jenis mesin yang berbeda, buat beberapa template instance dan MIG, satu per jenis mesin.
  • Aplikasi Anda harus dimulai ketika VM dimulai. Anda dapat menggunakan image kustom atau skrip startup. Setiap opsi dibahas di bawah.
  • Anda tidak dapat mengupdate sistem operasi atau software dengan meluncurkan update boot image di MIG jika memilih untuk membuat boot disk stateful.
  • Anda dapat mencapai ketersediaan tinggi multi-zona hanya dengan membuat replika redundan di beberapa zona dan dengan mengonfigurasi replikasi data tingkat aplikasi. Stateful MIG mengotomatiskan instance dalam zona yang sama saja dan tidak mengatur failover lintas-zona.
  • Anda tidak dapat menggunakan penskalaan otomatis dengan MIG stateful.
  • Tinjau batasan MIG stateful.

Biaya

Tutorial ini menggunakan komponen Google Cloud yang dapat ditagih termasuk:

  • Compute Engine

Gunakan kalkulator harga untuk membuat perkiraan biaya berdasarkan penggunaan yang Anda proyeksikan.

Sebelum memulai

Panduan ini menggunakan gcloud CLI. Anda dapat mengakses alat ini menggunakan Cloud Shell. Atau, jika Anda ingin menjalankan gcloud CLI di komputer lokal, download dan instal gcloud CLI terbaru.

Ringkasan migrasi

  1. Pahami komponen yang membentuk MIG stateful.
  2. Tinjau konfigurasi yang ada untuk menentukan spesifikasi umum VM.
  3. Atau, buat image kustom untuk digunakan sebagai boot disk image umum.
  4. Buat template instance untuk menentukan konfigurasi VM umum untuk MIG.
  5. Buat MIG kosong.
  6. Konversi VM yang ada menjadi instance terkelola di MIG, termasuk konfigurasi per instance.
  7. Konfigurasi autohealing untuk MIG guna meningkatkan ketahanan aplikasi Anda.
  8. Secara opsional, untuk mengurangi overhead konfigurasi, ganti konfigurasi per instance dengan kebijakan stateful.

Komponen

Anda mengonfigurasi instance terkelola MIG stateful melalui beberapa komponen:

  • Template instance berisi konfigurasi umum untuk VM di MIG, termasuk jenis mesin, boot disk image, spesifikasi opsional untuk disk tambahan, dan skrip startup opsional.
  • Image kustom opsional berisi aplikasi Anda dan berfungsi sebagai boot disk image umum.
  • Konfigurasi per instance berisi item stateful khusus instance. Misalnya, Anda dapat menginstal disk yang sudah ada ke instance tertentu dalam grup. Disk ini mungkin dilepas dari instance mandiri yang ada, dipulihkan dari snapshot, atau disk regional. Nama perangkat disk tidak perlu ditentukan di template instance Anda.
  • Kebijakan stateful opsional berisi item stateful umum. Misalnya, kebijakan ini menentukan semua disk dengan nama perangkat tertentu (sebagaimana ditentukan dalam template instance) sebagai stateful untuk semua instance dalam grup.

Komponen mana yang perlu Anda gunakan?

Komponen yang perlu Anda gunakan bergantung pada penyiapan yang ada. Tabel berikut memberikan ringkasan tingkat tinggi mengenai beberapa kemungkinan konfigurasi untuk aplikasi yang berjalan pada satu atau beberapa instance. Nanti dalam tutorial ini, Anda akan meninjau penyiapan yang ada untuk menentukan konfigurasi mana yang perlu digunakan.

Apakah Anda memiliki konfigurasi atau data stateful di boot disk yang harus dikelola? Bagaimana proses pengajuan permohonan Anda dimulai?
Aplikasi dikonfigurasi pada boot disk yang ada Aplikasi dikonfigurasi dengan skrip startup
Tidak: boot disk bersifat stateless
  1. Menggunakan template instance dengan gambar kustom
  2. Tambahkan konfigurasi per instance (atau kebijakan stateful) untuk disk data stateful
  1. Menggunakan template instance dengan skrip startup
  2. Tambahkan konfigurasi per instance (atau kebijakan stateful) untuk disk data stateful
Ya: setidaknya satu boot disk berstatus stateful
  1. Menggunakan template instance dengan gambar kustom
  2. Tambahkan konfigurasi per instance (atau kebijakan stateful) untuk disk data dan booting stateful
  1. Menggunakan template instance dengan skrip startup
  2. Tambahkan konfigurasi per instance (atau kebijakan stateful) untuk disk data dan booting stateful

Meninjau penyiapan yang ada

Tinjau instance mandiri yang ada untuk memeriksa jenis mesin, disk, dan metadata setiap instance.

Gunakan perintah instances describe untuk setiap instance.

gcloud compute instances describe INSTANCE_NAME

Jawab pertanyaan berikut untuk mempersiapkan langkah selanjutnya dalam panduan ini.

Pertanyaan Implikasi
Properti VM
Jenis mesin apa yang ingin Anda gunakan untuk grup Anda? Tentukan jenis mesin ini di template instance MIG Anda.
Bagaimana aplikasi Anda dimulai: apakah aplikasi telah dikonfigurasi sebelumnya pada boot disk atau apakah aplikasi diinstal, dikonfigurasi, dan diluncurkan oleh skrip startup? Jika aplikasi Anda telah dikonfigurasi sebelumnya pada boot disk, buat image kustom lalu tentukan image tersebut di template instance MIG Anda.

Jika aplikasi Anda diluncurkan oleh skrip startup, tentukan skrip startup tersebut di template instance MIG Anda.

Jika aplikasi Anda memerlukan boot disk image kustom dan skrip startup, tentukan keduanya di template instance.
Ingin mempertahankan nama instance yang ada? Anda harus menghapus instance mandiri yang sudah ada untuk mengosongkan nama instance.

Jika boot disk Anda tetap stateless dan jika Anda ingin menggunakan update berkelanjutan otomatis di MIG, tinjau dokumentasi untuk Mempertahankan nama instance ini.
Item penting
Untuk setiap instance, apakah ada metadata khusus instance yang perlu Anda pertahankan? Menentukan metadata khusus instance menggunakan konfigurasi per instance.
Apakah boot disk Anda stateful? Dengan kata lain, apakah ada data yang tersimpan di boot disk yang harus Anda pertahankan statusnya? Jika perlu mempertahankan status boot disk, Anda tidak dapat mengupdate sistem operasi atau software dengan meluncurkan update boot disk image.
Apakah semua instance memiliki jenis disk yang sama? Misalnya, apakah mereka semua memiliki satu disk data? Atau apakah mereka memiliki dan memerlukan konfigurasi disk yang unik? Jika semua instance memiliki konfigurasi disk yang sama, tentukan nama perangkat yang umum tersebut dalam template instance Anda, misalnya `data-disk`. Hal ini memungkinkan Anda menggunakan kebijakan stateful untuk mendeklarasikan disk tersebut sebagai stateful di seluruh MIG Anda, dengan overhead yang lebih sedikit daripada konfigurasi per instance.
Jika Anda ingin mengembangkan grup, apakah ukuran disk saat ini sudah cukup? Tentukan ukuran disk yang Anda perlukan di template instance. Instance baru akan mendapatkan disk yang Anda tentukan, asalkan disk tersebut tidak ditetapkan ulang dalam kebijakan stateful atau konfigurasi per instance.

Panduan ini dimulai dengan membuat konfigurasi per instance untuk disk stateful yang ada. Namun, Anda dapat mengonversi konfigurasi tersebut menjadi kebijakan stateful nantinya asalkan disk memiliki nama perangkat umum yang Anda deklarasikan dalam template instance grup.

Contoh penyiapan

Panduan ini menggunakan contoh dasar berikut untuk mengilustrasikan langkah-langkah migrasi. Misalkan Anda memiliki aplikasi stateful yang berjalan di tiga VM Compute Engine mandiri. Asumsikan spesifikasi VM berikut:

  • Setiap VM memiliki jenis mesin yang sama.
  • Setiap VM ada di project dan zona yang sama.
  • Setiap boot disk VM memiliki aplikasi yang sama, yang dikonfigurasi pada boot disk agar dimulai saat VM dimulai.
  • Boot disk pada setiap VM tidak berisi data atau konfigurasi lain yang harus Anda pertahankan.
  • Setiap VM memiliki persistent disk sekunder dengan data stateful, yaitu data yang statusnya saat ini harus Anda pertahankan.

Edit nilai di bawah untuk digunakan selama tutorial ini.

- Machine type: n2-standard-2
- Project: my-project
- Zone: europe-west1-c
- Name of one of the VMs to migrate: my-instance-1

Membuat image kustom

Jika aplikasi Anda atau salah satu persyaratannya sudah dikonfigurasi pada boot disk yang ada, buat image kustom yang dapat Anda gunakan kembali. Atau, jika aplikasi Anda diinstal, dikonfigurasi, dan diluncurkan hanya dengan menggunakan skrip startup, lewati langkah ini dan lanjutkan ke Membuat template instance.

Dalam contoh skenario yang telah dibahas sebelumnya, boot disk dari setiap VM mandiri yang ada berisi aplikasi yang dikonfigurasi. Jadi, Anda dapat mengikuti langkah-langkah untuk membuat image kustom berdasarkan salah satu VM tersebut.

  1. Hentikan salah satu instance.

    gcloud compute instances stop my-instance-1
  2. Tentukan sumber disk dengan menjelaskan instance-nya.

    gcloud compute instances describe my-instance-1

    Outputnya mirip dengan hal berikut ini:

    ...
    disks:
    – autoDelete: true
      boot: true
      ...
      source: https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-instance-1
      ...
    

    Cari kolom source di output, lalu catat URL lengkap boot disk di kolom tersebut.

  3. Gunakan perintah images create untuk menyiapkan image kustom yang menggunakan sumber yang sama.

    gcloud compute images create my-boot-image \
        --source-disk=https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-instance-1
    

    Outputnya mirip dengan hal berikut ini:

    Created [https://www.googleapis.com/compute/v1/projects/my-project/global/images/my-boot-image].
    

Membuat template instance

Template instance adalah resource Compute Engine yang tidak dapat diubah dan dapat menyimpan konfigurasi VM. Setelah dibuat, Anda tidak dapat memperbaruinya. Jika nanti Anda perlu mengubahnya, buat template baru, lalu luncurkan template baru ke grup.

Ikuti langkah-langkah dalam Membuat template instance baru menggunakan setelan berikut.

  • Machine type: Tentukan jenis mesin yang berfungsi untuk semua instance yang ada.

  • Skrip startup: Jika Anda meluncurkan aplikasi menggunakan skrip startup, tentukan skrip tersebut.

  • Boot disk:

    • Image: Tentukan boot disk image yang umum untuk semua VM di MIG. Misalnya, jika Anda membuat image kustom berdasarkan boot disk VM yang ada, tentukanlah. Jika perlu menggunakan boot disk yang ada untuk VM tertentu, Anda dapat secara eksplisit menentukan boot disk untuk VM tersebut dengan konfigurasi per instance. Saat mengonversi VM tersebut menjadi instance terkelola, seperti yang akan dijelaskan nanti dalam dokumen ini.
    • Device name: Menentukan nama perangkat yang mencerminkan tujuan disk–misalnya, boot-disk. Hal ini memungkinkan Anda mengonfigurasi satu kebijakan stateful untuk mempertahankan semua disk di MIG dengan nama perangkat tersebut.
    • Size: Tentukan ukuran boot disk yang memadai untuk instance yang ada dan instance mendatang, jika Anda ingin menambahkan instance.
  • Disk tambahan: Secara default, saat Anda menambahkan instance ke MIG, MIG akan membuat disk berdasarkan template tersebut. Perhatikan bahwa template instance tidak mendukung konfigurasi disk regional, tetapi Anda dapat mengonfigurasi disk regional nanti menggunakan konfigurasi per instance.

    • Device name: Untuk setiap disk, tentukan nama perangkat yang mencerminkan tujuan disk–misalnya, data-disk.
    • Size: Tentukan ukuran disk yang memadai untuk instance mendatang, jika Anda menambahkan ukuran tertentu.

Untuk tujuan migrasi ini, spesifikasi yang paling penting untuk setiap disk tambahan adalah nama perangkat, yang akan Anda gunakan sebagai kunci untuk menentukan disk mana yang stateful. Memiliki nama perangkat umum untuk disk yang serupa memungkinkan Anda menggunakan kebijakan stateful umum untuk mempertahankan semua disk tersebut di seluruh MIG. Spesifikasi ukuran atau image untuk disk tambahan dalam template instance hanya akan digunakan untuk membuat disk baru bagi instance baru yang mungkin Anda buat selain instance yang sedang dimigrasikan. Saat memigrasikan instance yang ada, Anda perlu mempertahankan disk data yang ada dengan melepaskannya dari instance asli, lalu memasang kembali disk yang sama tersebut ke instance terkelola yang baru, seperti yang dijelaskan nanti dalam dokumen ini.

Perintah instance-templates create berikut membuat template untuk contoh skenario. Perintah tersebut menyertakan flag --image yang mengarah ke boot image kustom yang dibuat sebelumnya, serta disk data tambahan.

gcloud compute instance-templates create my-instance-template \
 --machine-type=n2-standard-2 \
 --image=https://www.googleapis.com/compute/v1/projects/my-project/global/images/my-boot-image \
 --boot-disk-device-name=boot-disk \
 --create-disk=mode=rw,size=100,type=pd-standard,device-name=data-disk

Outputnya mirip dengan hal berikut ini:

Created [https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/my-instance-template].
NAME                     MACHINE_TYPE   PREEMPTIBLE  CREATION_TIMESTAMP
my-instance-template  n2-standard-2               2021-04-27T11:02:07.552-07:00

Catat URL template, yang dapat Anda temukan di baris pertama output.

Membuat grup instance terkelola

Langkah berikutnya adalah membuat grup instance terkelola (MIG). Untuk membuat MIG zona tunggal, ikuti petunjuk untuk Membuat MIG dalam satu zona. Atau, jika Anda ingin melindungi dari kegagalan zona menggunakan MIG regional, ikuti petunjuk untuk Membuat MIG dengan VM di beberapa zona dalam satu region.

Saat Anda membuat MIG, sertakan spesifikasi berikut:

  • Tetapkan ukuran grup ke 0. Anda akan menambahkan instance nanti.
  • Jika Anda membuat MIG regional, tetapkan jenis redistribusi instance ke NONE sehingga MIG tidak secara otomatis mendistribusikan ulang instance di seluruh zona.

Perintah instance-groups managed create berikut membuat MIG zona untuk contoh penyiapan yang dijelaskan sebelumnya. Untuk membuat MIG regional, ganti --zone=ZONE dengan --region=REGION.

gcloud compute instance-groups managed create my-mig \
    --size=0 \
    --template=https://www.googleapis.com/compute/v1/projects/my-project/global/instanceTemplates/my-instance-template \
    --zone=europe-west1-c

Outputnya mirip dengan hal berikut ini:

Created [https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/instanceGroupManagers/my-mig].
NAME    LOCATION        SCOPE  BASE_INSTANCE_NAME  SIZE  TARGET_SIZE  INSTANCE_TEMPLATE         AUTOSCALED
my-mig  europe-west1-c  zone   my-mig              0     0            my-instance-template      no

Setelah membuat resource tersebut, Anda dapat menggunakannya untuk berinteraksi dengan MIG, misalnya untuk menetapkan kebijakan pada grup, dan untuk menambahkan atau menghapus instance dari grup.

Mengonversi VM yang ada menjadi instance terkelola

Untuk setiap VM yang tidak dikelola yang ada, gunakan prosedur berikut untuk mengubahnya menjadi instance terkelola di MIG Anda. Prosedur ini akan memigrasikan disk yang ada ke instance terkelola yang baru. Atau, Anda dapat membuat snapshot disk yang ada, lalu membuat disk berdasarkan snapshot tersebut untuk digunakan oleh instance terkelola.

  1. Menjelaskan VM yang ada.

    gcloud compute instances describe my-instance-1
    

    Catat item yang ingin Anda pertahankan dari VM yang ada, yang dapat mencakup hal berikut:

    • Nama instance
    • Boot disk
    • Disk sekunder
    • Metadata instance
  2. Menghentikan VM yang ada.

    gcloud compute instances stop my-instance-1
    
  3. Lepaskan semua disk stateful, termasuk boot disk jika Anda berencana untuk menggunakannya kembali.

    gcloud compute instances detach-disk my-instance-1 --disk=my-data-disk-1
    
  4. Hapus VM yang ada sehingga Anda dapat membuat VM lain dengan nama yang sama. Jika tidak ingin mempertahankan nama instance, Anda dapat menghapus VM yang ada nanti untuk berhenti membayar untuknya.

    gcloud compute instances delete my-instance-1
    
  5. Ikuti langkah-langkah untuk membuat instance terkelola.

    • Anda dapat menggunakan kembali nama instance asli jika telah menghapus instance asli tersebut. Atau berikan nama baru.
    • Tentukan metadata atau disk stateful yang diperlukan oleh instance terkelola ini. MIG menyimpan item khusus instance ini dalam konfigurasi per instance:

      • Tentukan satu atau beberapa disk, seperti disk yang dilepaskan dari instance VM asli.

      • Tentukan metadata dari instance VM asli.

    Misalnya, perintah berikut membuat instance terkelola dengan nama yang sama dengan VM asli dan menggunakan kembali disk data asli. Boot disk untuk VM dibuat dari image yang ditentukan dalam template instance grup.

    gcloud compute instance-groups managed create-instance my-mig \
        --instance=my-instance-1    \
        --stateful-metadata=role=primary      \
        --stateful-disk=device-name=data-disk,source=https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-data-disk-1 \
        --zone=europe-west1-c
    

    Jika Anda perlu menggunakan kembali boot disk dari VM lama, gunakan perintah yang sama dengan flag --stateful-disk tambahan. Gunakan nama perangkat yang sama untuk boot disk seperti yang Anda tentukan dalam template instance–misalnya:

    gcloud compute instance-groups managed create-instance my-mig \
        --instance=my-instance-1 \
        --stateful-metadata=role=secondary    \
        --stateful-disk=device-name=data-disk,source=https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-data-disk-1 \
        --stateful-disk=device-name=boot-disk,source=https://www.googleapis.com/compute/v1/projects/my-project/zones/europe-west1-c/disks/my-instance-1-boot-disk \
        --zone=europe-west1-c
    
  6. Ulangi langkah-langkah tersebut untuk setiap VM tidak terkelola yang ada.

Jika ingin melihat konfigurasi per instance yang dihasilkan, jalankan perintah instance-configs list.

gcloud compute instance-groups managed instance-configs list my-mig \
    --zone=europe-west1-c

Untuk melihat status yang dipertahankan dari instance, jalankan perintah describe-instance.

gcloud compute instance-groups managed describe-instance my-mig \
  --instance=my-instance-1 \
  --zone=europe-west1-c

Untuk mengetahui informasi selengkapnya, lihat Menerapkan, melihat, dan menghapus konfigurasi stateful di MIG.

Mengonfigurasi autohealing

MIG otomatis memulihkan instance terkelola yang berhenti berjalan. Untuk lebih meningkatkan ketersediaan aplikasi dan memverifikasi bahwa aplikasi Anda merespons, konfigurasikan health check berbasis aplikasi. Lihat contoh penyiapan health check untuk mengetahui contoh perintah.

Menggunakan kebijakan stateful, alih-alih konfigurasi per instance

Kebijakan stateful memungkinkan Anda mendeklarasikan disk yang memiliki nama perangkat umum sebagai stateful di seluruh MIG. Satu kebijakan stateful tidak memerlukan banyak upaya untuk dikelola dibandingkan dengan beberapa konfigurasi per instance. Misalnya, dengan kebijakan stateful, Anda dapat menetapkan semua disk dengan nama perangkat data-disk agar menjadi stateful untuk semua instance di MIG.

Jika MIG Anda memenuhi kondisi berikut, Anda dapat mengganti konfigurasi per instance dengan kebijakan stateful:

  • Semua VM memiliki nama perangkat yang sama (misalnya, data-disk) untuk disk stateful yang serupa. Nama perangkat ini ditentukan dalam template instance MIG.
  • Tidak ada VM yang memiliki metadata stateful unik yang ditentukan dalam konfigurasi per instance. Jika memiliki metadata stateful yang ditentukan dalam konfigurasi per-instance, Anda dapat menghapus disk dari konfigurasi per-instance, tetapi Anda harus mempertahankan konfigurasi per-instance untuk mempertahankan instance tersebut- metadata stateful tertentu.

Gunakan langkah-langkah berikut untuk mengganti beberapa konfigurasi per instance dengan satu kebijakan stateful.

  1. Konfigurasikan disk stateful dalam kebijakan stateful. Ikuti petunjuk di Menetapkan dan memperbarui konfigurasi stateful untuk disk di MIG yang ada.

    Untuk contoh skenario, gunakan perintah berikut. Cara ini mendeklarasikan bahwa semua disk di MIG yang memiliki nama perangkat tertentu akan dipertahankan.

    gcloud compute instance-groups managed update my-mig \
      --stateful-disk=device-name=data-disk,auto-delete=never
    
  2. Jika Anda perlu mempertahankan metadata khusus instance, update konfigurasi per instance. Jika tidak, hapus konfigurasi per instance. Segera terapkan perubahan konfigurasi dengan flag --update-instance. Misalnya, untuk menghapus konfigurasi per instance, gunakan perintah berikut:

    gcloud compute instance-groups managed instance-configs delete my-mig \
      --instances=my-instance-1 \
      --update-instance
    
  3. (Opsional.) Pastikan bahwa item stateful kini disimpan dalam status yang dipertahankan dari kebijakan (preservedStateFromPolicy) untuk setiap instance terkelola. Untuk mengetahui informasi selengkapnya, lihat Melihat status instance terkelola yang dipertahankan.

Menambahkan lebih banyak VM

Jika perlu menambahkan VM untuk mengembangkan aplikasi, Anda dapat menambahkan VM ekstra dengan meningkatkan ukuran MIG Anda atau dengan membuat secara manual lebih banyak instance. MIG membuat semua VM-nya, termasuk persistent disk-nya, berdasarkan template instance grup. Jika grup memiliki kebijakan stateful, setiap item yang Anda cantumkan dalam kebijakan stateful akan dipertahankan setelah operasi mulai ulang, pembuatan ulang, autohealing, dan update untuk semua instance baru dan yang sudah ada dalam grup. Jika Anda hanya perlu mengonfigurasi disk atau metadata stateful hanya untuk VM tertentu dalam grup, gunakan konfigurasi per instance.

Langkah selanjutnya