【发布时间】:2016-03-04 00:33:24
【问题描述】:
我的网站(EC2、RDS、VPC、S3)位于欧洲(爱尔兰),我想让美洲和亚洲的用户更容易访问它。
- 是否应该在新区域中创建新实例(EC2、RDS、VPC、S3)?或者还有其他方法可以做到这一点?
- 如果我将拥有更多 EC2 实例,我应该如何为每个实例部署更新?
- 什么是让 AWS 网站轻巧且可在世界各个角落以小延迟访问的最佳方式?
【问题讨论】:
我的网站(EC2、RDS、VPC、S3)位于欧洲(爱尔兰),我想让美洲和亚洲的用户更容易访问它。
【问题讨论】:
我应该在新区域创建新实例(EC2、RDS、VPC、S3)吗?
如果您不考虑预算,那么在世界各地的每个可用区创建实例并将地理流量分配给它们将是一个很好的考虑因素。
或者还有其他方法可以做到吗?
也许从实施和可维护性以及预算考虑来看,最简单的方法是实施地理边缘缓存,如 Akamai、CloudFlare 等。
Akamai 非常昂贵,但 CloudFlare has some free and very cheap plans。
使用边缘缓存意味着静态缓存内容可以从最近的全球边缘点提供给您的客户,而无需针对区域优化您的 AWS 基础设施。
例如 - 如果您从爱尔兰请求您的主页,它可能从爱尔兰边缘缓存位置提供,而如果我从新西兰请求它,它可能从澳大利亚边缘缓存位置提供 - 这不是为您的 AWS 设置增加任何复杂性。
在 CloudFlare 中不存在页面缓存版本的情况下(例如),它将访问您的 AWS 源服务器以获取结果。这将导致地理性能变化,但您需要权衡在每个区域实施 EC2 实例的成本以及实际到达您的基础设施且缓存到位的命中数量减少。
如果我将拥有更多 EC2 实例,我应该如何为每个实例部署更新?
这在很大程度上取决于您的网络应用程序的复杂性。
对于更简单的应用程序,您可以使用 Elastic Beanstalk 轻松将更新部署到您的所有 EC2 实例并管理您的自动扩展。
对于更复杂的安排,您可以选择使用CodeCommit、CodePipeline 和CodeDeploy 的组合来实现相同的目的。
第三,您始终可以选择结合使用自定义脚本和 AWS API 调用来构建自己的部署工具。或使用a tool that has already been created for this purpose。
让 AWS 网站轻巧且可在世界各个角落以小延迟访问的最佳方式是什么?
这是一个相当广泛和复杂的问题。
我的建议是尽可能使用延迟加载,尽可能缓存所有内容,在其生命周期内调整您的 Web 服务器配置(如果您使用的是 nginx,请使用 Varnish 之类的东西),优化尽可能多地使用您的所有媒体资产等。
对于媒体资产,您可以使用 CDN(如 S3 或 CloudFront)来处理请求,而不是将它们存储在 EC2 实例上。
到目前为止,您可以为此做的最重要的事情是放入边缘缓存(前面讨论过)。如果您这样做,您的 AWS 性能就不会那么令人担忧了。
【讨论】: