配置
描述您想要的集群
在部署之前,您必须在配置清单中定义 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_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