Menyiapkan health check dan autohealing berbasis aplikasi


Dokumen ini menjelaskan cara menyiapkan health check berbasis aplikasi untuk melakukan autohealing VM di grup instance terkelola (MIG). Panduan ini juga menjelaskan cara melakukan hal berikut: menggunakan health check tanpa autohealing, menghapus health check, melihat kebijakan autohealing, dan memeriksa status respons setiap VM.

Anda dapat mengonfigurasi health check berbasis aplikasi untuk memverifikasi bahwa aplikasi Anda di VM merespons seperti yang diharapkan. Jika health check yang Anda konfigurasikan mendeteksi bahwa aplikasi Anda di VM tidak merespons, MIG akan menandai VM tersebut sebagai tidak responsif dan memperbaikinya. Memperbaiki VM berdasarkan health check berbasis aplikasi disebut autohealing.

Anda juga dapat menonaktifkan perbaikan di MIG sehingga dapat menggunakan health check tanpa memicu autohealing.

Untuk mengetahui lebih lanjut perbaikan di MIG, lihat Tentang memperbaiki VM untuk ketersediaan tinggi.

Sebelum memulai

  • Jika Anda belum melakukannya, siapkan autentikasi. Autentikasi adalah proses verifikasi identitas Anda untuk mengakses layanan dan API Google Cloud. Untuk menjalankan kode atau contoh dari lingkungan pengembangan lokal, Anda dapat mengautentikasi ke Compute Engine dengan memilih salah satu opsi berikut:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

      Untuk menggunakan contoh Terraform di halaman ini dalam lingkungan pengembangan lokal, instal dan lakukan inisialisasi gcloud CLI, lalu siapkan Kredensial Default Aplikasi dengan kredensial pengguna Anda.

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      Untuk informasi selengkapnya, lihat Set up authentication for a local development environment.

      REST

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      Untuk informasi selengkapnya, lihat Melakukan autentikasi untuk menggunakan REST dalam dokumentasi autentikasi Google Cloud.

Harga

Saat Anda menyiapkan health check berbasis aplikasi, setiap kali status respons VM berubah, Compute Engine akan menulis entri log di Cloud Logging secara default. Cloud Logging memberikan alokasi gratis per bulan. Setelah jumlahnya terlampaui, logging akan ditagih berdasarkan volume data. Untuk menghindari biaya, Anda dapat menonaktifkan log perubahan status respons.

Menyiapkan health check dan autohealing berbasis aplikasi

Untuk menyiapkan health check dan autohealing berbasis aplikasi di MIG, Anda harus melakukan hal berikut:

  1. Buat health check, jika Anda belum melakukannya.
  2. Konfigurasi kebijakan autohealing di MIG untuk menerapkan health check.

Membuat health check

Anda dapat menerapkan satu health check hingga maksimum 50 MIG. Jika Anda memiliki lebih dari 50 grup, buat beberapa health check.

Contoh berikut menunjukkan cara membuat health check untuk autohealing. Anda dapat membuat health check regional atau global untuk autohealing di MIG. Dalam contoh ini, Anda membuat health check global yang mencari respons server web pada port 80. Untuk mengaktifkan pemeriksaan health check agar dapat menjangkau server web, konfigurasikan aturan firewall.

Konsol

  1. Buat health check untuk autohealing yang lebih konservatif daripada health check load balancing.

    Misalnya, buat health check yang mencari respons pada port 80 dan yang dapat menoleransi kegagalan sebelum menandai VM sebagai UNHEALTHY dan menyebabkannya dibuat ulang. Dalam contoh ini, VM ditandai sebagai responsif jika health check berhasil ditampilkan satu kali. VM ditandai sebagai tidak responsif jika health check gagal ditampilkan 3 kali berturut-turut.

    1. Di konsol Google Cloud, buka halaman Create a health check.

      Buka Create a health check

    2. Beri nama health check, seperti example-check.

    3. Pilih Scope. Anda dapat memilih Regional atau Global. Untuk contoh ini, pilih Global.

    4. Untuk Protocol, pastikan HTTP dipilih.

    5. Untuk Port, masukkan 80.

    6. Di bagian Health criteria, berikan nilai berikut:

      1. Untuk Check interval, masukkan 5.
      2. Untuk Timeout, masukkan 5.
      3. Tetapkan Batas responsif untuk menentukan berapa banyak health check berhasil berurutan yang harus ditampilkan sebelum VM yang tidak responsif ditandai sebagai responsif. Masukkan 1 untuk contoh ini.
      4. Tetapkan Nilai minimum tidak responsif untuk menentukan berapa banyak health check berturut-turut yang tidak berhasil yang harus ditampilkan sebelum VM responsif ditandai sebagai tidak responsif. Masukkan 3 untuk contoh ini.
    7. Klik Create untuk membuat health check.

  2. Buat aturan firewall untuk mengizinkan pemeriksaan health check terhubung ke aplikasi Anda.

    Pemeriksaan health check berasal dari alamat dalam rentang 130.211.0.0/22 dan 35.191.0.0/16, jadi pastikan aturan firewall jaringan Anda mengizinkan health check untuk terhubung. Untuk contoh ini, MIG menggunakan jaringan default dan VM-nya memproses port 80. Jika port 80 belum terbuka di jaringan default, buat aturan firewall.

    1. Pada konsol Google Cloud, buka halaman Kebijakan Firewall.

      Buka Firewall policies

    2. Klik Create firewall rule.

    3. Masukkan Name untuk aturan firewall. Contoh, allow-health-check.

    4. Untuk Network, pilih jaringan default.

    5. Untuk Targets, pilih All instances in the network.

    6. Untuk Source filter, pilih IPv4 ranges.

    7. Untuk Source IPv4 ranges, masukkan 130.211.0.0/22 dan 35.191.0.0/16.

    8. Di Protocols and ports, pilih Specified protocols and ports, lalu lakukan hal berikut:

      1. Pilih TCP.
      2. Di kolom Ports, masukkan 80.
    9. Klik Create.

gcloud

  1. Buat health check untuk autohealing yang lebih konservatif daripada health check load balancing.

    Misalnya, buat health check yang mencari respons pada port 80 dan yang dapat menoleransi kegagalan sebelum menandai VM sebagai UNHEALTHY dan menyebabkannya dibuat ulang. Dalam contoh ini, VM ditandai sebagai responsif jika berhasil dikembalikan satu kali. VM ditandai sebagai tidak responsif jika tidak berhasil ditampilkan sebanyak 3 kali berturut-turut. Perintah berikut akan membuat health check global.

    gcloud compute health-checks create http example-check --port 80 \
       --check-interval 30s \
       --healthy-threshold 1 \
       --timeout 10s \
       --unhealthy-threshold 3 \
       --global
    
  2. Buat aturan firewall untuk mengizinkan pemeriksaan health check terhubung ke aplikasi Anda.

    Pemeriksaan health check berasal dari alamat dalam rentang 130.211.0.0/22 dan 35.191.0.0/16, jadi pastikan aturan firewall Anda mengizinkan health check untuk terhubung. Untuk contoh ini, MIG menggunakan jaringan default, dan VM-nya memproses port 80. Jika port 80 belum terbuka di jaringan default, buat aturan firewall.

    gcloud compute firewall-rules create allow-health-check \
        --allow tcp:80 \
        --source-ranges 130.211.0.0/22,35.191.0.0/16 \
        --network default
    

Terraform

  1. Buat health check menggunakan resource google_compute_http_health_check.

    Misalnya, buat health check yang mencari respons pada port 80 dan yang dapat menoleransi kegagalan sebelum menandai VM sebagai UNHEALTHY dan menyebabkan VM dibuat ulang. Dalam contoh ini, VM ditandai sebagai responsif jika berhasil dikembalikan satu kali. VM ditandai sebagai tidak responsif jika tidak berhasil ditampilkan sebanyak 3 kali berturut-turut. Permintaan berikut akan membuat health check global.

    resource "google_compute_http_health_check" "default" {
      name                = "example-check"
      timeout_sec         = 10
      check_interval_sec  = 30
      healthy_threshold   = 1
      unhealthy_threshold = 3
      port                = 80
    }
  2. Buat firewall menggunakan resource google_compute_firewall.

    Pemeriksaan health check berasal dari alamat dalam rentang 130.211.0.0/22 dan 35.191.0.0/16, jadi pastikan aturan firewall Anda mengizinkan health check untuk terhubung. Untuk contoh ini, MIG menggunakan jaringan default dan VM-nya memproses port 80. Jika port 80 belum terbuka di jaringan default, buat aturan firewall.

    resource "google_compute_firewall" "default" {
      name          = "allow-health-check"
      network       = "default"
      source_ranges = ["130.211.0.0/22", "35.191.0.0/16"]
      allow {
        protocol = "tcp"
        ports    = [80]
      }
    }

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

REST

  1. Buat health check untuk autohealing yang lebih konservatif daripada health check load balancing.

    Misalnya, buat health check yang mencari respons pada port 80 dan yang dapat menoleransi kegagalan sebelum menandai VM sebagai UNHEALTHY dan menyebabkan VM dibuat ulang. Dalam contoh ini, VM ditandai sebagai responsif jika berhasil dikembalikan satu kali. VM ditandai sebagai tidak responsif jika tidak berhasil ditampilkan sebanyak 3 kali berturut-turut. Permintaan berikut akan membuat health check global.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/healthChecks
    
    {
     "name": "example-check",
     "type": "http",
     "port": 80,
     "checkIntervalSec": 30,
     "healthyThreshold": 1,
     "timeoutSec": 10,
     "unhealthyThreshold": 3
    }
    
  2. Buat aturan firewall untuk mengizinkan pemeriksaan health check terhubung ke aplikasi Anda.

    Pemeriksaan health check berasal dari alamat dalam rentang 130.211.0.0/22 dan 35.191.0.0/16, jadi pastikan aturan firewall Anda mengizinkan health check untuk terhubung. Untuk contoh ini, MIG menggunakan jaringan default dan VM-nya memproses port 80. Jika port 80 belum terbuka di jaringan default, buat aturan firewall.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
    
    {
     "name": "allow-health-check",
     "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default",
     "sourceRanges": [
      "130.211.0.0/22",
      "35.191.0.0/16"
     ],
     "allowed": [
      {
       "ports": [
        "80"
       ],
       "IPProtocol": "tcp"
      }
     ]
    }
    

    Ganti PROJECT_ID dengan project ID Anda.

Mengonfigurasi kebijakan autohealing di MIG

Di MIG, Anda hanya dapat menyiapkan satu kebijakan autohealing untuk menerapkan health check.

Anda dapat menggunakan health check regional atau global untuk autohealing di MIG. Health check regional mengurangi dependensi lintas region dan membantu mencapai residensi data. Health check global praktis jika Anda ingin menggunakan health check yang sama untuk MIG di beberapa region.

Sebelum mengonfigurasi kebijakan autohealing:

  • Jika Anda belum memiliki health check, buat.
  • Jika ingin mencegah pemicuan palsu autohealing saat menyiapkan health check baru, Anda harus menonaktifkan perbaikan di MIG terlebih dahulu, lalu mengonfigurasi kebijakan autohealing.

Konsol

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

    Buka Instance groups

  2. Di kolom Name pada daftar, klik nama MIG tempat Anda ingin menerapkan health check.

  3. Klik Edit untuk mengubah MIG ini.

  4. Di bagian VM instance lifecycle, di bagian Autohealing, pilih Health check global atau regional.

  5. Ubah atau pertahankan setelan Penundaan awal.

    Penundaan awal adalah jumlah detik yang diperlukan VM baru untuk melakukan inisialisasi dan menjalankan skrip startup-nya. Selama periode penundaan awal VM, MIG mengabaikan health check yang gagal karena VM mungkin berada dalam proses startup. Tindakan ini mencegah MIG membuat ulang VM sebelum waktunya. Jika health check menerima respons yang sehat selama penundaan awal, ini menunjukkan bahwa proses startup telah selesai dan VM sudah siap. Timer penundaan awal dimulai saat kolom currentAction VM berubah menjadi VERIFYING. Nilai penundaan awal harus antara 0 dan 3600 detik. Di konsol, nilai defaultnya adalah 300 detik.

  6. Klik Simpan untuk menerapkan perubahan.

gcloud

Untuk mengonfigurasi kebijakan autohealing di MIG yang ada, gunakan perintah update.

Misalnya, gunakan perintah berikut untuk mengonfigurasi kebijakan autohealing di MIG zona yang ada:

gcloud compute instance-groups managed update MIG_NAME \
    --health-check HEALTH_CHECK_URL \
    --initial-delay INITIAL_DELAY \
    --zone ZONE

Untuk mengonfigurasi kebijakan autohealing saat membuat MIG, gunakan perintah create.

Misalnya, gunakan perintah berikut untuk mengonfigurasi kebijakan autohealing saat membuat MIG zona:

gcloud compute instance-groups managed create MIG_NAME \
    --size SIZE \
    --template INSTANCE_TEMPLATE_URL \
    --health-check HEALTH_CHECK_URL \
    --initial-delay INITIAL_DELAY \
    --zone ZONE

Ganti kode berikut:

  • MIG_NAME: Nama MIG tempat Anda ingin menyiapkan perbaikan otomatis.
  • SIZE: Jumlah VM dalam grup.
  • INSTANCE_TEMPLATE_URL: URL sebagian template instance yang ingin Anda gunakan untuk membuat VM dalam grup. Misalnya:
    • Template instance regional: projects/example-project/regions/us-central1/instanceTemplates/example-template.
    • Template instance global: projects/example-project/global/instanceTemplates/example-template.
  • HEALTH_CHECK_URL: URL sebagian dari health check yang ingin Anda siapkan untuk perbaikan otomatis. Jika ingin menggunakan health check regional, Anda harus memberikan URL parsial health check regional. Misalnya:
    • Health check regional: projects/example-project/regions/us-central1/healthChecks/example-health-check.
    • Health check global: projects/example-project/global/healthChecks/example-health-check.
  • INITIAL_DELAY: Jumlah detik yang diperlukan VM baru untuk melakukan inisialisasi dan menjalankan skrip startup-nya. Selama periode penundaan awal VM, MIG mengabaikan health check yang gagal karena VM mungkin berada dalam proses startup. Hal ini mencegah MIG membuat ulang VM lebih awal. Jika health check menerima respons yang responsif selama penundaan awal, ini menunjukkan bahwa proses startup telah selesai dan VM sudah siap. Timer penundaan awal dimulai saat kolom currentAction VM berubah menjadi VERIFYING. Nilai penundaan awal harus antara 0 dan 3600 detik. Nilai defaultnya adalah 0.
  • ZONE: Zona tempat MIG berada. Untuk MIG regional, gunakan flag --region.

Terraform

Untuk mengonfigurasi kebijakan autohealing di MIG, gunakan blok auto_healing_policies.

Contoh berikut mengonfigurasi kebijakan autohealing di MIG zona. Untuk mengetahui informasi selengkapnya tentang resource yang digunakan dalam contoh, lihat google_compute_instance_group_manager. Untuk MIG regional, gunakan resource google_compute_region_instance_group_manager.

resource "google_compute_instance_group_manager" "default" {
  name               = "igm-with-hc"
  base_instance_name = "test"
  target_size        = 3
  zone               = "us-central1-f"
  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  auto_healing_policies {
    health_check      = google_compute_http_health_check.default.id
    initial_delay_sec = 30
  }
}

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

REST

Untuk mengonfigurasi kebijakan autohealing di MIG yang ada, gunakan metode patch sebagai berikut:

Misalnya, lakukan panggilan berikut untuk menyiapkan autohealing di MIG zona yang sudah ada:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

{
  "autoHealingPolicies": [
  {
    "healthCheck": "HEALTH_CHECK_URL",
    "initialDelaySec": INITIAL_DELAY
  }
  ]
}

Untuk mengonfigurasi kebijakan autohealing saat membuat MIG, gunakan metode insert sebagai berikut:

Misalnya, lakukan panggilan berikut untuk mengonfigurasi kebijakan autohealing saat membuat MIG zona:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers

{
  "name": "MIG_NAME",
  "targetSize": SIZE,
  "instanceTemplate": "INSTANCE_TEMPLATE_URL"
  "autoHealingPolicies": [
    {
      "healthCheck": "HEALTH_CHECK_URL",
      "initialDelaySec": INITIAL_DELAY
    }
  ],
}

Ganti kode berikut:

  • PROJECT_ID: Project ID Anda.
  • MIG_NAME: Nama MIG tempat Anda ingin menyiapkan perbaikan otomatis.
  • SIZE: Jumlah VM dalam grup.
  • INSTANCE_TEMPLATE_URL: URL sebagian template instance yang ingin Anda gunakan untuk membuat VM dalam grup. Misalnya:
    • Template instance regional: projects/example-project/regions/us-central1/instanceTemplates/example-template.
    • Template instance global: projects/example-project/global/instanceTemplates/example-template.
  • HEALTH_CHECK_URL: URL sebagian dari health check yang ingin Anda siapkan untuk perbaikan otomatis. Misalnya:
    • Health check regional: projects/example-project/regions/us-central1/healthChecks/example-health-check.
    • Health check global: projects/example-project/global/healthChecks/example-health-check.
  • INITIAL_DELAY: Jumlah detik yang diperlukan VM baru untuk melakukan inisialisasi dan menjalankan skrip startup-nya. Selama periode penundaan awal VM, MIG mengabaikan health check yang gagal karena VM mungkin berada dalam proses startup. Hal ini mencegah MIG membuat ulang VM lebih awal. Jika health check menerima respons yang responsif selama penundaan awal, ini menunjukkan bahwa proses startup telah selesai dan VM sudah siap. Timer penundaan awal dimulai saat kolom currentAction VM berubah menjadi VERIFYING. Nilai penundaan awal harus antara 0 dan 3600 detik. Nilai defaultnya adalah 0.
  • ZONE: Zona tempat MIG berada. Untuk MIG regional, gunakan regions/REGION di URL.

Setelah penyiapan autohealing selesai, diperlukan waktu 10 menit sebelum autohealing mulai memantau VM dalam grup. Setelah pemantauan dimulai, Compute Engine akan mulai menandai VM sebagai responsif (atau akan membuatnya ulang) berdasarkan konfigurasi autohealing Anda. Misalnya, jika Anda mengonfigurasi penundaan awal selama 5 menit, interval health check selama 1 menit, dan batas yang responsif yaitu 1 check, linimasanya akan terlihat seperti berikut:

  • Penundaan 10 menit sebelum autohealing mulai memantau VM dalam grup
  • + 5 menit untuk penundaan awal yang dikonfigurasi
  • + 1 menit untuk interval pemeriksaan * ambang batas responsif (60 detik * 1)
  • = 16 menit sebelum VM ditandai sebagai responsif atau dibuat ulang

Jika Anda telah menonaktifkan perbaikan di MIG sebelum mengonfigurasi kebijakan autohealing, Anda dapat memantau status kondisi VM untuk mengonfirmasi bahwa health check berfungsi seperti yang diharapkan, lalu menetapkan MIG kembali untuk memperbaiki VM.

Menggunakan health check tanpa autohealing

Anda dapat menggunakan health check yang dikonfigurasi di MIG tanpa autohealing dengan menonaktifkan perbaikan di MIG. Hal ini berguna dalam skenario saat Anda ingin menggunakan health check hanya untuk memantau kesehatan aplikasi atau saat Anda ingin menerapkan logika perbaikan Anda sendiri berdasarkan health check.

Untuk menyetel MIG kembali ke memperbaiki VM yang tidak responsif, lihat Menetapkan MIG untuk memperbaiki VM yang gagal dan tidak responsif.

Menghapus health check

Anda dapat menghapus health check yang dikonfigurasi dalam kebijakan autohealing sebagai berikut:

Konsol

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

    Buka Instance groups

    1. Klik nama MIG tempat Anda ingin menghapus health check.
    2. Klik Edit untuk mengubah MIG ini.
    3. Di bagian VM instance lifecycle, di bagian Autohealing, pilih Tidak ada health check.
    4. Klik Save untuk menerapkan perubahan.

gcloud

Untuk menghapus konfigurasi health check dalam kebijakan autohealing, dalam perintah update, gunakan flag --clear-autohealing sebagai berikut:

gcloud compute instance-groups managed update MIG_NAME \
    --clear-autohealing

Ganti MIG_NAME dengan nama MIG.

REST

Untuk menghapus konfigurasi health check dalam kebijakan autohealing, tetapkan kebijakan autohealing ke nilai kosong.

Misalnya, untuk menghapus health check di MIG zona, buat permintaan berikut:

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

{
  "autoHealingPolicies": [
    {}
  ]
}

Ganti kode berikut:

  • PROJECT_ID: Project ID Anda.
  • MIG_NAME: Nama MIG tempat Anda ingin menyiapkan perbaikan otomatis.
  • ZONE: Zona tempat MIG berada. Untuk MIG regional, gunakan regions/REGION.

Melihat kebijakan autohealing di MIG

Anda dapat melihat kebijakan pemulihan otomatis MIG sebagai berikut:

Konsol

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

    Buka Instance groups

  2. Klik nama MIG yang kebijakan perbaikan otomatisnya ingin Anda lihat.

  3. Buka tab Detail.

  4. Di bagian VM instance lifecycle, kolom Autohealing menampilkan health check dan penundaan awal yang dikonfigurasi dalam kebijakan autohealing.

gcloud

Untuk melihat kebijakan perbaikan otomatis di MIG, gunakan perintah berikut:

gcloud compute instance-groups managed describe MIG_NAME \
    --format="(autoHealingPolicies)"

Ganti MIG_NAME dengan nama MIG.

Berikut adalah contoh output:

autoHealingPolicies:
  healthCheck: https://www.googleapis.com/compute/v1/projects/example-project/global/healthChecks/example-health-check
  initialDelaySec: 300

REST

Untuk melihat kebijakan autohealing di MIG, gunakan metode REST sebagai berikut:

Misalnya, buat permintaan berikut untuk melihat kebijakan autohealing di MIG zona:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME

Dalam isi respons, periksa objek autoHealingPolicies[].

Berikut adalah contoh respons:

{
  ...
  "autoHealingPolicies": [
    {
      "healthCheck": "https://www.googleapis.com/compute/v1/projects/example-project/global/healthChecks/example-health-check",
      "initialDelaySec": 300
    }
  ],
  ...
}

Ganti kode berikut:

  • PROJECT_ID: Project ID Anda.
  • MIG_NAME: Nama MIG tempat Anda ingin menyiapkan perbaikan otomatis.
  • ZONE: Zona tempat MIG berada. Untuk MIG regional, gunakan regions/REGION.

Periksa status.

Setelah menyiapkan health check berbasis aplikasi di MIG, Anda dapat memverifikasi bahwa VM sedang berjalan dan aplikasinya merespons menggunakan cara berikut:

Memeriksa apakah VM responsif atau tidak

Jika telah mengonfigurasi health check berbasis aplikasi di MIG, Anda dapat meninjau status respons setiap instance terkelola.

Periksa status kondisi instance terkelola Anda untuk:

  • Identifikasi VM yang tidak responsif, yang tidak diperbaiki. VM mungkin tidak segera diperbaiki meskipun telah didiagnosis sebagai tidak sehat dalam situasi berikut:
    • VM masih booting, dan penundaan awal belum berlalu.
    • Sebagian besar instance yang tidak responsif sedang diperbaiki. MIG menunda autohealing lebih lanjut untuk memastikan grup terus menjalankan subset instance.
  • Mendeteksi error konfigurasi health check. Misalnya, Anda dapat mendeteksi aturan firewall yang salah dikonfigurasi atau endpoint health check aplikasi yang tidak valid jika instance melaporkan status kondisi TIMEOUT.
  • Tentukan nilai penundaan awal yang akan dikonfigurasi dengan mengukur jumlah waktu antara saat VM bertransisi ke status RUNNING dan saat VM bertransisi ke kondisi HEALTHY status. Anda dapat mengukur kesenjangan ini dengan memilih metode list-instances atau dengan mengamati waktu antara operasi instances.insert dan operasi pertama sinyal sehat diterima.

Gunakan konsol, alat command line gcloud, atau REST untuk melihat status kesehatan.

Konsol

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

    Buka Grup instance.

  2. Di kolom Name pada daftar, klik nama MIG yang ingin Anda periksa. Halaman akan terbuka dengan properti grup instance dan daftar VM yang disertakan dalam grup.

  3. Jika VM tidak responsif, Anda dapat melihat status responsnya di kolom Health check status.

gcloud

Gunakan sub-perintah list-instances.

gcloud compute instance-groups managed list-instances instance-group
NAME              ZONE                  STATUS   HEALTH_STATE  ACTION  INSTANCE_TEMPLATE                            VERSION_NAME  LAST_ERROR
igm-with-hc-fvz6  europe-west1          RUNNING  HEALTHY       NONE    my-template
igm-with-hc-gtz3  europe-west1          RUNNING  HEALTHY       NONE    my-template

Kolom HEALTH_STATE menampilkan status kondisi setiap VM.

REST

Untuk MIG regional, buat permintaan POST ke metode listManagedInstances:

POST https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group/listManagedInstances

Untuk MIG zona, gunakan metode listManagedInstances MIG zona:

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group/listManagedInstances

Permintaan tersebut menampilkan respons yang mirip dengan berikut ini, yang menyertakan kolom instanceHealth untuk setiap instance terkelola.

{
 "managedInstances": [
  {
   "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/example-group-5485",
   "instanceStatus": "RUNNING",
   "currentAction": "NONE",
   "lastAttempt": {
   },
   "id": "6159431761228150698",
   "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/project-id/global/instanceTemplates/example-template",
   "version": {
    "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/project-id/global/instanceTemplates/example-template"
   },
   "instanceHealth": [
    {
     "healthCheck": "https://www.googleapis.com/compute/v1/projects/project-id/global/healthChecks/http-basic-check",
     "detailedHealthState": "HEALTHY"
    }
   ]
  },
  {
   "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/example-group-sfdp",
   "instanceStatus": "STOPPING",
   "currentAction": "DELETING",
   "lastAttempt": {
   },
   "id": "6622324799312181783",
   "instanceHealth": [
    {
     "healthCheck": "https://www.googleapis.com/compute/v1/projects/project-id/global/healthChecks/http-basic-check",
     "detailedHealthState": "TIMEOUT"
    }
   ]
  }
 ]
}

Status kesehatan

Status kondisi VM berikut tersedia:

  • HEALTHY: VM dapat dijangkau, koneksi ke endpoint health check aplikasi dapat dibuat, dan responsnya sesuai dengan persyaratan yang ditentukan oleh health check.
  • DRAINING: VM sedang dikosongkan. Koneksi yang ada ke VM memiliki waktu untuk diselesaikan, tetapi koneksi baru akan ditolak.
  • UNHEALTHY: VM dapat dijangkau, tetapi tidak sesuai dengan persyaratan yang ditentukan oleh health check.
  • TIMEOUT: VM tidak dapat dijangkau, koneksi ke endpoint health check aplikasi tidak dapat dibuat, atau server pada VM tidak merespons dalam waktu tunggu yang ditentukan. Misalnya, hal ini dapat disebabkan oleh aturan firewall yang salah dikonfigurasi atau aplikasi server yang kelebihan beban pada VM.
  • UNKNOWN: Sistem health check tidak mengetahui VM atau kondisinya tidak diketahui saat ini. Diperlukan waktu 10 menit untuk pemantauan dimulai pada VM baru di MIG.

VM baru menampilkan status UNHEALTHY hingga diverifikasi oleh sistem health check.

Perlu atau tidaknya VM diperbaiki bergantung pada status responsnya:

  • Jika VM memiliki status respons UNHEALTHY atau TIMEOUT, dan VM tersebut telah melewati periode inisialisasi, MIG akan segera mencoba memperbaikinya.
  • Jika VM memiliki status respons UNKNOWN, MIG tidak akan segera memperbaikinya. Hal ini untuk mencegah perbaikan VM yang tidak perlu yang sinyal health check-nya tidak tersedia untuk sementara.

Upaya pemulihan otomatis dapat ditunda jika:

  • VM akan tetap tidak responsif setelah beberapa kali perbaikan berturut-turut.
  • Sebagian besar VM yang tidak responsif ada dalam grup secara keseluruhan.

Kami ingin mempelajari kasus penggunaan, tantangan, atau masukan Anda tentang nilai status kondisi VM. Anda dapat menyampaikan masukan kepada tim kami di mig-discuss@google.com.

Memeriksa tindakan saat ini pada VM

Saat MIG sedang dalam proses pembuatan instance VM, MIG menetapkan kolom currentAction hanya baca instance tersebut ke CREATING. Jika kebijakan autohealing dilampirkan ke grup, setelah VM dibuat dan dijalankan, MIG akan menetapkan tindakan instance saat ini ke VERIFYING dan health checker mulai memeriksa aplikasi VM. Jika aplikasi lulus health check awal ini dalam waktu yang diperlukan untuk memulai aplikasi, maka VM akan diverifikasi dan MIG mengubah kolom currentAction VM menjadi NONE.

Untuk memeriksa tindakan saat ini pada VM, lihat Melihat tindakan saat ini pada VM.

Memeriksa apakah MIG stabil

Di tingkat grup, Compute Engine mengisi kolom hanya baca bernama status yang berisi flag isStable.

Jika semua VM dalam grup berjalan dan responsif (yaitu, kolom currentAction untuk setiap instance terkelola ditetapkan ke NONE), MIG akan menetapkan kolom status.isStable ke true. Perlu diingat bahwa stabilitas MIG bergantung pada konfigurasi grup di luar kebijakan autohealing; Misalnya, jika grup Anda diskalakan otomatis, dan jika sedang diskalakan atau diskalakan, MIG akan menetapkan kolom status.isStable ke false karena operasi autoscaler.

Untuk memeriksa nilai kolom status.isStable MIG, lihat Memeriksa apakah MIG stabil.

Melihat histori operasi autohealing

Anda dapat menggunakan gcloud CLI atau REST untuk melihat peristiwa autohealing sebelumnya.

gcloud

Gunakan perintah gcloud compute operations list dengan filter untuk melihat hanya peristiwa perbaikan autohealing dalam project Anda.

gcloud compute operations list --filter='operationType~compute.instances.repair.*'

Untuk mengetahui informasi selengkapnya tentang operasi perbaikan tertentu, gunakan perintah describe. Contoh:

gcloud compute operations describe repair-1539070348818-577c6bd6cf650-9752b3f3-1d6945e5 --zone us-east1-b

REST

Untuk MIG regional, kirim permintaan GET ke resource regionOperations dan sertakan filter untuk mencakupkan daftar output ke peristiwa compute.instances.repair.*.

GET https://compute.googleapis.com/compute/v1/projects/project-id/region/region/operations?filter=operationType+%3D+%22compute.instances.repair.*%22

Untuk MIG zona, gunakan resource zoneOperations.

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/operations?filter=operationType+%3D+%22compute.instances.repair.*%22

Untuk mengetahui informasi selengkapnya tentang operasi perbaikan tertentu, kirimkan permintaan GET untuk operasi spesifik tersebut. Contoh:

GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/operations/repair-1539070348818-577c6bd6cf650-9752b3f3-1d6945e5

Apa yang membuat health check autohealing yang baik

Health check yang digunakan untuk autohealing harus bersifat konservatif agar tidak menghapus dan membuat ulang instance secara preemptive. Jika health check autohealer terlalu agresif, autohealer mungkin salah menganggap instance yang sibuk sebagai instance yang gagal, sehingga akan memulai ulang instance tersebut secara tidak perlu sehingga mengurangi ketersediaan.

  • unhealthy-threshold. Harus lebih dari 1. Idealnya, tetapkan nilai ini ke 3 atau lebih. Tindakan ini akan melindungi dari kegagalan yang jarang terjadi seperti kehilangan paket jaringan.
  • healthy-threshold. Nilai 2 sudah cukup untuk sebagian besar aplikasi.
  • timeout. Tetapkan nilai waktu ini ke jumlah yang banyak (lima kali atau lebih daripada waktu respons yang diharapkan). Tindakan ini memberikan perlindungan terhadap penundaan yang tidak terduga seperti instance yang sibuk atau koneksi jaringan yang lambat.
  • check-interval. Nilai ini harus antara 1 detik dan dua kali waktu tunggu (tidak terlalu lama atau terlalu singkat). Jika nilai terlalu panjang, instance yang gagal tidak akan segera diambil. Jika nilai terlalu pendek, instance dan jaringan bisa sangat sibuk, mengingat tingginya jumlah pemeriksaan health check yang dikirim setiap detik.

Langkah berikutnya