Mengelola ketersediaan tinggi di Kubernetes

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 cara menerapkan file manifes Kubernetes dan menggunakan 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. AlloyDB Omni Operator mengonfigurasi cluster database Anda untuk terus memperbarui data pada replika ini, yang mencocokkan semua perubahan pada data di instance utama Anda.

Mengaktifkan 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. Bagian ini menentukan jumlah standby yang ingin Anda tambahkan dengan menetapkan 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 standby yang diperlukan, mulailah dengan menetapkan nilai ke 1 atau 2.

  2. Terapkan kembali manifes.

Menonaktifkan HA

Untuk menonaktifkan HA, ikuti langkah-langkah berikut:

  1. Tetapkan 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 kondisi HAReady status cluster tersebut. Jika nilai ini memiliki status yang ditetapkan ke True, HA akan 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.

Failover adalah opsi yang baik jika Anda ingin memulihkan dari kegagalan yang tidak terduga dengan cepat dan meminimalkan periode nonaktif, meskipun hal ini berpotensi kehilangan sejumlah kecil data, jika database utama tidak tersedia sebelum pencadangan diperbarui sepenuhnya.

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

Failover menghasilkan urutan peristiwa berikut:

  1. Operator AlloyDB Omni akan membuat instance database utama offline.

  2. Operator AlloyDB Omni mempromosikan replika standby menjadi instance database utama 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. Tetapkan 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 gagal.

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 untuk resource failover saat 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.

Beralih ke instance standby

Peralihan dilakukan saat Anda ingin menguji penyiapan disaster recovery atau aktivitas terencana lainnya yang memerlukan pengalihan peran database utama dan replika standby.

Setelah peralihan selesai, peran instance database utama dan replika standby akan dibalik bersama dengan arah replikasi. Anda harus memilih pengalihan jika menginginkan kontrol yang lebih baik atas proses pengujian penyiapan disaster recovery tanpa kehilangan data.

Operator AlloyDB Omni mendukung pengalihan manual.

Peralihan akan menghasilkan urutan peristiwa berikut:

  1. Operator AlloyDB Omni akan membuat instance database utama offline.

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

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

Melakukan pengalihan

Sebelum 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: STANBDY_REPLICA_NAME

Ganti kode berikut:

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

  • DB_CLUSTER_NAME: nama instance database utama yang menjadi sasaran operasi switchover.

  • STANBDY_REPLICA_NAME: nama instance database yang ingin Anda promosikan sebagai 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 menetapkan parameter enableStandbyAsReadReplica ke true.

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

  3. Pastikan 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