最佳的AWS架构?

目标是尽可能多的冗余,以便我们可以快速恢复实例失败或任何其他问题。 我们现在运行的Rails WebApp的AWS设置如下:

  • EC2实例,我们有一个AMI的初始设置。 每当我们对实例configuration进行更改时,我们也会创build新的AMI。
  • 代码库,实例用户目录以及一些configuration文件位于EC2实例挂载的EBS卷(文件是rsynced每晚或符号链接)
  • EBS卷到S3存储桶的全周备份和每晚增量式备份
  • WebApp使用RDS托pipe数据库设置为10天的可恢复性

任何人有任何build议,使这更强大? (我们几乎被裤子夹住,不想再发生这种事情)

您也可以运行多个EC2实例并在它们之间进行负载平衡。 另外,如果它不在那里,你的正常运行时间应该高于99.99%。 从我所了解的情况来看,单个EC2实例的正常运行时间大约为99.95或99.5%,负载均衡,火箭达到99.99%或更高,通常达到99.999%+的范围。 无论哪种方式,也可以帮助…

…另一个想法是离开一个EC2热插拔。 还可能保持一个RDS存储库热插拔,以防万一生产副本损坏或一些这样的问题。

…和另一个想法,保持一个EC2实例引导与MySQL,作为最后一个紧急副本,如果有什么与RDS副本。

…以及最后的想法,在Rackspace或其他RoR友好的云主机等次云中运行热插拔或负载均衡 – 或热插拔和负载均衡的云托pipe服务。

希望有所帮助。 🙂

我想第二个,阿德龙。 如果你需要更多的可用性,那么负载均衡就是要走的路。

build议的设置

  1. 获取托pipe的DNS服务,如dnsmadeeasy或dyndns 。 [这个想法是获得一个全球性的服务,允许以极低的TTL进行循环负载平衡。 API是顺利集成的一个优点。)
  2. 两个弹性负载均衡器(ELB)用于故障切换。
  3. 背后有一组应用服务器。

当然,ELB需要对configuration的应用服务器进行健康检查。

如果ELB不适合你(例如有限的吞吐量或最终一致;-)),那么看看Haproxy 。 这是一个伟大的软件。 你必须在两个独立的实例上运行它 – 我会去c1.mediumm1.smalltypes的实例。

监测和警报

所有组件的监视设置也非常重要。 不仅仅是为了警报,而且也是为了容量规划。

我build议你看看AWS CloudWatch或像ServerDensity这样的服务。 这取决于您想要在内部构build多less,例如,进入ServerDensity并设置监视和警报更容易,而CloudWatch需要另一个解决scheme来提取数据并分析数据,然后将其提供给警报。