建立高可用性設定

選取說明文件版本:

本頁面說明如何為 AlloyDB Omni 設定高可用性。本頁僅說明如何建立高可用性設定的新 AlloyDB Omni 執行個體。本文未說明如何將現有執行個體轉換為高可用性執行個體。

事前準備

  1. 請參閱「高可用性和資料復原能力」。

  2. 如果沒有,請建立 Google Cloud 專案。

  3. 確認專案已啟用計費功能。

  4. 在 Google Cloud 控制台中開啟 Cloud Shell。

  5. 在 Google Cloud 控制台中,複製下列來源存放區。

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

安裝

在本指南中,我們將部署含有 AlloyDB Omni 的三節點 Patroni 叢集,以及三節點 etcd 叢集做為設定儲存空間。在叢集前端,我們會在代管執行個體群組中使用 HAProxy,以取得浮動 IP 位址,讓容錯移轉對用戶端來說是透明的。

這項設定的初始設定如下圖所示:

設定 HAProxy 管理用戶端與主要節點之間的連線

圖 1. 設定 HAProxy 管理用戶端與主要節點之間的連線。

如果發生中斷,設定會變更為下圖所示:

更新設定,以待命節點取代失敗的主要節點

圖 2:更新設定,以待命節點取代失敗的主要節點。

如果連線至資料庫的用戶端數量造成問題,且您因同時連線至資料庫的數量過多而遇到效能問題,建議您新增應用程式端連線共用。如果無法這麼做,可以使用 PgBouncer 等工具,在資料庫端新增連線集區。

部署作業

  1. 在 Cloud Shell 中複製 Cloud Solutions 存放區後,請前往 terraform 目錄。

    cd cloud-solutions/projects/alloydbomni-ha-patroni-etcd/terraform
    
  2. 建立及編輯 terraform.tfvars 檔案。在檔案中,為下列變數設定值。

    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"
    

    如要瞭解每個變數的說明,請前往 GitHub 的變數設定檔

  3. 執行 Terraform 指令碼,建立所有資源。

    terraform init && terraform apply
    

    這段指令碼會建立及設定下列項目:

    • etcd 叢集的三個節點

    • Patroni 叢集的三個節點

    • 一個 HAProxy 節點

將 Patroni 設定為同步

如要讓 Patroni 在三節點叢集中僅使用同步複製,請在 Patroni 設定檔的啟動程序部分新增 synchronous_modesynchronous_node_countsynchronous_commitsynchronous_standby_names 等設定項目。Patroni 設定是在啟動指令碼範本和 Patroni 節點的 /alloydb/config/patroni.yml 檔案中定義。如要使用同步複製功能,Patroni 啟動設定應如下所示:

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: '*'

synchronous_mode 啟用後,Patroni 會在主要副本和其他副本之間使用同步複製作業。Patroni 會使用 synchronous_node_count 參數管理同步待命副本的數量。Patroni 會根據 synchronous_node_count 參數管理確切數量的同步待命副本,並在成員加入和離開時,調整設定存放區和 synchronous_standby_names 中的狀態。如要進一步瞭解同步複製,請參閱 Patroni 說明文件的「複製模式」一節。

後續步驟