Patroni 和 etcd - AWS 规范性指导

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

Patroni 和 etcd

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

Patroni 还提供了 API 来检查 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 还支持诸如监视程序之类的设备,以避免脑裂问题。有关脑裂问题和监视程序的更多信息,请参阅 Patroni 文档中的监视程序支持

架构

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

Patroni 架构

图表显示了以下工作流程:

  1. 创建 EC2 实例。

  2. 安装 PostgreSQL 数据库。

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

  4. 创建和配置网络负载均衡器。

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

注意事项

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

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

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

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