本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Patroni 和 etcd
我们推荐 Patroni
Patroni 还提供 APIs 检查 PostgreSQL 服务的状态以及每个数据库实例或节点的角色的功能。您必须在每个数据库实例上安装 Patroni 才能使用 etcd(分布式配置存储)。
默认情况下,Patroni 将 PostgreSQL 配置为异步复制。选择复制方法取决于您的业务注意事项。Patroni 是设置 HA 的最佳工具之一,因为它具有高度的可配置性。以下是使用 Patroni 的一些优点:
-
在不同的复制模式(同步和异步)之间切换很容易。
-
Patroni 有一个丰富的 REST API。Patroni 自己使用此 API 在领导者竞赛期间通过使用HAProxy
或其他负载均衡器执行 HTTP 运行状况检查来执行故障转移。 -
Patroni 必须暂时停止管理集群,同时仍将集群状态保留在分布式配置存储 (DCS) 中。例如,您不希望在手动维护时段内进行故障转移。Patroni 提供暂停和恢复命令,因此您可以避免不必要的停机时间。
-
为了避免脑裂问题,Patroni必须确保在领导密钥在DCS中过期后,PostgreSQL不会接受任何交易提交。Patroni还支持诸如Watchdog之类的设备,以避免大脑分裂问题。有关脑裂问题和看门狗的更多信息,请参阅 Patroni 文档中的看门狗支持
。
架构
下图显示了使用 Patroni 和 etcd 在 EC2 亚马逊上为本地 PostgreSQL 数据库设置 HADR 的架构。

图表显示了以下工作流:
-
创建 EC2 实例。
-
安装一个 PostgreSQL 数据库。
-
在实例上安装和配置 Patroni。 EC2
-
创建和配置 Network Load Balancer。
-
在 etcd(适用于 Patroni)中配置每个 PostgreSQL 数据库以获得 HA。
注意事项
我们建议您在使用 Patroni 开始迁移之前考虑以下几点:
-
用户必须具有 PostgreSQL 管理和 DCS 专业知识才能使用 Patroni。
-
Patroni 的学习曲线很陡峭,有许多配置选项可供选择。
-
你必须有专用 Patroni 的额外端口。