Amazon CloudFront和EC2:全球负载平衡

我们有一个应用程序,它将在S3中向全球用户存储和提供大量数据,并将延迟降至最低。 因此,我们一直在使用Amazon CloudFront进行testing,并取得了令人满意的结果。

但是,我们需要一个精简的中间件层(做安全等),我们想把它放在EC2中。 由于安全限制,该中间件层将从S3 / CloudFront进行文件stream式传输:

S3 / CloudFront – > EC2 – >客户端

我们可以在地理上分布EC2节点(美国东部/西部和爱尔兰),但问题是,欧盟的客户会打我们的美国服务器,并从那里获取数据,从而使CloudFront的性能优势大打折扣。 我一直在挖掘EC2文档,但是我找不到一个内置的方式来获得EC2的地理分布版本。

弹性负载平衡听起来像是要走的路,但我似乎无法find一种方式,基于路由指导…最好是,我们希望保持在EC2 / S3 / etc之外的东西的数量。 (出于显而易见的原因)。

任何想法如何在EC2 / S3框架内做到这一点? DNS /路由技巧?

谢谢!

使用中间层通常会否定分布式CDN的好处,因为在大型中央数据中心中只有less数节点为内容提供服务,而不是为许多边缘caching节点提供服务。 如果您的计划确实需要先通过服务器pipe理内容,那么请跳过CloudFront,并坚持使用S3,因为您不会从中获益。

一个更好的方法是正式化你的意思是“安全等” 并查看是否可以使用内置于CDN中的身份validation和访问控制。 S3和Cloudfront使用签名来提供对谁可以访问内容的广泛控制 ,甚至可以创build有时间限制的URL ,这些URL将在几小时或几分钟后过期。 这些特殊的URL可以由您的网站创build,以便用户不能深入链接到内容或与其他人分享链接,并且通常提供足够好的安全性,仍然可以让您从边缘caching中受益。

我不是很熟悉亚马逊文档,但是Windows Azure也有共享访问签名的概念,可以让您委派上传或下载权限,而不必释放您的私钥。 第9频道最近有一个Cloud Cover插曲 ,描述了如何创build共享访问签名以及如何使用它们来保护CDN上的内容和委派权限。

您可以使用支持基于用户国家/地区的路由请求的DNS服务到不同的服务器,但是如果您使用的是EC2的数据,则使用Cloudfront可能没有意义,并且从使用S3的angular度看,没有意义,因为你总是从你的EC2实例发送数据。

也许如果你提供了更多关于你发送什么样的数据的信息,更好的解决scheme可能会变得可见。

您可以部署一个全球负载平衡解决scheme,使用地理邻近度(通过DNS答案)将客户端引导至最近的数据中心。 您可以在云中运行软件解决scheme(例如EC2),例如Zeus GLB。 您甚至可以免费评估并在您的环境中进行testing。