问题概述
本文介绍天翼云CDN回源重试和探测机制。
回源重试机制
回源重试触发条件
以下回源失败场景均可能触发回源重试:
- 回源TCP连接失败。
- TCP连接成功但源站响应5XX、404状态码。
- 回源域名DNS解析失败。
CDN默认在回源TCP连接失败,以及回源域名DNS解析失败时进行重试;如需在回源TCP连接成功但源站响应5XX、404状态码时进行重试,需要提交工单给天翼云客服,并说明具体重试状态码,以及最大重试次数,由CDN技术人员进行人工配置。
回源重试粒度
天翼云CDN支持两种粒度的回源重试:以源站配置中的每个记录为粒度和以具体IP为粒度。如配置了回源重试,CDN默认以每个源站记录为重试粒度。
下面以具体示例来进行说明:
假设有两个源站,源站1为域名:test.ctyun.cn,源站2为IP:1.1.1.1,其中域名test.ctyun.cn解析到2个IP,分别为2.2.2.2和3.3.3.3。
- 如以源站记录为回源重试粒度,则某个指向源站1的2.2.2.2请求失败时,会重试下一个源站记录(可为域名也可以为IP),即本例中的源站2:1.1.1.1,而不是3.3.3.3。如本次重试失败,同时未达到最大重试次数上限,则会再次重试源站1,具体IP取决于2.2.2.2和3.3.3.3之间的轮询机制。
- 如以具体IP为粒度,则某个指向源站1中的IP:2.2.2.2请求失败时,会重试同个源站的下一个IP,即3.3.3.3,而不是1.1.1.1。如本次重试失败,同时未达到最大重试次数上限,则会再次重试下一个源,即这里的1.1.1.1。
回源探测机制
CDN不会主动进行回源探测。如回到某个源站请求失败时,CDN不会将失败结果直接返回给客户端,而是会进行重试,通过重试来规避因源站不稳定带来的访问体验受损问题。如果某个源站在一定周期内失败次数超过一定阈值(阈值可配),则CDN会将该源站放入不可用列表,并持续一段时间(时长可配),直到该时长过后才将对应源站记录重新放回可用列表。即CDN可基于每个源站对请求的响应来判断源站是否可用。
对源站进行不可用判定时,与回源重试粒度相同,也分为两种,一种是基于源站记录来判断是否可用,即无论某个源站是域名还是IP,如果在一定周期内返回失败次数超过一定阈值,即认为该源站不可用;另外一种是基于具体IP,即如果某个源站是域名,只有该域名中所有IP不可用,才认为该源站不可用。CDN默认为基于源站记录来判断是否可用。