PIGSTY

配置

描述您想要的集群

在部署之前,您必须在配置清单中定义 etcd 集群。

通常您可以选择一个 etcd 集群:

  • 单节点,无高可用性,仅具有 etcd 功能,适用于开发、测试和演示目的。
  • 三节点,基本高可用性,容忍一个节点故障,适用于中等生产环境。
  • 五节点,更好的高可用性,容忍两个节点故障,适用于大型生产环境。

使用偶数个 etcd 节点是没有意义的,超过五个节点也不常见。


单节点

在清单中定义组 etcd,它将创建一个单例 etcd 实例。

# etcd cluster for ha postgres
etcd: { hosts: { 10.10.10.10: { etcd_seq: 1 } }, vars: { etcd_cluster: etcd } }

这一行几乎存在于所有单节点配置模板中,其中占位符 IP 地址 10.10.10.10 将被替换为当前管理节点 IP。

唯一必要的参数是 etcd_seqetcd_cluster,它们唯一地标识集群和每个实例。


三节点

三节点 etcd 集群非常常见,容忍一个节点故障,适用于大多数情况。

triosafe 配置模板使用三节点 etcd 集群,如下所示:

etcd: # dcs service for postgres/patroni ha consensus
  hosts:  # 1 node for testing, 3 or 5 for production
    10.10.10.10: { etcd_seq: 1 }  # etcd_seq required
    10.10.10.11: { etcd_seq: 2 }  # assign from 1 ~ n
    10.10.10.12: { etcd_seq: 3 }  # use odd numbers
  vars: # cluster level parameter override roles/etcd
    etcd_cluster: etcd  # mark etcd cluster name etcd
    etcd_safeguard: false # safeguard against purging
    etcd_clean: true # purge etcd during init process

五节点

五节点 etcd 集群可以容忍两个节点故障,适用于大型生产环境。

prod 模板中有一个五节点 etcd 集群示例:

etcd:
  hosts:
    10.10.10.21 : { etcd_seq: 1 }
    10.10.10.22 : { etcd_seq: 2 }
    10.10.10.23 : { etcd_seq: 3 }
    10.10.10.24 : { etcd_seq: 4 }
    10.10.10.25 : { etcd_seq: 5 }
  vars: { etcd_cluster: etcd    }

您可以使用更多节点,但建议使用 3 或 5 个节点。

为集群大小使用奇数,如 1、3、5、7、...


Etcd 使用

这些是当前使用 Etcd 的服务:

  • patroni:使用 etcd 作为 PostgreSQL HA 的共识后端
  • vip-manager:从 Etcd 读取领导者信息,在 PostgreSQL 集群上绑定可选的 L2 VIP

在对 etcd 集群成员进行任何永久更改后,您必须重新加载 etcd 配置。

例如,更新 patroni 对 etcd 端点的引用:

./pgsql.yml -t pg_conf                                  # re-gen patroni config
./pgsql.yml -t patroni_reload -e patroni_reload=true    # reload patroni config

例如,更新 vip-manager 对 etcd 端点的引用(如果您使用 PGSQL L2 VIP):

./pgsql.yml -t pg_vip # reload vip-manager config