Patroni 和 etcd - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Patroni 和 etcd

我们推荐 Patroni 作为解决方案,为高可用性提供自动故障转移管理。Patroni 是一款适用于 PostgreSQL 数据库的开源自动故障转移管理器。您可以使用 Patroni 作为模板,使用 Python 和分布式配置存储(例如 etcd)来创建自己的自定义 HA 解决方案,以实现最大的可访问性。

Patroni 还提供 APIs 检查 PostgreSQL 服务的状态以及每个数据库实例或节点的角色的功能。您必须在每个数据库实例上安装 Patroni 才能使用 etcd(分布式配置存储)。

默认情况下,Patroni 将 PostgreSQL 配置为异步复制。选择复制方法取决于您的业务注意事项。Patroni 是设置 HA 的最佳工具之一,因为它具有高度的可配置性。以下是使用 Patroni 的一些优点:

  1. 在不同的复制模式(同步和异步)之间切换很容易。

  2. Patroni 有一个丰富的 REST API。Patroni 自己使用此 API 在领导者竞赛期间通过使用HAProxy或其他负载均衡器执行 HTTP 运行状况检查来执行故障转移。

  3. Patroni 必须暂时停止管理集群,同时仍将集群状态保留在分布式配置存储 (DCS) 中。例如,您不希望在手动维护时段内进行故障转移。Patroni 提供暂停和恢复命令,因此您可以避免不必要的停机时间。

  4. 为了避免脑裂问题,Patroni必须确保在领导密钥在DCS中过期后,PostgreSQL不会接受任何交易提交。Patroni还支持诸如Watchdog之类的设备,以避免大脑分裂问题。有关脑裂问题和看门狗的更多信息,请参阅 Patroni 文档中的看门狗支持

架构

下图显示了使用 Patroni 和 etcd 在 EC2 亚马逊上为本地 PostgreSQL 数据库设置 HADR 的架构。

Patroni 架构

图表显示了以下工作流:

  1. 创建 EC2 实例。

  2. 安装一个 PostgreSQL 数据库。

  3. 在实例上安装和配置 Patroni。 EC2

  4. 创建和配置 Network Load Balancer。

  5. etcd(适用于 Patroni)中配置每个 PostgreSQL 数据库以获得 HA。

注意事项

我们建议您在使用 Patroni 开始迁移之前考虑以下几点:

  • 用户必须具有 PostgreSQL 管理和 DCS 专业知识才能使用 Patroni。

  • Patroni 的学习曲线很陡峭,有许多配置选项可供选择。

  • 你必须有专用 Patroni 的额外端口。