Membuat cluster

Pilih versi dokumentasi:

Buat cluster database untuk mulai menggunakan AlloyDB Omni.

Batasan

Batasan berikut berlaku:

  • AlloyDB Omni berjalan di port 5432. Mengonfigurasi port kustom tidak didukung.

  • Pastikan semua konfigurasi parameter database sudah benar sebelum membuat cluster. Setelah cluster dibuat, Anda tidak dapat mengubah parameter database apa pun.

Sebelum memulai

Sebelum membuat cluster, selesaikan hal berikut:

  • Menginstal pengatur AlloyDB Omni

  • Menginstal komponen AlloyDB Omni

  • Mengonfigurasi sertifikat TLS

  • Memasang volume eksternal (DataDisk) ke PG_DATA_DIR di semua node database yang disediakan dalam pengatur.

  • Jika Anda berencana menggunakan alloydbctl, bukan Ansible, pastikan paket policycoreutils-python-utils yang diperlukan telah diinstal di semua VM Anda. Untuk menginstal paket ini, jalankan perintah berikut:

    sudo dnf install policycoreutils-python-utils
  • Jika Anda menggunakan Google Cloud lingkungan, tetapkan ENVIRONMENT_TYPE ke gcp. Kemudian, Anda harus mengautentikasi akun gcloud CLI dengan menjalankan gcloud auth login sebagai pengguna root. Selain itu, akun yang diautentikasi harus memiliki izin berikut:

    • compute.instances.get
    • compute.instances.list
    • compute.instances.updateNetworkInterface

Menyiapkan spesifikasi cluster

Untuk membuat cluster, AlloyDB Omni harus mengetahui cara mengonfigurasinya. Untuk membuat spesifikasi yang diperlukan, buat file YAML menggunakan format DBCluster:

Secret:
  metadata:
    name: db-pw-DBCLUSTER_NAME
  spec:
    type: Opaque
    data:
      DBCLUSTER_NAME: BASE64_PASSWORD
---
DBCluster:
  metadata:
    name: DBCLUSTER_NAME
  spec:
    databaseVersion: 18.1.0
    mode: ""
    availability:
      numberOfStandbys: NUM_STANDBY_NODES
      enableAutoFailover: true
      enableAutoHeal: true
      autoFailoverTriggerThreshold: AUTOFAILOVER_TRIGGER_THRESHOLD
      autoHealTriggerThreshold: AUTOHEAL_TRIGGER_THRESHOLD
      healthcheckPeriodSeconds: HEALTHCHECK_PERIOD
      replayReplicationSlotsOnStandbys: false
    primarySpec:
      adminUser:
        passwordRef:
          name: db-pw-DBCLUSTER_NAME
      resources:
        cpu: CPU_LIMIT
        memory: MEMORY_LIMIT
        disks:
        - name: DataDisk
          path: PG_DATA_DIR
      parameters:
        max_connections: "MAX_CONNECTIONS"
        max_wal_size: "MAX_WAL_SIZE"
        max_worker_processes: "MAX_WORKER_PROCESSES"
        log_connections: "LOG_CONNECTIONS"
        log_disconnections: "LOG_DISCONNECTS"
        log_hostname: "LOG_HOSTNAME"
        log_statement: "LOG_STATEMENT"
        huge_pages: "HUGE_PAGES"
        tcp_keepalives_idle: "TCP_KEEPALIVES_IDLE"
        tcp_keepalives_interval: "TCP_KEEPALIVES_INTERVAL"
        tcp_keepalives_count: "TCP_KEEPALIVES_COUNT"
      dbLoadBalancerOptions:
        DB_LOAD_BALANCER_TYPE:
          loadBalancerIP: "VIRTUAL_IP"
          loadBalancerType: "internal"
          loadBalancerInterface: "VIRTUAL_IP_INTERFACE"

Ganti variabel berikut:

  • DBCLUSTER_NAME: nama cluster database Anda. Contoh, my-dbcluster.

  • BASE64_PASSWORD: sandi berenkode base64 yang digunakan untuk pengguna administrator postgres.

  • NUM_STANDBY_NODES: jumlah node standby di cluster Anda. Contoh, 2.

  • (Opsional) AUTOFAILOVER_TRIGGER_THRESHOLD: jumlah kegagalan health check sebelum failover terjadi. Nilai default-nya adalah 3. Nilai minimumnya adalah 0, tetapi jika nilai ditetapkan ke 0, AlloyDB Omni akan menggunakan nilai default.

    Failover otomatis terjadi jika health check gagal AUTOFAILOVER_TRIGGER_THRESHOLD kali atau jika durasi kumulatif health check mencapai HEALTHCHECK_PERIOD * AUTOFAILOVER_TRIGGER_THRESHOLD detik.

  • (Opsional) AUTOHEAL_TRIGGER_THRESHOLD: jumlah kegagalan health check sebelum pemulihan otomatis dimulai. Nilai default-nya adalah 3. Nilai minimumnya adalah 0, tetapi jika nilai ditetapkan ke 0, AlloyDB Omni akan menggunakan nilai default.

    Pemulihan otomatis terjadi jika health check gagal AUTOHEAL_TRIGGER_THRESHOLD kali atau jika durasi kumulatif health check mencapai HEALTHCHECK_PERIOD * AUTOHEAL_TRIGGER_THRESHOLD detik.

  • (Opsional) HEALTHCHECK_PERIOD: jumlah detik untuk menunggu di antara setiap health check. Nilai default-nya adalah 30. Nilai minimumnya adalah 1. Nilai maksimumnya adalah 86400 (satu hari).

  • CPU_LIMIT: jumlah CPU yang akan dialokasikan ke container database. Contoh, 4.

  • MEMORY_LIMIT: jumlah memori yang akan dialokasikan ke container database. Contoh, 32Gi, 500Mi.

  • PG_DATA_DIR: jalur host ke direktori tempat data database akan disimpan.

  • (Opsional) MAX_CONNECTIONS: jumlah maksimum koneksi serentak ke database PostgreSQL. Nilai default-nya adalah 50. Nilai minimum yang didukung juga adalah 50. Untuk mengetahui informasi selengkapnya, lihat referensi max_connectionsPostgreSQL.

  • (Opsional) MAX_WAL_SIZE: ukuran maksimum untuk memungkinkan Write-Ahead-Log (WAL) bertambah selama checkpoint otomatis. Nilai default-nya adalah 1GB. Untuk mengetahui informasi selengkapnya, lihat referensi max_wal_sizePostgreSQL.

  • (Opsional) MAX_WORKER_PROCESSES: jumlah maksimum pekerja yang dapat dimulai oleh satu Gather atau Gather Merge. Nilai default-nya adalah 64. Untuk mengetahui informasi selengkapnya, lihat referensi max_worker_processesPostgreSQL.

  • (Opsional) LOG_CONNECTIONS: menentukan apakah koneksi ke server PostgreSQL Anda dicatat atau tidak. Nilai default-nya adalah on. Untuk mengetahui informasi selengkapnya, lihat referensi log_connectionsPostgreSQL.

  • (Opsional) LOG_DISCONNECTS: menentukan apakah penghentian sesi PostgreSQL dicatat. Nilai default-nya adalah on. Untuk mengetahui informasi selengkapnya, lihat referensi log_disconnectionsPostgreSQL.

  • (Opsional) LOG_HOSTNAME: menentukan apakah nama host dicatat selain IP untuk host yang terhubung. Nilai default-nya adalah on. Untuk mengetahui informasi selengkapnya, lihat referensi PostgreSQL log_hostname.

  • (Opsional) LOG_STATEMENT: menentukan pernyataan SQL mana yang dicatat. Nilai default-nya adalah none. Untuk mengetahui informasi selengkapnya, lihat referensi PostgreSQL log_statement.

  • (Opsional) HUGE_PAGES: menentukan apakah halaman besar diminta untuk area memori bersama utama. Nilai default-nya adalah off. Untuk mengetahui informasi selengkapnya, lihat referensi PostgreSQL huge_pages.

  • (Opsional) TCP_KEEPALIVES_IDLE: jumlah waktu, dalam detik, tanpa aktivitas jaringan sebelum OS mencoba mengirim pesan TCP keepalive ke klien. Nilai default-nya adalah 10. Untuk mengetahui informasi selengkapnya, lihat referensi PostgreSQL.tcp_keepalives_idle

  • (Opsional) TCP_KEEPALIVES_INTERVAL: jumlah waktu, dalam detik, sebelum pesan TCP keepalive yang belum dikonfirmasi oleh klien harus dikirim ulang. Nilai default-nya adalah 10. Untuk mengetahui informasi selengkapnya, lihat referensi PostgreSQL tcp_keepalives_interval.

  • (Opsional) TCP_KEEPALIVES_COUNT: jumlah pesan TCP keepalive yang dapat hilang sebelum koneksi server ke klien dianggap tidak aktif. Nilai default-nya adalah 10. Untuk mengetahui informasi selengkapnya, lihat referensi PostgreSQL tcp_keepalives_count.

  • (Opsional) ENVIRONMENT_TYPE: menentukan lingkungan tempat cluster disiapkan—onprem atau gcp.

  • (Opsional) VIRTUAL_IP: alamat IP virtual yang digunakan oleh load balancer. Jika Anda menentukan dbLoadBalancerOptions, hal ini diperlukan. Untuk mengetahui informasi selengkapnya, lihat Mengelola ketersediaan tinggi.

  • (Opsional) VIRTUAL_IP_INTERFACE: antarmuka jaringan tempat VIRTUAL_IP dikonfigurasi. Nilai default-nya adalah eth0.

Membuat cluster

Untuk membuat cluster, pilih tab yang sesuai dengan lingkungan Anda dan ikuti petunjuknya.

Ansible

Untuk membuat cluster, selesaikan petunjuk berikut:

  1. Buat playbook untuk spesifikasi cluster database Anda.

    - name: Create DBCluster
      hosts: localhost
      vars:
        ansible_become: true
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
      - role: google.alloydbomni_orchestrator.bootstrap
    
    

    Ganti variabel berikut:

    • ANSIBLE_USER: pengguna OS yang digunakan Ansible untuk login ke node AlloyDB Omni Anda.

    • ANSIBLE_SSH_PRIVATE_KEY_FILE: kunci pribadi yang digunakan Ansible untuk terhubung ke node AlloyDB Omni Anda menggunakan SSH.

  2. Jalankan playbook Anda.

    ansible-playbook DBCLUSTER_PLAYBOOK -i "DEPLOYMENT_SPEC" \
          -e resource_spec="DBCLUSTER_SPECIFICATIONS"

    Ganti variabel berikut:

    • DBCLUSTER_PLAYBOOK: jalur ke playbook yang Anda buat untuk cluster database Anda.

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

    • DBCLUSTER_SPECIFICATIONS: jalur ke spesifikasi cluster Anda.

alloydbctl

Untuk membuat cluster, jalankan perintah berikut:

alloydbctl apply -d "DEPLOYMENT_SPEC" -r "DBCLUSTER_SPECIFICATIONS"

Ganti variabel berikut:

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

  • DBCLUSTER_SPECIFICATIONS: jalur ke spesifikasi cluster Anda.

Menghapus cluster

Untuk menghapus cluster, pilih tab yang sesuai dengan lingkungan Anda dan ikuti petunjuknya.

Ansible

Untuk menghapus cluster menggunakan Ansible, selesaikan hal berikut:

  1. Buat playbook bernama teardown.yaml:

    - name: Tear down AlloyDB Omni cluster
      hosts: localhost
      vars:
        ansible_become: true
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
      - role: google.alloydbomni_orchestrator.delete
    
  2. Jalankan playbook menggunakan ansible-playbook. Anda harus menentukan DBCluster sebagai resource_type dan nama cluster yang akan dihapus sebagai resource_name.

    ansible-playbook -i "DEPLOYMENT_SPEC" teardown.yaml \
      -e `resource_type`=`DBCluster` -e `resource_name`="DBCLUSTER_NAME"

Jika proses penghentian gagal karena ketidakkonsistenan dalam status cluster (misalnya, jika node tidak dapat dijangkau), Anda dapat mencoba menghapus cluster secara paksa dengan menambahkan -e force=true ke perintah. Hal ini menginstruksikan pengatur untuk mengabaikan error selama proses penghentian dan mencoba menghapus sebanyak mungkin resource.

  ansible-playbook -i "DEPLOYMENT_SPEC" teardown.yaml \
    -e resource_type=DBCluster -e resource_name="DBCLUSTER_NAME" -e force=true

alloydbctl

Untuk menghapus cluster menggunakan alloydbctl, jalankan perintah berikut:

alloydbctl delete -d "DEPLOYMENT_SPEC" \
      --resource_type DBCluster --resource_name "DBCLUSTER_NAME"

Ganti variabel berikut:

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

  • DBCLUSTER_NAME: nama cluster database Anda. Contoh, my-dbcluster.