使用EC2可用区的最佳实践是什么?

5
我正在EC2上重新启动一个网站(每天有超过5百万次访问量),但我对如何在不同的数据中心部署节点感到困惑。我的最基本设置是两个节点在一个Varnish服务器后面。
那么我应该在不同可用区域中拥有两个Varnish实例,每个实例都有WWW节点,它们与共享的RDS数据库通信吗?每个Varnish实例可以使用Amazon的负载均衡器进行负载平衡。
具体操作如下:
一个负载均衡器连接以下内容:
- 位于弗吉尼亚州的Varnish服务器,它与其自己的us-east-x节点通信。 - 位于加利福尼亚州的Varnish服务器,它与其自己的us-west-x节点通信。
1个回答

7
我们广泛使用Amazon EC2进行负载均衡和容错处理。虽然我们仍未广泛使用Amazon提供的负载均衡器,但我们有自己的负载均衡器(在Amazon之外运行)。Amazon承诺负载均衡器永远不会崩溃,它们具有内部容错能力,但我还没有充分测试过。
通常,我们在每个可用区域托管两个实例。其中一个充当真实服务器的镜像服务器。如果其中一个服务器出现故障,我们将客户端发送到另一个服务器。但最近Amazon表现出单个可用区域经常出现故障的模式。
因此,我认为明智的技术是设置跨可用区域的服务器,正如您所提到的。我们使用Postgres,因此可以在实例之间复制数据库中的内容。使用9.0版本,有双向复制功能,非常适合两个服务器的负载均衡。这样,当两个服务器都正常运行时,它们都可以承担负载,但是当一个可用区域出现故障时,所有用户都将发送到一个服务器。由于有一个共享的数据库可用,所以用户去哪里并不重要。只是如果他们进入了错误的服务器,他们将体验到轻微的缓慢。
采用这种方法,您可以进行网站的串联更新。先更新一个并确保其正常运行,然后再更新下一个。因此,即使服务器无法升级,整个网站始终处于运行状态。

当一个可用区不可用时,您如何将客户发送到其他服务器? - Carson
我们的定制负载均衡器将每分钟从服务器进行负载检查。我们使用子域名URL来指向客户端。因此,如果集群宕机,我们会发送不同的子域名URL给他们。亚马逊负载均衡器充当抽象层,并在内部路由HTTP请求到服务器。它通过从您的服务器请求网页来检查可用性,每10秒钟检查一次。您可以只放置一个blank.html文件。如果实例宕机,则亚马逊将不会向该服务器发送任何请求。 - arunmur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接