本頁說明如何為 AlloyDB Omni 設定高可用性。本頁面僅說明如何建立採用高可用性設定的新 AlloyDB Omni 執行個體。本文未說明如何將現有執行個體轉換為高可用性執行個體。
事前準備
請參閱「高可用性和資料韌性」。
如果尚未建立 Google Cloud 專案,請先建立。
確認專案已啟用計費功能。
在 Google Cloud 控制台中開啟 Cloud Shell。
在 Google Cloud 控制台複製下列來源存放區。
git clone https://github.com/GoogleCloudPlatform/cloud-solutions.git
安裝
在本指南中,我們會部署一個包含 AlloyDB Omni 的三節點 Patroni 叢集,以及一個三節點 etcd 叢集做為設定儲存庫。在叢集前端,我們在代管執行個體群組中使用 HAProxy 處理浮動 IP 位址,讓用戶端不會察覺到容錯移轉。
這個設定的初始設定如下圖所示:
圖 1.HAProxy 管理用戶端與主要節點之間連線的設定。
如果發生中斷,設定會變更為下圖所示:
圖 2:更新設定,將失敗的主要節點替換為待命節點。
如果連線至資料庫的用戶端數量成為問題,且因同時連線至資料庫的數量過多而有效能問題,建議您新增應用程式端連線集區。如果無法這麼做,可以使用 PgBouncer 等工具,新增資料庫端連線集區。
部署作業
在 Cloud Shell 中複製 Cloud Solutions 存放區後,前往 terraform 目錄。
cd cloud-solutions/projects/alloydbomni-ha-patroni-etcd/terraform
建立及編輯
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 查看變數設定檔。
執行 Terraform 指令碼,建立所有資源。
terraform init && terraform apply
這個指令碼會建立及設定下列項目:
etcd 叢集的三個節點
Patroni 叢集的三個節點
一個 HAProxy 節點
將 Patroni 設定為同步
如要讓 Patroni 在三個節點叢集中僅使用同步複製,請在 Patroni 設定檔的 bootstrap 區段中新增 synchronous_mode、synchronous_node_count、synchronous_commit 和 synchronous_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 說明文件的「複寫模式」一節。