当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《使用PGPool-ii在AmazonEC2上部署高可用性Postresql9.0》经验,为你挑选了1个好方法。

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

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

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

然后,我们将在仅具有PGSQL的单独Amazon实例上拥有2个数据库服务器.这两个PG服务器将由位于3个前端服务器上的PGPools使用.

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

如果没有,是否有其他/更好的架构,以避免使用亚马逊SPOF?

非常感谢您的回复.



1> organicveggi..:

几个想法.首先,我们通过使用Heartbeat,Pacemaker和ElasticIP来避免像PGPool那样的SPOF.运行两个(或更多)专用于PGPool的实例.将ElasticIP分配给其中一个.设置Heartbeat和Pacemaker来监控PGPool.在故障转移时,让Pacemaker运行一个脚本,将ElasticIP分配给新的主服务器(以Pacemaker术语表示DC).如果您只运行两个节点,请确保在Pacemaker中禁用仲裁功能,因为如果一个节点从总共两个节点中断开,则无法达到仲裁.

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

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

此外,虽然我没有尝试在每个Application Server上运行PGPool-ii,但我不确定这是否有效.如果master数据库失败,我认为每个PGPool实例都将竞争处理故障转移.也许我对PGPool-ii不够熟悉,无法理解处理它的最佳方法.

至于提到plproxy的人,我认为他们与PGBouncer相混淆,后者推荐与plproxy一起使用.plproxy是一个分区系统,而不是负载均衡器.也就是说,PGBouncer也不是负载均衡器 - 它是一个连接池系统.PGBouncer不提供负载平衡功能.实际上,PGBouncer的FAQ明确建议使用像HAProxy这样的TCP负载均衡器.

此外,关于具有Rackspace解决的垂直可伸缩性问题的Amazon的陈述是不正确的.使用Amazon EC2实例,您始终可以停止实例并将其升级为更大的实例类型.亚马逊和Rackspace都不支持动态更改实例类型.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有