集群配置
根据需求场景选择合适的 Etcd 集群规模,并对外提供可靠的接入。
根据需求场景选择合适的 Etcd 集群规模,并对外提供可靠的接入。
在部署 Etcd 之前,你需要在 配置清单 中定义一个 Etcd 集群,通常来说,你可以选择:
- 单节点:没有高可用性,适用于开发、测试、演示,或者依赖外部 S3 备份进行 PITR 的无高可用单机部署
- 三节点:具有基本的高可用性,可以容忍一个节点的故障,适用于中小规模的生产环境
- 五节点:具有更好的高可用性,可以容忍两个节点的故障,适用于大规模生产环境
偶数成员的 Etcd 集群在技术上有效,但不会比少一个成员的奇数集群提高故障容忍数,反而会增加部署与仲裁成本。 因此,生产环境通常采用单节点、三节点或五节点;超过五节点的集群并不常见。
| 集群规模 | 仲裁数 | 容忍故障数 | 适用场景 |
|---|---|---|---|
| 1 节点 | 1 | 0 | 开发、测试、演示 |
| 3 节点 | 2 | 1 | 中小规模生产环境 |
| 5 节点 | 3 | 2 | 大规模生产环境 |
| 7 节点 | 4 | 3 | 特殊高可用需求 |
单节点
在 Pigsty 中,定义一个单例 Etcd 实例非常简单,只需要一行配置即可:
在 Pigsty 提供的所有单机配置模板中,都有这样一项,其中的占位 IP 地址:10.10.10.10 默认会被替换为当前管理节点的 IP。
除了 IP 地址外,这里唯一必要的参数是 etcd_seq 和 etcd_cluster,它们会唯一标识每一个 Etcd 实例。
三节点
三节点的 Etcd 集群最为常见,它可以容忍一个节点的故障,适用于中小规模的生产环境。
例如,Pigsty 的三节点模板:trio 和 safe 就使用了三节点的 Etcd 集群,如下所示:
五节点
五节点的 Etcd 集群可以容忍两个节点的故障,适用于大规模生产环境。
例如,Pigsty 的生产仿真模板:ha/simu 中就使用了一个五节点的 Etcd 集群:
使用 etcd 的服务
目前 Pigsty 中使用 etcd 的服务有:
| 服务 | 用途 | 配置文件 |
|---|---|---|
| Patroni | PostgreSQL 高可用,存储集群状态和配置 | /etc/patroni/patroni.yml |
| VIP-Manager | 在 PostgreSQL 集群上绑定 L2 VIP | /etc/default/vip-manager.yml |
当 etcd 集群的成员信息发生永久性变更时,您应当 重载相关服务的配置,以确保服务能够正确访问 Etcd 集群。
更新 Patroni 的 etcd 端点引用:
更新 VIP-Manager 的 etcd 端点引用(仅当使用 PGSQL L2 VIP 时需要):
RBAC 认证配置
Pigsty 自 v4.0 起默认启用 etcd 的 RBAC 认证机制。相关配置参数:
| 参数 | 说明 | 默认值 |
|---|---|---|
etcd_root_password |
etcd root 用户密码 | Etcd.Root |
pg_etcd_password |
Patroni 连接 etcd 的密码 | 空(使用集群名) |
生产环境建议:
文件系统布局
etcd 模块在目标主机上创建以下目录和文件:
| 路径 | 用途 | 权限 |
|---|---|---|
/etc/etcd/ |
配置目录 | 0750, etcd:etcd |
/etc/etcd/etcd.conf |
主配置文件 | 0644, etcd:etcd |
/etc/etcd/etcd.pass |
root 密码文件 | 0640, root:etcd |
/etc/etcd/ca.crt |
CA 证书 | 0644, etcd:etcd |
/etc/etcd/server.crt |
服务器证书 | 0644, etcd:etcd |
/etc/etcd/server.key |
服务器私钥 | 0600, etcd:etcd |
/var/lib/etcd/ |
备用数据目录 | 0770, etcd:etcd |
/data/etcd/ |
主数据目录(可配置) | 0700, etcd:etcd |
/etc/profile.d/etcdctl.sh |
客户端环境变量 | 0644, root:root |
/etc/systemd/system/etcd.service |
Systemd 服务定义 | 0644, root:root |