2012-02-07 106 views
2

这是一个相当普遍的问题。假设我有三个ec2框:两个应用框和一个将nginx作为反向代理的框,将请求委托给两个应用框(我的数据库托管在其他地方)。现在,这两款应用程序可以吸收其中的失败,但第三个应用程序代表了单点故障。如何配置我的设置,以便反向代理服务器停止运行时,该站点仍然可用?Amazon aws上的故障转移代理?

我正在看keepalived和HAproxy。对我而言,这件事并不明显,对于初学者耳朵的任何帮助表示赞赏。

+0

一个可能相关的问题是,我可以在一个弹性IP地址后面有几个EC2实例吗?这样,我可以在那里放置两台带有反向代理的机器,如果一台机器出现故障,另一台机器继续运行? – 2012-02-07 01:14:55

回答

3

如果您的nginx没有比代理HTTP请求多得多,请查看Amazon Elastic Load Balancer。您可以设置两个(或更多)应用程序框,留下一些备用的应用程序框(为了始终保持两个或更多,如果需要),设置运行状况检查,在平衡器上使用SSL终止,使用粘性会话等等。

虽然有很多人希望看到为ELB设置弹性IP地址的能力,还有一些人提出了不错的理由,为什么它不需要。

我的建议是,你看看ELB documentation,因为它看起来完全符合你的需求。我也建议阅读这个interesting post关于这个问题的一个很好的讨论。

+0

我也被建议看看Nagios和Heartbeat。谢谢! – 2012-02-09 19:40:01

+0

是的。我的团队调查了Nagios,它很棒。但用于监控,而不是用于故障转移。您应该结合冗余(通过向负载平衡器和/或集群添加多个节点)**并使用像Nagios这样的监视工具。 – Viccari 2012-02-09 21:37:58

0

我认为如果您是初学者,那么您的最佳解决方案就是Amazon的Elastic Load Balancer(ELB)。它们自动扩展并实现高可用性的平衡器集群。因此,使用ELB服务可以减轻您评论的故障点。同样重要的是要记住,ELB比AWS中的两个实例便宜。当然,启动和维护起来更容易。

您看不到多个ELB,因为它是一项服务,所以您不必关心可用性。

其他重要的一点是,AWS弹性IPS没有分配给您的操作系统实例的NIC接口,因此在经典基础架构中使用虚拟IPS也很困难。

经过这个解释,如果你仍然希望Nginx作为AWS中的代理反向,因为你的理由,我认为你可以实现一个具有由Nginx实例组成的图层的自动缩放组。但是如果你不擅长自动缩放技术,那可能非常棘手。