建立叢集

選取文件版本:

建立資料庫叢集,開始使用 AlloyDB Omni。

限制

限制如下:

  • AlloyDB Omni 會在連接埠 5432 上執行。不支援設定自訂通訊埠。

  • 建立叢集前,請確認所有資料庫參數設定皆正確無誤。叢集建立後,您就無法修改任何資料庫參數。

事前準備

建立叢集前,請先完成下列操作:

  • 安裝 AlloyDB Omni 自動調度管理工具

  • 安裝 AlloyDB Omni 元件

  • 設定 TLS 憑證

  • 在自動化調度管理工具中佈建的所有資料庫節點上,將外部磁碟區 (DataDisk) 掛接至 PG_DATA_DIR。

  • 如果您打算使用 alloydbctl 而非 Ansible,請確認所有 VM 都已安裝必要的 policycoreutils-python-utils 套件。如要安裝這個套件,請執行下列指令:

    sudo dnf install policycoreutils-python-utils
  • 如果您使用 Google Cloud 環境,請將 ENVIRONMENT_TYPE 設為 gcp。 接著,您必須以 root 使用者身分執行 gcloud auth login,驗證 gcloud CLI 帳戶。此外,通過驗證的帳戶必須具備下列權限:

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

準備叢集規格

如要建立叢集,AlloyDB Omni 必須知道如何設定叢集。如要建立必要規格,請使用 DBCluster 格式建立 YAML 檔案:

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"

請替換下列變數:

  • DBCLUSTER_NAME:資料庫叢集的名稱。例如:my-dbcluster。

  • BASE64_PASSWORD: 用於 postgres 管理員使用者的 base64 編碼密碼。

  • NUM_STANDBY_NODES: 叢集中的待命節點數量。例如:2。

  • (選用) AUTOFAILOVER_TRIGGER_THRESHOLD:健康狀態檢查失敗次數達到這個值時,就會觸發容錯移轉。預設值為 3。最小值為 0,但如果值設為 0,AlloyDB Omni 會使用預設值。

    如果健康狀態檢查失敗 AUTOFAILOVER_TRIGGER_THRESHOLD 次,或健康狀態檢查的累計時間達到 HEALTHCHECK_PERIOD * AUTOFAILOVER_TRIGGER_THRESHOLD 秒,系統就會自動執行容錯移轉。

  • (選用) AUTOHEAL_TRIGGER_THRESHOLD:自動修復開始前,健康狀態檢查可失敗的次數。預設值為 3。最小值為 0,但如果值設為 0,AlloyDB Omni 會使用預設值。

    如果健康狀態檢查失敗 AUTOHEAL_TRIGGER_THRESHOLD 次,或健康狀態檢查的累計時間達到 HEALTHCHECK_PERIOD * AUTOHEAL_TRIGGER_THRESHOLD 秒,系統就會自動復原。

  • (選用) HEALTHCHECK_PERIOD: 每次健康狀態檢查之間的等待秒數。預設值為 30。最小值為 1。最大值為 86400 (一天)。

  • CPU_LIMIT:要分配給資料庫容器的 CPU 數量。例如:4。

  • MEMORY_LIMIT:要分配給資料庫容器的記憶體量。例如 32Gi、500Mi。

  • PG_DATA_DIR:主機路徑,用於儲存資料庫資料的目錄。

  • (選用) MAX_CONNECTIONS: PostgreSQL 資料庫的並行連線數上限。預設值為 50。支援的值最小值也是 50。詳情請參閱 PostgreSQL max_connections 參考資料。

  • (選用) MAX_WAL_SIZE:預寫記錄檔 (WAL) 在自動檢查點期間可成長的大小上限。預設值為 1GB。詳情請參閱 PostgreSQL max_wal_size 參考資料。

  • (選用) MAX_WORKER_PROCESSES:單一 Gather 或 Gather Merge 可啟動的工作站數量上限。預設值為 64。詳情請參閱 PostgreSQL max_worker_processes 參考資料。

  • (選用) LOG_CONNECTIONS:決定是否要記錄與 PostgreSQL 伺服器的連線。預設值為 on。詳情請參閱 PostgreSQL log_connections 參考資料。

  • (選用) LOG_DISCONNECTS:決定是否要記錄 PostgreSQL 工作階段終止作業。預設值為 on。詳情請參閱 PostgreSQL log_disconnections 參考資料。

  • (選用) LOG_HOSTNAME:決定是否要記錄連線主機的主機名稱和 IP。預設值為 on。詳情請參閱 PostgreSQL log_hostname 參考資料。

  • (選用) LOG_STATEMENT:決定要記錄哪些 SQL 陳述式。預設值為 none。詳情請參閱 PostgreSQL log_statement 參考資料。

  • (選用) HUGE_PAGES:決定是否要為主要共用記憶體區域要求巨型分頁。預設值為 off。詳情請參閱 PostgreSQL huge_pages 參考資料。

  • (選用) TCP_KEEPALIVES_IDLE:OS 嘗試傳送 TCP keepalive 訊息給用戶端前,沒有網路活動的時間長度 (以秒為單位)。預設值為 10。詳情請參閱 PostgreSQL tcp_keepalives_idle 參考資料。

  • (選用) TCP_KEEPALIVES_INTERVAL:在重新傳輸未經用戶端確認的 TCP keepalive 訊息之前,應等待的時間長度 (以秒為單位)。預設值為 10。詳情請參閱 PostgreSQL tcp_keepalives_interval 參考資料。

  • (選用) TCP_KEEPALIVES_COUNT:伺服器與用戶端的連線視為不活躍前,可遺失的 TCP keepalive 訊息數量。預設值為 10。詳情請參閱 PostgreSQL tcp_keepalives_count 參考資料。

  • (選用) ENVIRONMENT_TYPE:決定叢集的設定環境,onprem 或 gcp。

  • (選用) VIRTUAL_IP:負載平衡器使用的虛擬 IP 位址。如果您定義 dbLoadBalancerOptions,則必須提供這項資訊。詳情請參閱「管理高可用性」。

  • (選用) VIRTUAL_IP_INTERFACE:設定 VIRTUAL_IP 的網路介面。預設值為 eth0。

建立叢集

如要建立叢集,請選取符合您環境的分頁標籤,然後按照操作說明進行。

Ansible

如要建立叢集,請完成下列操作:

  1. 建立資料庫叢集規格的教戰手冊。

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

    請替換下列變數:

    • ANSIBLE_USER:OS 使用者,Ansible 會用這個使用者登入 AlloyDB Omni 節點。

    • ANSIBLE_SSH_PRIVATE_KEY_FILE:Ansible 使用的私密金鑰,用於透過 SSH 連線至 AlloyDB Omni 節點。

  2. 執行應對手冊。

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

    請替換下列變數:

    • DBCLUSTER_PLAYBOOK: 為資料庫叢集建立的應對手冊路徑。

    • DEPLOYMENT_SPEC:您在「安裝 AlloyDB Omni 元件」中建立的 Deployment 規格路徑。

    • DBCLUSTER_SPECIFICATIONS:叢集規格的路徑。

alloydbctl

如要建立叢集,請執行下列指令:

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

請替換下列變數:

  • DEPLOYMENT_SPEC:您在「安裝 AlloyDB Omni 元件」中建立的 Deployment 規格路徑。

  • DBCLUSTER_SPECIFICATIONS: 叢集規格的路徑。

刪除叢集

如要刪除叢集,請選取與環境相符的分頁,然後按照指示操作。

Ansible

如要使用 Ansible 刪除叢集,請完成下列步驟:

  1. 建立名為 teardown.yaml 的應對手冊:

    - name: Tear down AlloyDB Omni cluster
      hosts: localhost
      vars:
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
      - role: google.alloydbomni_orchestrator.delete
    
  2. 使用 ansible-playbook 執行應對手冊。您必須將 DBCluster 指定為 resource_type,並將要刪除的叢集名稱指定為 resource_name。

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

如果拆除程序因叢集狀態不一致而失敗 (例如節點無法連線),您可以在指令中加入 -e force=true,嘗試強制刪除叢集。這會指示自動調度資源工具忽略拆除程序中的錯誤,並嘗試移除盡可能多的資源。

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

alloydbctl

如要使用 alloydbctl 刪除叢集,請執行下列指令:

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

請替換下列變數:

  • DEPLOYMENT_SPEC:您在「安裝 AlloyDB Omni 元件」中建立的 Deployment 規格路徑。

  • DBCLUSTER_NAME:資料庫叢集的名稱。例如:my-dbcluster。