- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个使用 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/
我们正在考虑将 Slony 和 PPGool 作为我们应用程序中处理故障转移的备选方案 - 看起来我们至少需要两个数据库服务器,我们也可以利用负载平衡 - 在什么情况下 Slony 比 PPGool
我有一个带多可用区的 Postgres 9.4 RDS 实例,还有一个从属、只读副本。 到目前为止,负载平衡是在我的应用程序的业务层中进行的,但效率低下,我希望使用 PPGool,因此该应用程序与单个
我们有一个使用 Postgresql 9.0 和 PPGool-ii 的现有 Web 应用程序。我正在考虑将我们的基础设施迁移到 Amazon EC2,并受到以下链接的启发:http://aws.ty
我有一个使用 Postgres 数据库的 Java 应用程序,我正在尝试引入 PPGool 以扩展我的数据库。我遇到了 Postgres 抛出以下错误的问题:未命名的准备语句不存在。在启动 Postg
我已经成功地使用 PGpool 配置了我们的应用程序,我必须说,它非常棒。我试图在我们的应用程序中公开有关 PGPool 集群的信息,但我在使用 postgres 驱动程序通过 JDBC 使用“SHO
我是一名优秀的程序员,十分优秀!