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 langkah-langkah berikut:

  • Menginstal orkestrator AlloyDB Omni

  • Menginstal komponen AlloyDB Omni

  • Mengonfigurasi sertifikat TLS

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

  • 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 lingkungan Google Cloud , 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 yang dapat terjadi sebelum failover terjadi. Nilai defaultnya adalah 3. Nilai minimum adalah 0, tetapi jika nilai disetel 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 defaultnya adalah 3. Nilai minimum adalah 0, tetapi jika nilai disetel 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 defaultnya adalah 30. Nilai minimum 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. Misalnya, 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 defaultnya adalah 50. Nilai minimum yang didukung juga 50. Untuk informasi selengkapnya, lihat Referensi max_connections PostgreSQL.

  • (Opsional) MAX_WAL_SIZE: ukuran maksimum untuk memungkinkan Write-Ahead-Log (WAL) bertambah selama titik pemeriksaan otomatis. Nilai defaultnya adalah 1GB. Untuk mengetahui informasi selengkapnya, lihat referensi max_wal_size PostgreSQL.

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

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

  • (Opsional) LOG_DISCONNECTS: menentukan apakah penghentian sesi PostgreSQL dicatat dalam log. Nilai defaultnya adalah on. Untuk mengetahui informasi selengkapnya, lihat referensi log_disconnections PostgreSQL.

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

  • (Opsional) LOG_STATEMENT: menentukan pernyataan SQL mana yang dicatat ke dalam log. Nilai defaultnya adalah none. Untuk informasi selengkapnya, lihat Referensi log_statement PostgreSQL.

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

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

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

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

  • (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, parameter ini wajib diisi. Untuk mengetahui informasi selengkapnya, lihat Mengelola ketersediaan tinggi�.

  • (Opsional) VIRTUAL_IP_INTERFACE: antarmuka jaringan tempat VIRTUAL_IP dikonfigurasi. Nilai defaultnya adalah eth0.

Buat cluster Anda

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

    • 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.

Hapus cluster Anda

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

Ansible

Untuk menghapus cluster menggunakan Ansible, selesaikan langkah-langkah 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 penonaktifan gagal karena inkonsistensi 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 pengelola untuk mengabaikan error selama proses penonaktifan 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.