即使我的服务器关闭,CDN仍然可以工作吗?


10

我是一个网站所有者,打算使用Amazon的Cloudfront S3。我一直在阅读有关CDN可以做什么的所有内容,但我仍然有未解决的问题。

即使我的主服务器出现故障,CDN仍然可以工作吗?这就是我对此感兴趣的主要原因。因为,在马里,我的服务器通常由于电源故障而频繁停电。


3
您可能需要考虑使用CloudFlare,它是a)免费的,并且b)可以在中断期间保持您的静态页面。
ceejayoz

Answers:


12

这取决于谁托管您的CDN。如果您将网站托管在一台服务器上,而CDN托管在第三方,​​那么当您的网站关闭时,您的CDN可能会保持活动状态。但是,事实并非如此,因为某些CDN仅分发可以验证的内容在您的网站上。

附带说明,CDN不能托管整个网站。因此,如果您想使用一个替代虚拟主机或将其用作某种故障转移计划,那么您将陷入困境。

TL; DR-您必须询问CDN提供商。


10

CDN旨在实现可伸缩性和性能,但并非旨在实现高可用性。在任何给定时间,他们可能都需要访问原始文件。

大多数人使用它们来存储静态文件,例如图像,css和javascript文件。可以将其中一些配置为缓存HTML,但这仅在您拥有完全静态的网站时才可以。如果是这种情况,您可以将整个事情托管在S3上,而根本不需要服务器。


5

通常,是的,取决于TTL。

使用CDN时,通常会为内容配置TTL(生存时间)。在决定绝对必须使用最新内容刷新缓存之前,这是缓存可以使用多长时间的最大值。例如,假设您将所有* .jpg URL配置为具有5分钟的TTL。

然后,如果您的服务器出现故障,您还有5分钟的时间将其重新启动,然后用户会注意到。好吧,至少对于.jpgs。好吧,至少对于碰巧已经预先缓存的.jpgs。

另外,某些CDN使用Akamai NetStorage之类的功能,您可以在其中将内容直接上传到CDN - CDN被提供了一些内容,并被告知可以先验地直接提供。由于从来没有开始过“按需”“拉”式缓存,因此当服务器关闭时,这当然应该可以工作。

正如其他张贴者所指出的那样,这不是CDN的设计目的,并且它们不提供任何保证这种行为有效的保证。它只是碰巧可以正常工作(当您看到它发生时,它真棒!)。当然,如果需要特定的技术详细信息,则必须联系您的提供商。


5

是的:即使您的站点关闭,CDN服务器仍将运行,这是处理重大中断的一个不错的选择。您对所发生的事情有相当多的控制权,因此您可以根据资源和优先级来定制体验。这些选项通常属于以下类别:

  1. 已配置用于缓存的对象(通常是通过设置Cache-Control标头)应一直可用,直到它们过期。某些CDN为CDN边缘服务器提供了从其他CDN服务器检索内容的能力,这可以在停机期间提供帮助,并且在原始服务器相对于CDN服务器具有较高延迟时,通常可以提高性能。

  2. 某些CDN提供了在后端服务器不可用时提供已过期内容的功能(例如,使用Fastly,您可以启用Varnish的宽限期或圣人模式)。显然,这对从未缓存过的内容没有帮助,但是在许多情况下,当您使服务器恢复在线状态时,它至少可以使您的核心主页,联系信息等保持在线。

  3. 大多数CDN都提供尝试多个后端服务器的功能,因此您可以拥有一个单独的故障转移站点,以提供对您的站点有意义的体验:故障转移到另一台服务器或功能降低的站点,静态HTML页面等。这对于灾难性的情况很有用。托管失败,因为您可以选择托管在完全不同的公司,或者在Akamai NetStorage之类的情况下,直接与CDN提供程序托管,这样它们将支持整个堆栈。

除第三个选项外,您无法控制CDN服务器上将缓存的内容,因此该过程中最重要的部分是确定在各种功能不可用时如何降低网站的性能:例如,如果您拥有即使JavaScript完全失败,合理的HTML内容(即使是更多的高级功能在后台悄然失效),即使是大多数信息驱动的网站,也可能只能使用基本页面内容来运行。


很棒的总结!Akamai可以Serve stale if unable to validate选择,这样当原点断开时,即使达到TTL,它也可以提供内容。
LeOn-韩立

@Leonli第二点可能也可以使用指向RFC 5861的链接,因为我相信CloudFlare Cache-Control: stale-if-error现在也支持。
克里斯·亚当斯

2

大多数CDN都从源(在本例中为服务器)起的一段时间(TTL)内缓存(动态)内容。在Amazon的Cloudfront管理控制台中,说明了S3存储桶的缓存控制。

  1. Amazon S3的默认行为是将对象缓存24小时。

  2. 您可以通过在源服务器上提供/写入Cache-Control标头或Expires标头来影响默认行为。

    • 当您使用Cache-Control max-age标头时,最小值为0。这时,Amazon将满足您的原始服务器的要求,每次都会检查对象是否已更改。

    • 当您对对象使用Expires标头时,Amazon直到那个日期才会联系您的原始服务器。

我希望这可以澄清亚马逊的行为。


0

我曾在CDN担任支持工程师超过一年,我会说这里的所有答案都很棒,但IMO @ Chris-Adams的答案最好(如果可以的话,我会投票)。

我们的客户要做的一件事是将www指向CDN,将TLD 301指向www。如果对象TTL过期,则边缘将提供过期内容(如果缓存中可用)。

话虽如此,如果正常运行时间(和新鲜的内容)对您来说很重要,那么我会考虑将您的出身(我知道的屁股痛)转移到没有频繁停电的主机上。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.