Mengelola ketersediaan tinggi di Kubernetes

Pilih versi dokumentasi:

Halaman ini menunjukkan cara mengaktifkan dan menguji ketersediaan tinggi (HA) di cluster database AlloyDB Omni berbasis Kubernetes. Untuk melakukan tugas yang didokumentasikan di sini, Anda memerlukan pengetahuan dasar tentang penerapan file manifes Kubernetes dan penggunaan alat command line kubectl.

Ringkasan

Anda dapat mengaktifkan HA di cluster database dengan mengarahkan Operator Kubernetes AlloyDB Omni untuk membuat replika standby dari instance database utama Anda. Operator AlloyDB Omni mengonfigurasi cluster database Anda untuk terus memperbarui data di replika ini, yang cocok dengan semua perubahan pada data di instance utama Anda.

Aktifkan HA

Sebelum mengaktifkan HA di cluster database, pastikan cluster Kubernetes Anda memiliki hal berikut:

  • Penyimpanan untuk dua salinan lengkap data Anda
  • Resource komputasi untuk dua instance database yang berjalan secara paralel

Untuk mengaktifkan HA, ikuti langkah-langkah berikut:

  1. Ubah manifes cluster database untuk menyertakan bagian availability di bagian spec-nya. Bagian ini menentukan jumlah standby yang ingin Anda tambahkan dengan menyetel parameter numberOfStandbys.

    spec:
      availability:
        numberOfStandbys: NUMBER_OF_STANDBYS
    

    Ganti NUMBER_OF_STANDBYS dengan jumlah standby yang ingin Anda tambahkan. Nilai maksimumnya adalah 5. Jika Anda menyiapkan HA dan tidak yakin dengan jumlah siaga yang Anda butuhkan, mulailah dengan menetapkan nilai ke 1 atau 2.

  2. Terapkan kembali manifes.

Nonaktifkan HA

Untuk menonaktifkan HA, ikuti langkah-langkah berikut:

  1. Setel numberOfStandbys ke 0 di manifes cluster:

    spec:
      availability:
        numberOfStandbys: 0
    
  2. Terapkan kembali manifes.

Memverifikasi HA di cluster database

Untuk melihat status HA saat ini dari cluster database, periksa HAReady kondisi status cluster tersebut. Jika nilai ini memiliki status yang disetel ke True, maka HA telah disiapkan dan berfungsi di cluster database.

Untuk memeriksa nilai ini di command line, jalankan perintah berikut:

kubectl get dbcluster.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -o jsonpath={.status.conditions[?(@.type == \'HAReady\')]} -n NAMESPACE

Ganti kode berikut:

  • DB_CLUSTER_NAME: nama cluster database.

  • NAMESPACE: namespace cluster database.

Melakukan failover ke instance standby

Jika instance utama Anda tidak tersedia selama lebih dari 90 detik, AlloyDB Omni Operator akan otomatis melakukan failover dari instance database utama ke instance standby.

Pengalihan adalah opsi yang baik jika Anda ingin memulihkan diri dengan cepat dari kegagalan yang tidak terduga dan meminimalkan periode nonaktif, meskipun hal ini berpotensi menyebabkan hilangnya sejumlah kecil data, jika database utama menjadi tidak tersedia sebelum cadangan diperbarui sepenuhnya.

Operator AlloyDB Omni mendukung failover otomatis dan manual. Failover otomatis diaktifkan secara default.

Failover menghasilkan urutan peristiwa berikut:

  1. Operator AlloyDB Omni membuat instance database utama offline.

  2. Operator AlloyDB Omni mempromosikan replika standby menjadi instance database utama yang baru.

  3. Operator AlloyDB Omni menghapus instance database utama sebelumnya.

  4. Operator AlloyDB Omni membuat replika standby baru.

Menonaktifkan failover otomatis

Failover otomatis diaktifkan secara default di cluster database.

Untuk menonaktifkan failover, ikuti langkah-langkah berikut:

  1. Setel enableAutoFailover ke false di manifes cluster:

    spec:
      availability:
        enableAutoFailover: false
    
  2. Terapkan kembali manifes.

Memicu failover manual

Untuk memicu failover manual, buat dan terapkan manifes untuk resource failover baru:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: Failover
metadata:
  name: FAILOVER_NAME
  namespace: NAMESPACE
spec:
  dbclusterRef: DB_CLUSTER_NAME

Ganti kode berikut:

  • FAILOVER_NAME: nama untuk resource ini—misalnya, failover-1.

  • NAMESPACE: namespace untuk resource failover ini, yang harus cocok dengan namespace cluster database yang berlaku.

  • DB_CLUSTER_NAME: nama cluster database yang akan di-failover.

Untuk memantau failover, jalankan perintah berikut:

kubectl get failover FAILOVER_NAME -o jsonpath={.status.state} -n NAMESPACE

Ganti kode berikut:

  • FAILOVER_NAME: nama yang Anda tetapkan ke resource failover saat Anda membuatnya.

  • NAMESPACE: namespace cluster database.

Perintah ini menampilkan Success setelah instance database utama baru siap digunakan. Untuk memantau status instance standby baru, lihat bagian berikutnya.

Pengalihan ke instance standby

Pengalihan dilakukan saat Anda ingin menguji penyiapan pemulihan dari bencana atau aktivitas terencana lainnya yang memerlukan pengalihan peran database primer dan replika standby.

Setelah peralihan selesai, peran instance database utama dan replika standby dibalik bersama dengan arah replikasi. Anda harus memilih pengalihan jika ingin kontrol yang lebih baik atas proses pengujian penyiapan pemulihan bencana dengan nol kehilangan data.

Operator AlloyDB Omni mendukung pengalihan manual.

Pengalihan menghasilkan urutan peristiwa berikut:

  1. Operator AlloyDB Omni membuat instance database utama offline.

  2. Operator AlloyDB Omni mempromosikan replika standby menjadi instance database utama yang baru.

  3. Operator AlloyDB Omni mengalihkan instance database utama sebelumnya ke replika standby.

Melakukan pengalihan

Sebelum Anda melakukan pengalihan, pastikan hal berikut:

Untuk melakukan pengalihan, buat dan terapkan manifes untuk resource pengalihan baru:

apiVersion: alloydbomni.dbadmin.goog/v1
kind: Switchover
metadata:
    name: SWITCHOVER_NAME
spec:
     dbclusterRef: DB_CLUSTER_NAME
     NewPrimary: STANDBY_REPLICA_NAME

Ganti kode berikut:

  • SWITCHOVER_NAME: nama untuk resource pengalihan ini—misalnya, switchover-1.

  • DB_CLUSTER_NAME: nama instance database utama yang menjadi tujuan operasi pengalihan.

  • STANDBY_REPLICA_NAME: nama instance database yang ingin Anda promosikan sebagai instance utama baru.

    Untuk mengidentifikasi nama replika standby, jalankan perintah berikut: posix-terminal kubectl get instances.alloydbomni.internal.dbadmin.goog

Menggunakan replika standby sebagai instance hanya baca

Untuk menggunakan replika standby sebagai instance hanya baca, selesaikan langkah-langkah berikut:

  1. Ubah manifes cluster database untuk menyetel parameter enableStandbyAsReadReplica ke true.

    spec:
      availability:
        enableStandbyAsReadReplica: true
    
  2. Terapkan kembali manifes.

  3. Pastikan bahwa endpoint hanya baca dilaporkan di kolom status objek DBCluster:

    kubectl describe dbcluster -n NAMESPACE DB_CLUSTER_NAME

    Contoh respons berikut menunjukkan endpoint instance hanya baca:

      Status:
      [...]
      Primary:
        [...]
        Endpoints:
          Name: Read-Write
          Value: 10.128.0.81:5432
          Name: Read-Only
          Value: 10.128.0.82:5432