使用 AWS CloudFront 在重启后幸存下来

Surviving a reboot with AWS CloudFront

我们都知道 CloudFlare 有一项功能,如果您的服务器离线,它会开始提供您网站的缓存版本 - 无论是出现严重错误,还是您只是简单重启。

我一直在网上搜索如何用 CloudFront 做同样的事情,但我似乎无法挖掘出与此事相关的任何类型的资源。

有什么指点吗?

最好的办法是放置一个负载平衡器(例如,如果特定服务器掉线,使用 Elastic Load Balancer) in front of your server and spin up another server which replicates your existing site. You can also use an Elastic IP Address 重新路由流量。

然后您可以使用共享的 MySQL 服务器(例如多可用区配置中的 AWS RDS 以提供额外的冗余)和 GlusterFS 来保持两个 Web 服务器上的网站文档根目录同步。 DigitalOcean 在这里有一个指南:https://www.digitalocean.com/community/tutorials/automating-the-deployment-of-a-scalable-wordpress-site

我强烈推荐 CloudFlare 而不是 AWS CloudFront,CloudFlare 有许多其他好处(例如 CloudFlare has HTTP2 support where CloudFront does not)。

CloudFront 会从您的来源获取您的资产,根据第一个查看者请求将它们存储在边缘位置,并 return 为后续查看者请求缓存版本。

对象在边缘站点过期后,CloudFront 将再次联系源以确定缓存是否有对象的最新版本,如果没有,则获取最新版本。如果此时您的原始服务器不可用,CloudFront 将 return [陈旧] 对象的缓存版本提供给查看器。

请在此处查看 CloudFront 文档 - http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/HTTPStatusCodes.html#HTTPStatusCodes-no-custom-error-pages

始终将您的流量指向 CloudFront。 CloudFront 将在 as-needed 的基础上从您的服务器中提取内容(即,如果 CloudFront 已经具有页面或其他资源的 fresh-enough 缓存副本,它将提供该缓存副本)。如果您的服务器由于重启或出现问题而关闭,并且 CloudFront 有您页面的缓存副本,CloudFront 将提供缓存副本,无论它有多新鲜。

如果您需要确保特定资源在服务器出现故障之前位于 CloudFront 的缓存中,只需使用 Web 浏览器访问该页面即可。这将使 CloudFront 从其缓存中提供页面或从您的原始服务器中提取页面;在任何一种情况下,最终结果都是页面缓存在 CloudFront 中。

Cloudfront 只缓存静态内容。它只不过是一个CDN。

如果您的服务器需要重启,我假设它是一个标准的网络堆栈。如果是这样,您应该在多台机器上使用 ELB。如果您认为云端正在做大部分工作,您可能可以摆脱微实例。

如果您有静态网站,只需使用 S3。它不会重新启动,您可以轻松地通过 cloudfront 使用 CDN。不需要ELB