AWS多区域Web应用程序

时间:2016-03-04 00:33:25

标签: amazon-web-services

我的网站(EC2,RDS,VPC,S3)位于欧盟(爱尔兰),我想让来自美国和亚洲的用户更容易访问。

  1. 我应该在新地区创建新实例(EC2,RDS,VPC,S3)吗?或者还有另一种方法可以做到这一点?
  2. 如果我有更多EC2实例,我应该如何为每个实例部署更新?
  3. 使用来自世界各个角落的小延迟使AWS网站轻松易用的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

  

我应该在新区域中创建新实例(EC2,RDS,VPC,S3)吗?

如果您从图中了解预算考虑因素,那么在世界各地的每个AZ中创建实例并将地理流量传播给它们将是一个很好的考虑因素。

  

或者还有另外一种方法可以做到这一点?

从实施和可维护性以及预算考虑中,最简单的方法可能是实现Akamai,CloudFlare等地理边缘缓存。

Akamai非常昂贵,但CloudFlare has some free and very cheap plans

使用边缘缓存意味着可以从最近的全局边缘点向客户端提供静态缓存内容,而无需针对区域优化AWS基础架构。

例如 - 如果您从爱尔兰请求您的主页,它可以从爱尔兰边缘缓存位置提供,而如果我从新西兰请求它,它可以从澳大利亚边缘缓存位置提供 - 这不是&#39 ; t为您的AWS设置添加任何复杂性。

在CloudFlare(例如)中您的页面的缓存版本不存在的情况下,它将点击您的AWS源服务器以获得结果。这将导致地理性能变化,但您可以将其与在每个区域中实施EC2实例的成本以及实际到达具有缓存的基础架构的命中数减少进行交换。

  

如果我有更多EC2实例,我应该如何为每个实例部署更新?

这在很大程度上取决于您的Web应用程序的复杂性。

对于更简单的应用程序,您可以使用Elastic Beanstalk轻松地将更新部署到所有EC2实例并管理自动缩放。

对于更复杂的安排,您可以选择使用CodeCommitCodePipelineCodeDeploy的组合来实现相同的目标。

第三,始终可以选择使用自定义脚本和AWS API调用的组合构建自己的部署工具。或者使用a tool that has already been created for this purpose

  

使用来自世界各个角落的小延迟使AWS网站轻松易用的最佳方法是什么?

这是一个相当广泛而复杂的问题。

我的建议是尽可能使用延迟加载,尽可能地缓存所有内容,在其生命周期的一英寸内调整您的Web服务器配置(如果您正在使用Varnish之类的话,请使用http://i.imgur.com/WznK3pT.png之类的内容nginx),尽可能优化所有媒体资产等。

对于媒体资产,您可以使用CDN(如S3或CloudFront)来处理请求,而不是将其存储在EC2实例上。

到目前为止,你可以做的最重要的事情就是放入边缘缓存(前面讨论过)。如果这样做,您的AWS性能就不那么重要了。