Membuat instance kumpulan baca yang direplikasi secara asinkron menggunakan orchestrator RPM

Pilih versi dokumentasi:

Untuk meningkatkan throughput baca dan ketersediaan cluster database, Anda dapat membuat instance read pool asinkron. Instance read pool menyediakan clone hanya baca dari instance database Anda, sehingga memastikan akses data meskipun instance database Anda tidak tersedia.

Anda dapat menentukan konfigurasi instance read pool di file manifes instance database. Setiap instance read pool memerlukan pembuatan file manifes yang unik. Anda dapat men-deploy beberapa instance read pool, dengan total hingga 20 node read pool per cluster database.

Setiap instance read pool menempati jumlah penyimpanan yang sama dengan instance yang direplikasi.

Membuat instance read pool yang direplikasi secara asinkron

Untuk membuat instance read pool yang direplikasi secara asinkron AlloyDB Omni, selesaikan langkah-langkah berikut:

  1. Buat manifes instance database untuk menentukan jenis instance read pool:

    DBInstance:
      metadata:
        name: READ_POOL_INSTANCE_NAME
      spec:
        instanceType: ReadPool
        nodeCount: READ_POOL_NODE_COUNT
        readPoolPort: READ_POOL_PORT
        dbcParent:
          name: DB_CLUSTER_NAME
    

    Ganti kode berikut:

    • READ_POOL_INSTANCE_NAME: nama untuk resource ini—misalnya, read-pool-instance-1.

    • DB_CLUSTER_NAME: nama cluster database tempat instance berada.

    • READ_POOL_NODE_COUNT: (Opsional) jumlah node dalam instance read pool. Hal ini menentukan kapasitas komputasi keseluruhan instance. Anda dapat memiliki total maksimum 20 node read pool per cluster database.

    • READ_POOL_PORT: (Opsional) port pada load balancer (VIP) untuk merutekan traffic baca ke instance read pool ini. Nilai defaultnya adalah 5434.

  2. Terapkan spesifikasi DBInstance.

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPECIFICATION_PATH" -r "DBINSTANCE_SPECIFICATION"

    Ganti variabel berikut:

    • DEPLOYMENT_SPECIFICATION_PATH: jalur ke spesifikasi deployment yang Anda buat di Menginstal komponen AlloyDB Omni.

    • DBINSTANCE_SPECIFICATION: jalur ke file manifes DBInstance yang Anda buat di langkah sebelumnya.

    Ansible

    ansible-playbook DBINSTANCE_PLAYBOOK -i "DEPLOYMENT_SPECIFICATION_PATH" \
          -e resource_spec="DBINSTANCE_SPECIFICATION"

    Ganti variabel berikut:

    • DBINSTANCE_PLAYBOOK: jalur ke playbook yang Anda buat untuk spesifikasi DBInstance.

    • DEPLOYMENT_SPECIFICATION_PATH: jalur ke spesifikasi deployment yang Anda buat di Menginstal komponen AlloyDB Omni.

    • DBINSTANCE_SPECIFICATION: jalur ke file manifes DBInstance yang Anda buat di langkah sebelumnya.

Memverifikasi status instance

Untuk memverifikasi ketersediaan instance read pool, dapatkan status resource DBInstance:

alloydbctl

alloydbctl get -d "DEPLOYMENT_SPECIFICATION_PATH" -t DBInstance -n "READ_POOL_INSTANCE_NAME" -o yaml

Ganti variabel berikut:

  • DEPLOYMENT_SPECIFICATION_PATH: jalur ke spesifikasi deployment yang Anda buat di Menginstal komponen AlloyDB Omni.

  • READ_POOL_INSTANCE_NAME: nama instance read pool yang Anda tentukan dalam manifes.

Ansible

Jalankan playbook google.alloydbomni_orchestrator.status. Untuk mengetahui informasi selengkapnya, lihat Mendapatkan status cluster.

ansible-playbook STATUS_PLAYBOOK_PATH -i "DEPLOYMENT_SPECIFICATION_PATH" \
      -e resource_type="DBInstance" -e resource_name="READ_POOL_INSTANCE_NAME"

Ganti variabel berikut:

  • STATUS_PLAYBOOK_PATH: jalur ke playbook yang Anda buat untuk mendapatkan status cluster.

  • DEPLOYMENT_SPECIFICATION_PATH: jalur ke spesifikasi deployment yang Anda buat di Menginstal komponen AlloyDB Omni.

  • READ_POOL_INSTANCE_NAME: nama instance read pool yang Anda tentukan dalam manifes.

Periksa bagian .status.conditions dari respons untuk hal berikut:

  • Jika status kondisi Available adalah true, hal ini menunjukkan bahwa instance read pool dapat menayangkan kueri, tetapi mungkin tidak mereplikasi data dari instance database Anda.
  • Jika status kondisi Streaming adalah true, hal ini menunjukkan bahwa instance read pool terhubung ke instance database Anda dan secara aktif melakukan streaming perubahan.

Saat instance database Anda tidak dapat dijangkau, instance read pool akan terus menayangkan kueri. Dalam hal ini, status ketersediaan akan menjadi true, sedangkan status streaming akan menjadi false.

Setelah Anda menyiapkan instance read pool, semua penyisipan, pembaruan, dan penghapusan ke baris di instance database utama Anda akan dapat dibaca di instance read pool Anda.

Menghubungkan ke instance read pool

Setelah instance read pool menjadi Available, load balancer akan otomatis mengonfigurasi frontend khusus hanya baca yang merutekan traffic ke node read pool.

Untuk melihat endpoint koneksi, periksa status.endpoints di output status DBInstance. Endpoint hanya baca, misalnya, VIP_IP:5434, mendistribusikan kueri hanya baca yang masuk ke semua node yang sehat di read pool.

Untuk terhubung ke instance read pool, gunakan alat klien psql dengan alamat IP dan port dari endpoint:

psql -h VIP_IP -p READ_POOL_PORT -U postgres

Ganti kode berikut:

  • VIP_IP: alamat IP endpoint hanya baca.
  • READ_POOL_PORT: port endpoint hanya baca.

Jika Anda mencoba melakukan operasi tulis terhadap endpoint ini, operasi akan langsung gagal dengan error yang menunjukkan bahwa Anda tidak dapat menjalankan penyisipan dalam transaksi hanya baca.

Mengelola instance read pool

Pengorkestrasi RPM mendukung penskalaan dan penghapusan instance read pool secara dinamis tanpa waktu nonaktif cluster.

Menskalakan instance read pool

Untuk menambahkan atau menghapus node dari read pool yang ada, perbarui kolom nodeCount di file manifes DBInstance Anda.

  1. Buka file manifes DBInstance Anda dan ubah nilai nodeCount untuk mencerminkan jumlah node yang dipilih.

  2. Terapkan manifes yang diperbarui menggunakan metode deployment pilihan Anda, perintah alloydbctl apply, atau playbook Ansible Anda.

Pengorkestrasi RPM otomatis menyediakan atau menghapus node replika baca, dan load balancer akan diperbarui secara dinamis untuk merutekan traffic ke node yang tersedia di pool.

Menghapus instance read pool

Untuk menghapus instance read pool, gunakan perintah alloydbctl delete:

alloydbctl delete -t DBInstance -n READ_POOL_INSTANCE_NAME

Ganti READ_POOL_INSTANCE_NAME dengan nama instance read pool yang ingin Anda hapus.

Saat Anda menghapus instance read pool, pengorkestrasi akan menghentikan layanan replika baca dan membersihkan node. Load balancer akan otomatis menghapus perutean tanpa menyebabkan kebuntuan promosi atau memengaruhi traffic ke instance utama atau standby Anda.