gpt4 book ai didi

postgresql - 使用 PPGool-ii 在 Amazon EC2 上部署高可用性 Postresql 9.0

转载 作者:行者123 更新时间:2023-11-29 11:14:55 31 4
gpt4 key购买 nike

我们有一个使用 Postgresql 9.0 和 PPGool-ii 的现有 Web 应用程序。我正在考虑将我们的基础设施迁移到 Amazon EC2,并受到以下链接的启发:http://aws.typepad.com/aws/2008/12/running-everything-on-aws-soocialcom.html使用类似的架构。

由于 Amazon RDS 不支持 PGSQL,我们将坚持使用 PPGool-ii 来对不同数据库服务器上的查询进行负载平衡,并使它们在彼此之间保持同步。

因此我们计划部署 3 个前端 Web 服务器,其中包含以下内容:- Web 服务器 + PHP 代码- PPGool-ii

然后,我们将在单独的 Amazon 实例上有 2 个数据库服务器,只有 PGSQL。这 2 个 PG 服务器将由位于 3 个前端服务器上的 PPGools 使用。

我的问题是,我不知道这个解决方案是否足够可靠,因为多个 PPGool 将访问多个 PGSQL 服务器。大多数 PPGool 示例都演示了使用 N 个底层 PGSQL 服务器的单个 PPGool。在每台 Web 服务器上部署一个 PPGool 实例是一个好习惯吗?

如果没有,是否有任何其他/更好的架构来避免使用 Amazon 时发生单点故障?

非常感谢您的回复。

最佳答案

几个想法。首先,我们通过使用 Heartbeat、Pacemaker 和 ElasticIP 来避免 PGPool 之类的 SPOF。运行两个(或更多)专用于 PPGool 的实例。为其中之一分配 ElasticIP。设置 Heartbeat 和 Pacemaker 来监控 PPGool。在故障转移时,让 Pacemaker 运行一个脚本,将 ElasticIP 分配给新的主服务器(Pacemaker 术语中的 DC)。如果您只运行两个节点,请确保在 Pacemaker 中禁用仲裁功能,因为如果两个节点中的一个节点出现故障,您将无法拥有仲裁。

要利用 ElasticIP,请从 Amazon 外部对您的 ElasticIP 执行反向 DNS 查找。这将为您提供一个映射到应以 amazonaws.com 结尾的 ElasticIP 的 DNS 名称。从 EC2 实例对以 amazonaws.com 结尾的域名进行的 DNS 查找实际上将解析为已分配 ElasticIP 的实例的内部 IP 地址。您可以将您的应用程序服务器直接指向 ElasticIP 的 DNS,或者假设您正在运行自己的 DNS,您可以创建一个引用 ElasticIP DNS 的 CNAME。

也就是说,使用 ElasticIP 进行故障转移有一个很大的问题。重新分配 ElasticIP 最多需要 120 秒才能生效。大部分时间花在等待更改通过 Amazon 的 DNS 服务器传播。

此外,虽然我没有尝试在每个应用程序服务器上运行 PGPool-ii,但我不确定这是否可行。如果主数据库出现故障,我认为每个 PPGool 实例都会竞争处理故障转移。也许我对 PPGool-ii 不够熟悉,无法理解处理该问题的最佳方法。

至于提到 plproxy 的人,我认为他们将其与 PGBouncer 混淆了,建议与 plproxy 一起使用。 plproxy是分区系统,而不是负载均衡器。也就是说,PGBouncer 也不是负载均衡器——它是一个连接池系统。 PGBouncer 不提供负载均衡功能。事实上,PGBouncer 的常见问题解答明确建议使用像 HAProxy 这样的 TCP 负载均衡器。 .

另外,Rackspace 解决的亚马逊存在垂直可扩展性问题的说法是不正确的。使用 Amazon EC2 实例,您始终可以停止实例并将其升级到更大的实例类型。 Amazon 和 Rackspace 都不支持即时更改实例类型。

关于postgresql - 使用 PPGool-ii 在 Amazon EC2 上部署高可用性 Postresql 9.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6940265/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com