创建高可用性设置

本页面介绍了如何为 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 解决方案代码库后,前往 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 后,Pastore 会在主副本和其他副本之间使用同步复制。Patroni 使用参数 synchronous_node_count 来管理同步备用副本数量。Patroni 会根据参数 synchronous_node_count 管理同步备用副本的精确数量,并在成员加入和离开时调整配置存储区和 synchronous_standby_names 中的状态。如需详细了解同步复制,请参阅 Patroni 文档中的复制模式部分。

后续步骤