Amazon CloudFront 和 EC2:全局负载平衡

Amazon CloudFront 和 EC2:全局负载平衡

我们有一个应用程序,它将在 S3 中存储和提供大量数据,供全球用户使用,从而最大程度地降低延迟。因此,我们一直在使用 Amazon CloudFront 进行测试,并获得了良好的结果。

但是,我们需要一个薄的中间件层(用于安全性等),我们希望将其放在 EC2 中。由于安全限制,此中间件层将从 S3/CloudFront 执行文件流式传输:

S3/CloudFront -> EC2 -> 客户端

我们可以按地理分布 EC2 节点(美国东部/西部和爱尔兰),但问题是欧盟的客户会访问我们的美国服务器并从那里获取数据,从而使 CloudFront 的大部分性能优势变得毫无意义。我一直在研究 EC2 文档,但我找不到内置方法来获取像 CloudFront 一样的地理分布版本的 EC2。

弹性负载平衡听起来像是可行的方法,但我似乎找不到基于路由进行指导的方法...最好是,我们希望将 EC2/S3/等之外的东西的数量保持在最低限度(原因很明显)。

有什么想法可以在 EC2/S3 框架内实现吗?DNS/路由技巧?

谢谢!

答案1

使用中间层通常会抵消分布式 CDN 的优势,因为您只会在大型中央数据中心拥有几个节点来提供内容,而不是许多边缘缓存节点。如果您的计划确实需要先通过服务器传输内容,那么请跳过 CloudFront 并坚持使用 S3,因为您不会从中获得任何好处。

更好的方法是将“安全等”的含义形式化,看看是否可以使用 CDN 内置的身份验证和访问控制。S3 和 Cloudfront 使用签名来提供广泛控制控制谁可以访问内容,你甚至可以创建限时 URL这些 URL 将在几小时或几分钟后过期。您的网站可以创建这些特殊的 URL,这样用户就无法深度链接到内容或与其他人共享链接,并且通常提供足够好的安全性,让您仍然能够从边缘缓存中受益。

我不太熟悉亚马逊的文档,但 Windows Azure 也有这样的概念:共享访问签名它可以让你委托上传或下载的权限,而无需泄露你的私钥。最近有一个9 频道的 Cloud Cover 节目它很好地描述了如何创建共享访问签名以及如何使用它们来保护内容和在 CDN 上委托权限。

答案2

您可以使用支持根据用户所在国家/地区将请求路由到不同服务器的 DNS 服务,但如果您从 EC2 提供数据,则使用 Cloudfront 可能毫无意义,而且从外观上看,使用 S3 也没有意义,因为您总是从您的 EC2 实例发送数据。

也许,如果您提供更多有关发送什么类型的数据的信息,可能会出现更好的解决方案。

答案3

您可以部署全局负载平衡解决方案,利用地理位置邻近性将客户端(通过 DNS 答案)引导到最近的数据中心。您可以在云中运行软件解决方案(在您的案例中为 EC2),例如 Zeus GLB。您甚至可以获取免费评估版并在您的环境中进行测试。

相关内容