Halaman ini menjelaskan cara menyiapkan konfigurasi ketersediaan tinggi untuk AlloyDB Omni. Halaman ini hanya membahas pembuatan instance AlloyDB Omni baru dalam konfigurasi ketersediaan tinggi. Panduan ini tidak membahas cara mengonversi instance yang ada ke ketersediaan tinggi.
Sebelum memulai
Jika Anda belum memilikinya, buat project Google Cloud .
Pastikan penagihan diaktifkan untuk project Anda.
Buka Cloud Shell di konsol Google Cloud .
Di konsol Google Cloud , clone repositori sumber berikut.
git clone https://github.com/GoogleCloudPlatform/cloud-solutions.git
Penginstalan
Dalam panduan ini, kami men-deploy cluster Patroni tiga node dengan AlloyDB Omni dan cluster etcd tiga node sebagai penyimpanan konfigurasi. Di bagian depan cluster, kami menggunakan HAProxy dalam grup instance terkelola untuk alamat IP mengambang sehingga failover transparan bagi klien.
Konfigurasi awal untuk penyiapan ini ditunjukkan dalam diagram berikut:
Gambar 1. Konfigurasi tempat HAProxy mengelola koneksi antara klien dan node utama.
Jika terjadi pemadaman layanan, konfigurasi akan berubah menjadi diagram berikut:
Gambar 2. Konfigurasi yang diperbarui, dengan node utama yang gagal diganti oleh node standby.
Jika jumlah klien yang terhubung ke database menjadi masalah dan Anda mengalami masalah performa karena tingginya jumlah koneksi database simultan, sebaiknya tambahkan penggabungan koneksi sisi aplikasi. Jika tidak dapat melakukannya, Anda dapat menambahkan penggabungan koneksi sisi database menggunakan alat seperti PgBouncer.
Deployment
Di Cloud Shell dan setelah meng-clone repositori Cloud Solutions, buka direktori terraform.
cd cloud-solutions/projects/alloydbomni-ha-patroni-etcd/terraform
Buat dan edit file
terraform.tfvars. Dalam file, tetapkan nilai untuk variabel berikut:project_id = "PROJECT_ID" region = "REGION" zones = [ZONES] node_count = 3 cluster_name = "CLUSTER_NAME" replication_user_password = "REPLICATION_USER_PASSWORD" postgres_super_user_password = "PG_SUPER_USER_PASSWORD"Ganti kode berikut:
PROJECT_ID: ID project Google Cloud Anda.REGION: Google Cloud region tempat Anda ingin men-deploy resource—misalnya,us-central1.ZONES: daftar zona yang dikutip dan dipisahkan koma di region yang ditentukan—misalnya,"us-central1-a", "us-central1-b", "us-central1-c"atau"us-central1-a", "us-central1-c".CLUSTER_NAME: nama untuk cluster Patroni dan AlloyDB Omni Anda.REPLICATION_USER_PASSWORD: sandi untuk pengguna replikasi.PG_SUPER_USER_PASSWORD: sandi untuk superuser PostgreSQL (postgres).
Untuk mengetahui informasi selengkapnya tentang setiap variabel, lihat file konfigurasi variabel di GitHub.
Jalankan skrip Terraform untuk membuat semua resource.
terraform init && terraform apply
Skrip ini membuat dan mengonfigurasi hal berikut:
Tiga node untuk cluster etcd Anda
Tiga node untuk cluster Patroni Anda
Satu node untuk HAProxy
Mengonfigurasi Patroni agar sinkron
Agar Patroni hanya menggunakan replikasi sinkron di cluster tiga node Anda,
tambahkan item konfigurasi seperti synchronous_mode, synchronous_node_count,
synchronous_commit, dan synchronous_standby_names di bagian bootstrap
dalam file konfigurasi Patroni Anda. Konfigurasi Patroni ditentukan dalam
template skrip startup
dan dalam file /alloydb/config/patroni.yml pada node Patroni. Untuk menggunakan replikasi sinkron, konfigurasi bootstrap Patroni Anda akan terlihat seperti berikut:
bootstrap:
dcs:
ttl: 30
loop_wait: 10
retry_timeout: 10
maximum_lag_on_failover: 1048576
synchronous_mode: true
synchronous_node_count: 2
postgresql:
use_pg_rewind: true
use_slots: true
parameters:
hot_standby: "on"
wal_keep_segments: 20
max_wal_senders: 8
max_replication_slots: 8
synchronous_commit: remote_apply
synchronous_standby_names: '*'
Saat synchronous_mode diaktifkan, Patroni menggunakan replikasi sinkron
antara replika utama dan replika lainnya. Parameter synchronous_node_count digunakan oleh Patroni untuk mengelola jumlah replika standby sinkron. Patroni mengelola jumlah replika standby sinkron yang tepat berdasarkan parameter synchronous_node_count dan menyesuaikan status di penyimpanan konfigurasi dan di synchronous_standby_names saat anggota bergabung dan keluar. Untuk mengetahui informasi selengkapnya tentang replikasi sinkron, lihat bagian Mode replikasi dalam dokumentasi Patroni.