在pipe理自己的群集(即不使用/支付Amazon Autoscale,Rightscale,Scalr等)的人员中,您如何pipe理EC2上的实例并处理(例如)故障转移? 我想知道是否大多数人最终只是写了自己的EC2 API的脚本,正如我怀疑的那样。
这当然是我们的方法:掀起我们自己的基于Python的基于Boto的监控/重新启动后台程序,在异地运行,监听来自我们实例的UDP保持活动。 失败时,我们快照卷,注册图像,启动新实例,删除旧卷等等。
每当我们经常在对脚本进行黑客攻击的时候,我认为必须有一些开源的工具来处理这些问题,并且没有Scalr的限制,但是我总是从Google两手空空。 (像Scalr这样的软件在受支持的软件集/版本/configuration方面相当有限,并且具有专门和IMO笨重的操作这些设置的方法。)
另外,Linux-HA / Pacemaker生态系统(Heartbeat,ldirectord等)听起来并不适合EC2 。 (但后来我发现这一点 – 虽然我不确定这是否是一个高质量的解决scheme)。
那么,我并不是想说明这个问题,而是总体思路就是将这种复杂性推向亚马逊pipe理的服务。
因此,在前端,您可以使用Amazon Elastic Load Balancing(ELB)来提供高度可用的负载平衡。 在后端,您使用Amazon Relational Database Service(托pipeMySQL),SimpleDB和S3进行存储。 所有这些都由亚马逊pipe理,并包含某种高可用性/故障转移处理。
这通常会留下您的Web应用程序服务器以及您可能使用的任何较less的常见服务器types(呈现服务器,自行安装的NoSQL数据存储库等)。
通常情况下,Webapp服务器通过内置于ELB中的健康检查进行处理。 当一个webapp服务器closures时,您可以接受一个小的性能下降,或者一直configuration超过您需要的+1服务器。 或者如果你的configuration很简单,那么当webapp服务器出现故障时,ELB和Cloudwatch可以自动为你创build一个新的webapp服务器。
您自己的自定义服务器是另一回事。 对于这些,这是真的,你是自己的,并需要与应用程序内置的方法,或与自定义脚本/开源HA工具磁带一起。
购买Rightscale的解决scheme可能太昂贵了。 但是,如果您需要高可用性,则价格较低的Amazon工具(如ELB,基本的CloudWatch警报(现在免费提供5分钟分辨率)或AutoScale)非常值得。
RightScale有一些关于如何自动执行EC2故障转移的精彩文章 。 虽然其中大多数向您展示了如何使用RightScale本身,但这些原则对于想要在EC2上设置故障转移体系结构的任何人来说都是一般性的,可能是有帮助的。
您所描述的问题(HA,监控自定义服务器,“导pipe粘贴”服务)通常由PaaS提供商处理。 在之前的回答中已经提到了Rightscale和Scalr,并且还有其他不错的select(请参阅这里查看一些PaaS选项:
https://stackoverflow.com/questions/9542784/looking-for-paas-providers-recommendations )
你应该考虑哪些提供者最适合你所需要的。
由于通知:我在为开源的PaaS提供商cloudify工作。
我最近在我们的工程博客上写了一篇关于如何将ELB与Auto Scaling结合使用来实现任何types应用程序的自动故障转移的文章。 它涵盖了如何使用ELB运行状况检查来ping您的应用程序的状态并触发自动缩放操作。
在两台服务器上安装心跳您将Elastic IP附加到“活动”服务器您可以通过启动API请求来configuration脚本以执行故障转移以获取弹性IP只要“备用”服务器获得弹性IP(需要大约30-60秒),它可以是主/主动。
我没有在这里提供的具体细节。
亚马逊已经提供了弹性负载平衡 …为什么重新发明轮子?