本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
通过 CloudFront 源站故障转移优化高可用性
对于需要高可用 CloudFront 性的场景,您可以设置源站故障转移。要开始使用,您需要创建一个具有两个源的源组:一个主源和一个辅助源。如果主源不可用,或者返回表示失败的特定 HTTP 响应状态代码,则 CloudFront 会自动切换到辅助源。
要设置源故障转移,您必须具有一个至少包含两个源的分配。接下来,为包含两个源(将其中一个设置为主源)的分配创建一个源组。最后,创建或更新缓存行为以使用源组。
要查看用于设置源组和配置特定源故障转移选项的步骤,请参阅创建源组。
为缓存行为配置源故障转移后, CloudFront 对查看者请求执行以下操作:
-
当有缓存命中时, CloudFront 返回请求的对象。
-
当出现缓存未命中时,会将请求 CloudFront 路由到源组中的主要来源。
-
当主源返回未配置为故障转移的状态码(例如 HTTP 2xx 或 3xx 状态码)时,将请求的对象 CloudFront 提供给查看者。
-
发生以下任何情况时:
-
主源返回您为故障转移配置的 HTTP 状态代码
-
CloudFront 无法连接到主源
-
来自主源的响应需要太长时间(超时)
然后将请求 CloudFront 路由到起源组中的次要来源。
注意
对于某些用例,例如流式传输视频内容,您可能需要快速故障转移 CloudFront 到辅助来源。要调整 CloudFront 故障转移到辅助源的速度,请参阅控制源超时和尝试次数。
-
CloudFront 将所有传入的请求路由到主源,即使之前的请求故障转移到辅助源也是如此。 CloudFront 只有在向主源发出的请求失败后,才会向辅助源发送请求。
CloudFront 仅当查看器请求的 HTTP 方法为GET
、或时HEAD
,才会故障转移到辅助源OPTIONS
。 CloudFront 当查看者发送不同的 HTTP 方法(例如POST
、等)时PUT
,不会进行故障切换。
下图阐述了源故障转移的工作原理。
创建源组
创建源组
登录Amazon Web Services Management Console并打开 CloudFront 控制台,网址为https://console.amazonaws.cn/cloudfront/v4/home
。 -
选择要为其创建源组的分配。
-
选择源选项卡。
-
确保此分配有多个源。否则请添加第二个源。
-
在 Origins(源)选项卡的 Origin groups(源组)窗格中,选择 Create origin group(创建源组)。
-
选择源组的源。添加源后,使用箭头设置优先级,即哪个源是主源组,哪个源是辅助源。
-
为此源组输入一个名称。
-
选择要用作故障转移条件的 HTTP 状态代码。您可以选择以下状态代码的任意组合:400、403、404、416、500、502、503 或 504。当 CloudFront 收到包含您指定的状态代码之一的响应时,它会故障转移到辅助源。
注意
CloudFront 仅当查看器请求的 HTTP 方法为
GET
、或时HEAD
,才会故障转移到辅助源OPTIONS
。 CloudFront 当查看者发送不同的 HTTP 方法(例如POST
、等)时PUT
,不会进行故障切换。 -
选择 Create origin group(创建源组)。
有关为分配指定源组的信息,请参阅名称。
控制源超时和尝试次数
默认情况下,在故障转移到辅助源之前, CloudFront 会尝试连接到源组中的主源长达 30 秒(3 次连接尝试,每次尝试 10 秒)。对于某些用例,例如流式传输视频内容,您可能需要更快地故障转移 CloudFront 到辅助来源。您可以调整以下设置以影响 CloudFront 故障转移到辅助源的速度。如果源是次要来源,或者源不是源组的一部分,则这些设置会影响向查看者 CloudFront 返回 HTTP 504 响应的速度。
要更快地进行故障转移,请指定更短的连接超时、更少的连接尝试次数,或者同时指定两者。对于自定义源(包括配置为 静态网站托管的 Amazon S3 存储桶源),您还可以调整源响应超时。
- 源连接超时
-
源连接超时设置会影响尝试与源建立连接时 CloudFront 等待的时间。默认情况下, CloudFront 等待 10 秒钟才能建立连接,但您可以指定 1—10 秒(含)。有关更多信息,请参阅连接超时。
- 源连接尝试次数
-
源连接尝试次数设置会影响 CloudFront 尝试连接到源的次数。默认情况下, CloudFront 尝试连接 3 次,但您可以指定 1—3(包括在内)。有关更多信息,请参阅连接尝试次数。
对于自定义源(包括配置了静态网站托管的 Amazon S3 存储桶),此设置还会影响在源响应超时时时 CloudFront 尝试从源获取响应的次数。
- 源响应超时
-
注意
这仅适用于自定义源。
源站响应超时设置会影响 CloudFront 等待从源站收到响应(或接收完整响应)的时间。默认情况下, CloudFront 等待 30 秒,但您可以指定 1—60 秒(含)。有关更多信息,请参阅响应超时(仅自定义源)。
如何更改这些设置
在 CloudFront 控制台
-
对于新源或新分配,您可以在创建资源时指定这些值。
-
对于现有分配中的现有源,可在编辑源时指定这些值。
有关更多信息,请参阅 您创建或更新分配时指定的值。
将源故障转移与 Lambda@Edge 函数结合使用
您可以将 Lambda @Edge 函数与使用源组设置的 CloudFront 分布一起使用。要使用 Lambda 函数,请在创建缓存行为时在源组的源请求或源响应触发器中指定它。当您将 Lambda@Edge 函数与源组一起使用时,对于单个查看器请求可以触发两次此函数。例如,考虑以下情景:
-
使用源请求触发器创建 Lambda@Edge 函数。
-
Lambda 函数在向主源 CloudFront 发送请求时触发一次(缓存未命中)。
-
主源使用为故障转移配置的 HTTP 状态代码进行响应。
-
当向辅助源 CloudFront 发送相同的请求时,会再次触发 Lambda 函数。
下图阐述了源故障转移在源请求或响应触发器中包含 Lambda@Edge 函数时的工作方式。
有关如何使用 Lambda@Edge 触发器的更多信息,请参阅为 Lambda@Edge 函数添加触发器。
将自定义错误页与源故障转移结合使用
可以将自定义错误页面与源组结合使用,方式与将其与未为源故障转移设置的源结合使用的方式类似。
使用源故障转移时,您可以配置 CloudFront 为返回主源或辅助源(或两者)的自定义错误页面:
-
返回主源的自定义错误页面-如果主源返回的HTTP状态代码未配置为故障转移,则将自定义错误页面 CloudFront 返回给查看者。
-
返回辅助来源的自定义错误页面-如果 CloudFront 收到来自辅助来源的故障状态代码,则 CloudFront 返回自定义错误页面。
有关将自定义错误页面与配合使用的更多信息 CloudFront,请参阅生成自定义错误响应。