本頁面說明如何為 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 設定檔的啟動程序部分新增 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 說明文件的「複製模式」一節。