主要观点:作者为使家庭实验室成为实际的实验实验室,将单实例 PostgreSQL 服务器转变为具有故障转移功能的集群。利用家庭实验室中的多台机器构建集群,以防止机器离线导致其他服务受影响。选择 Patroni 来协调集群,它通过 etcd 进行实例间的协调,同时配备了功能齐全的 etcd 集群。通过 HAProxy 连接到集群,用于转发连接到主实例。测试时关闭主实例以查看故障情况,探讨了为何不在 Kubernetes 中运行 PostgreSQL 及后续目标是使 Vault 实例高可用等。
关键信息:
- 家庭实验室中有多台可运行计算工作负载的机器,部分使用旧 SSD 作为启动磁盘。
- Patroni 用于配置本地 PostgreSQL 实例并通过 etcd 与其他实例协调。
- etcd 是分布式强一致性的 KV 存储,常用于 Kubernetes。
- 集群由实验室中不同硬件上的三台虚拟机组成,资源需求低。
- 通过 HAProxy 连接集群,检查主实例并转发连接。
- 测试时关闭主实例查看故障及更新配置。
- 作者认为 Kubernetes 不适合有状态工作负载,暂不将 PostgreSQL 放入 Kubernetes。
重要细节: - Patroni 暴露的 HTTP 服务器返回基本状态信息及主从实例标识。
- Kubernetes 部署有关联的 LoadBalancer 服务,可直接连接。
- 作者最初想写设置步骤但现有 Patroni 文档已很完善。
- 后续目标是使 Vault 实例高可用并可能移入 Kubernetes。
- 欢迎在 fediverse 上反馈和评论,也可通过 ko-fi 支持。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。