Meningkatkan ketersediaan aplikasi stateful dengan Operator HA Stateful


Dengan Operator Ketersediaan Tinggi Stateful (HA), Anda dapat menggunakan integrasi bawaan GKE dengan Persistent Disk regional untuk mengotomatiskan dan mengontrol kecepatan failover Pod StatefulSet. Selama failover, operator akan otomatis menangani deteksi kegagalan node, melepaskan volume dari node yang gagal, dan memastikan lampiran volume yang aman ke node failover.

Alasan menggunakan Operator Stateful HA

Arsitektur stateful umum untuk mencapai ketersediaan tinggi menggunakan Persistent Disk regional sebagai lapisan penyimpanan. Disk ini menyediakan replikasi data sinkron antara dua zona dalam satu region. Selama kegagalan jaringan node atau zona, arsitektur ini memungkinkan workload Anda failover (dengan melampirkan secara paksa) ke penyimpanan pada node lain di zona berbeda.

Dengan Operator Stateful HA, Anda dapat melakukan pengoptimalan berikut:

  • Meningkatkan waktu pemulihan aplikasi replika tunggal: Jika hanya menggunakan satu replika, Anda dapat menggunakan Operator Stateful HA dan menukar penyimpanan zona untuk penyimpanan regional saat aplikasi Anda disediakan, guna meningkatkan daya tahan dan ketersediaan data jika terjadi kegagalan node.
  • Mengurangi biaya jaringan lintas zona: Mereplikasi data di beberapa zona dapat mahal untuk aplikasi dengan throughput tinggi. Anda dapat menggunakan Operator HA Stateful untuk menjalankan aplikasi di satu zona, sambil mempertahankan jalur failover ke zona alternatif yang sesuai dengan SLA aplikasi Anda.

Batasan

Dengan arsitektur Operator Stateful HA replika tunggal, GKE mempertahankan data Anda di dua zona melalui Persistent Disk regional, tetapi data hanya dapat diakses selama replika aplikasi Anda responsif. Selama failover, aplikasi Anda untuk sementara tidak akan tersedia saat replika menjadwalkan ulang ke node baru yang responsif. Jika aplikasi Anda memiliki tujuan waktu pemulihan (RTO) yang sangat rendah, sebaiknya gunakan pendekatan multi-replika.

Sebelum memulai

Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Jika ingin menggunakan Google Cloud CLI untuk tugas ini, instal lalu initialize gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan gcloud components update.

Persyaratan

  • Bidang kontrol cluster dan node Anda harus menjalankan GKE versi 1.28 atau yang lebih baru.
  • Saat Anda menggunakan Operator Stateful HA, Operator ini akan otomatis mengonfigurasi StatefulSet yang tertaut untuk menggunakan Persistent Disk regional. Namun, Anda bertanggung jawab untuk memastikan bahwa Pod dikonfigurasi untuk menggunakan disk ini, dan mampu berjalan di semua zona yang terkait dengan penyimpanan yang mendasarinya.
  • Pastikan aplikasi Anda berjalan pada bentuk mesin yang didukung Persistent Disk regional: E2, N1, N2, N2D.
  • Pastikan driver Compute Engine Persistent Disk CSI diaktifkan. Driver Persistent Disk CSI diaktifkan secara default pada cluster Autopilot dan Standar baru dan tidak dapat dinonaktifkan atau diedit saat menggunakan Autopilot. Jika Anda perlu menambahkan driver CSI Persistent Disk secara manual dari cluster, baca Mengaktifkan driver CSI Persistent Disk di cluster yang ada.
  • Jika Anda menggunakan StorageClass kustom, konfigurasikan driver CSI Persistent Disk dengan penyedia pd.csi.storage.gke.io dan parameter berikut:
    • availability-class: regional-hard-failover
    • replication-type: regional-pd

Menyiapkan dan menggunakan Operator dengan ketersediaan tinggi (HA) Stateful

Ikuti langkah-langkah berikut untuk menyiapkan Operator Stateful HA untuk workload stateful:

  1. Aktifkan add-on StatefulHA.
  2. Instal resource HighAvailabilityApplication.
  3. Menginstal StatefulSet.
  4. Memeriksa resource HighAvailabilityApplication.

Mengaktifkan add-on StatefulHA

Untuk menggunakan Operator HA Stateful, add-on StatefulHA harus diaktifkan di cluster Anda.

  • Cluster Autopilot: GKE secara otomatis mengaktifkan add-on StatefulHA saat pembuatan cluster. Jika Anda ingin menggunakan Operator HA Stateful untuk workload yang ada, deploy ulang workload Anda di cluster Autopilot baru.

  • Cluster standar:

    • Pembuatan cluster baru: Ikuti petunjuk gcloud CLI untuk membuat cluster Standar dan tambahkan flag berikut: --add-on=StatefulHA.
    • Cluster Standar yang sudah ada: Ikuti petunjuk gcloud CLI untuk memperbarui setelan cluster Standar, dan gunakan flag berikut untuk mengaktifkan add-on: --update-addons=StatefulHA=ENABLED`.

GKE otomatis menginstal StorageClass bernama standard-rwo-regional untuk Anda saat add-on diaktifkan.

Menginstal resource HighAvailabilityApplication

HighAvailabilityApplication adalah resource Kubernetes yang menyederhanakan setelan StatefulSet dan meningkatkan ketersediaan Pod di GKE. Operator HA Stateful merekonsiliasi resource HighAvailabilityApplication di GKE.

Dalam spesifikasi HighAvailabilityApplication, Anda harus menetapkan HighAvailabilityApplication.spec.resourceSelection.resourceKind ke StatefulSet.

Untuk mempelajari cara menentukan resource HighAvailability, lihat dokumentasi referensi HighAvailabilityApplication.

Lihat contoh berikut untuk PostgreSQL:

  1. Simpan manifes berikut dalam file bernama stateful-ha-example-resource.yaml:

    kind: HighAvailabilityApplication
    apiVersion: ha.gke.io/v1
    metadata:
      name: APP_NAME
      namespace: APP_NAMESPACE
    spec:
      resourceSelection:
        resourceKind: StatefulSet
      policy:
        storageSettings:
          requireRegionalStorage: true
        failoverSettings:
          forceDeleteStrategy: AfterNodeUnreachable
          afterNodeUnreachable:
            afterNodeUnreachableSeconds: 20
    

    Ganti kode berikut:

    • APP_NAME: nama aplikasi di cluster yang ingin Anda lindungi. Nama ini harus digunakan bersama oleh HighAvailabilityApplication dan StatefulSet.
    • APP_NAMESPACE: namespace aplikasi. Namespace ini harus dibagikan oleh HighAvailabilityApplication dan StatefulSet yang dilindungi.

    Dalam contoh ini:

    • HighAvailabilityApplication.spec.policy.storageSettings.requireRegionalSettings disetel ke true. Hal ini menerapkan regional storage.
    • HighAvailabilityApplication.spec.policy.failoverSettings ditetapkan ke AfterNodeUnreachable. Hal ini menentukan bagaimana penghapusan paksa dipicu pada kegagalan node.
    • HighAvailabilityApplication.spec.policy.failoverSettings.afterNodeUnreachable disetel ke 20. Ini adalah waktu tunggu untuk memaksa penghapusan Pod setelah node tempatnya berjalan ditandai sebagai tidak dapat dijangkau.
  2. Buat resource. Resource HighAvailabilityApplication mengidentifikasi StatefulSet dengan namespace dan nama yang cocok.

    kubectl apply -f stateful-ha-example-resource.yaml
    

Menginstal StatefulSet

Menginstal StatefulSet. Misalnya, Anda dapat menginstal PostgreSQL StatefulSet menggunakan Helm (Helm telah diinstal sebelumnya dengan Cloud Shell):

helm install postgresql oci://registry-1.docker.io/bitnamicharts/postgresql \
  --namespace=APP_NAMESPACE \
  --set fullnameOverride=APP_NAME

Resource HighAvailabilityApplication akan otomatis mengubah StorageClass StatefulSet menjadi standard-rwo-regional, yang menggunakan Persistent Disk regional.

Memeriksa resource HighAvailabilityApplication

Jalankan perintah berikut untuk memastikan aplikasi contoh telah mengaktifkan failover otomatis:

kubectl describe highavailabilityapplication APP_NAME

Output akan terlihat seperti berikut:

Status:
Conditions:
  Last Transition Time:  2023-08-09T23:59:52Z
  Message:               Application is protected
  Observed Generation:   1
  Reason:                ApplicationProtected
  Status:                True
  Type:                  Protected