文档 v3.7.0 版本已不再积极维护,你当前浏览的是一份归档快照。
最新文档请参阅 最新版本 。
配置
描述您想要的集群
在部署之前,您必须在配置清单 中定义 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_seq 和 etcd_cluster ,它们唯一地标识集群和每个实例。
三节点
三节点 etcd 集群非常常见,容忍一个节点故障,适用于大多数情况。
trio 和 safe 配置模板使用三节点 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 集群可以容忍两个节点故障,适用于大型生产环境。
在 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 个节点。
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