Membuat penyiapan ketersediaan tinggi

Pilih versi dokumentasi:

Halaman ini menjelaskan cara menyiapkan konfigurasi ketersediaan tinggi untuk AlloyDB Omni. Halaman ini hanya membahas pembuatan instance AlloyDB Omni baru dalam konfigurasi ketersediaan tinggi. Halaman ini tidak membahas konversi instance yang ada ke ketersediaan tinggi.

Sebelum memulai

  1. Baca Ketersediaan tinggi dan ketahanan data.

  2. Jika belum memilikinya, buatlah Google Cloud project.

  3. Pastikan penagihan diaktifkan untuk project Anda.

  4. Buka Cloud Shell dikonsol. Google Cloud

  5. Dikonsol Google Cloud , clone repositori sumber berikut.

    git clone https://github.com/GoogleCloudPlatform/cloud-solutions.git
    

Penginstalan

Dalam panduan ini, kita akan men-deploy cluster Patroni tiga node dengan AlloyDB Omni dan cluster etcd tiga node sebagai penyimpanan konfigurasi. Di bagian depan cluster, kita menggunakan HAProxy dalam grup instance terkelola untuk alamat IP mengambang sehingga failover transparan bagi klien.

Konfigurasi awal untuk penyiapan ini ditampilkan dalam diagram berikut:

Konfigurasi saat HAProxy mengelola koneksi antara klien dan node utama

Gambar 1. Konfigurasi tempat HAProxy mengelola koneksi antara klien dan node utama.

Jika terjadi pemadaman, konfigurasi akan berubah menjadi diagram berikut:

Konfigurasi yang diperbarui saat node utama yang gagal digantikan oleh node siaga

Gambar 2. Konfigurasi yang diperbarui tempat node utama yang gagal diganti dengan node standby.

Jika jumlah klien yang terhubung ke database menjadi masalah dan Anda mengalami masalah performa karena banyaknya koneksi database simultan, sebaiknya tambahkan connection pooling sisi aplikasi. Jika tidak dapat melakukannya, Anda dapat menambahkan connection pooling sisi database menggunakan alat seperti PgBouncer.

Deployment

  1. Di Cloud Shell dan setelah meng-clone repositori Cloud Solutions, buka direktori terraform.

    cd cloud-solutions/projects/alloydbomni-ha-patroni-etcd/terraform
    
  2. Buat dan edit file terraform.tfvars. Dalam file tersebut, 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"
    

    Deskripsi untuk setiap variabel dapat ditemukan di GitHub dalam file konfigurasi variabel .

  3. 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 dalam cluster tiga node, tambahkan item konfigurasi seperti synchronous_mode, synchronous_node_count, synchronous_commit, dan synchronous_standby_names di bagian bootstrap dalam file konfigurasi Patroni. Konfigurasi Patroni ditentukan dalam template skrip startup dan dalam file /alloydb/config/patroni.yml di node Patroni. Untuk menggunakan replikasi sinkron, konfigurasi bootstrap Patroni Anda akan terlihat sebagai 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.

Langkah berikutnya