双CDN部署

双CDN目的

详见 https://sidoc.cn/doc/1609.html 中的“关于国内外CDN加速”部分;


原理和概述

域名按地区进行DNS解析,中国大陆用户访问域名 a.com 时,DNS服务器将流量路由至国内CDN网络;境外用户访问 a.com 时,DNS服务器将流量路由至国外CDN网络;以此来兼顾国内外的访问速度。也可以仅使用国内CDN来兼顾国内外的访问速度,以阿里云、腾迅云为例,他们虽是国内CDN服务商,但都支持全球加速,且全球加速的效果并不比国外CDN厂商差多少;以 Cloudflare CDN为,实测 Cloudflare 在全球CDN网络中的优势是稳定和节点数量多,其访问速度可能还不如腾迅云和阿里云的全球加速CDN,且腾迅云和阿里云CDN的全球节点已经足够多,只是在偏远小国的覆盖率还有所欠缺;但从以往的经验和实力来看,所以人都认为 Cloudflare CDN 毫无疑问是最强。


双CDN实现 - 常规

双CDN的配置本身很简单,其原理就是域名的DNS服务器根据访问用户的位置智能路由流量至不同的CDN网络,其域名解析配置如下:

操作流程:在CDN厂商处申请CDN,并获取CDN的CNAME加速域名,然后被加速的业务域名在DNS中按地域分别解析到不同的CDN厂商分配的CNAME域名。


双CDN实现 - Cloudflare

阿里云、腾迅云、AWS、Cloudflare都有长期免费的CDN,但它们都不承诺服务SLA,也就是没有可用性承诺,节点挂了也不会有任何赔偿。

阿里云和腾迅云CDN虽然免费,但不能传输大文件;AWS每月只有1TB免费流量,且上行流量收费;Cloudflare完全免费,无任何使用限制;因此,Cloudflare 是最佳的海外免费CDN,但要使用 Cloudflare ,就必须将域名迁入至Cloudflare,也就是使用Cloudflare的DNS服务器,因为Cloudflare默认不提供 CNAME 加速地址,除非升级为付费版;但 Cloudflare 有一个 Cloudflare for SaaS 功能,通过此功能可简接免费获取CNAME加速域名。

Cloudflare for SaaS 功能作用是:当你作为SaaS软件服务商,在不将你客户的域名迁入到 Cloudflare 的情况下,为你客户的自定义域名提供安全防护和加速服务;也就是说,Cloudflare for SaaS 功能的作用在不迁入域名的情况下为域名提供CDN服务。以下将借助 Cloudflare for SaaS 来间接获取 Cloudflare CDN的CNAME加速域名,然后实现双CDN。


1>. 在 CloudFlare 中添加域名:必须向 Cloudflare 中转入一个域名,否则无法使用 Cloudflare for SaaS 功能,建议申请一个免费域名转入 Clouflare 即可;


2>. 创建 CNAME 加速域名:在 Cloudflare 中创建 A 记录,例如:tr.xxx.eu.org,并指向源站IP,如下图:( tr.xxx.eu.org最终将被作为CNAME加速域名使用 )


3>. 使用 Cloudflare for SaaS 绑定主机自定义域名 a.com :

a. 添加 CNAME 回源域名 tr.xxx.eu.org(如下图,回退源必须为域名,不能为IP)


b. 添加自定义域名: 这里的自定义域名 a.com 不需要转入到Cloudflare, 此处只是告诉Cloudflare,我将使用 a.com 的 CNAME 解析到 tr.xxx.eu.org



c. 保存后会提示:在 a.com 域名解析中添加 TXT 记录,以验证域名归属;

完成上述配置后,Cloudflare 将允许 a.com 通过 CNAME 解析到 tr.xxx.eu.org,并自动对 a.com 进行安全防护和申请SSL证书( 用于验证域名归属的TXT记录不能删 );


d. 综上,最后在 a.com 域名处添加解析记录:

国内用户访问 a.com 时,通过CNAME记录解析至国内CDN的CNAME地址;

国外用户访问 a.com 时,通过CNAME记录解析至 Cloudflare 的 tr.xxx.eu.org;


e. Cloudflare CDN常用配置:https://sidoc.cn/doc/1613.html


域名解析和CDN配置

1>. 关于免费域名

事实上 xxx.eu.org 是后缀为 .org 的二级域名,之所以 xxx.eu.org 可以被当作一级域名来使用,是因为 eu.org 从1996年维护至今,深受全球用户和机构信任;eu.org 还被当作顶级域名加入到了 PSL(公共后缀列表);因此,所有机构和软件都将其视为顶级域名。eu.org 是由个人组织从 1996 年维护至今,DNS服务器也是个人提供;DNS服务器比较特殊,全球网络都会缓存DNS记录,所以 eu.org 个人提供的 DNS 服务器并不会有太大压力,维护 eu.org 成本最高的是人力,因为面对成千上万的域名申请,eu.org 的维护者要耗费大量精力审核并识别滥用;通常申请到 eu.org 域名后,都会第一时间迁入到 Cloudflare DNS服务器。虽然域名“解析权”移交到了 Cloudflare,但“所有权”仍在 eu.org 个人组织处;如果 eu.org 倒闭,旗下所有域名将全部失效,且不论使用的是谁家的 DNS 服务器,域名都会失效。因为域名解析时,全球DNS根服务器会先寻问 org 注册局,以找到 eu.org , eu.org 再告知查询者DNS记录在 Cloudflre DNS 处,Cloudflre DNS 再返回 eu.org 域名对应的 IP;如果 eu.org 倒闭,将没人知道 eu.org 的DNS记录在哪个DNS服务器上。 但浏览器、操作系统、路由器、运营商、cloudflare都有DNS缓存,通常几小时或几天才会走一遍 DNS根服务器 -> org注册局 -> eu.org -> cloudflare DNS; 在域名解析过程中,运营商缓存并承受了最大的DNS解析压力(90%),其次是 cloudflare DNS 承受了9%的解析压力,DNS根服务器 + org注册局 + eu.org 承受的压力低于1%;

域名解析之所以要经过DNS根服务器 -> org注册局 -> eu.org -> cloudflare CND,是因为 DNS 遵循授权链机制,只有由上级(.org)指定的“合法管家”(eu.org)给出的地址才被全球网络认可。否则,任何人都能随意宣称拥有你的域名并指向恶意 IP,整个互联网将因失去唯一信任源而彻底乱套。

eu.org 不会倒闭,因为这会导致全球数十万个网站崩溃,因此总会有人去托管,然后可能以收费的方式继续运营;

如果追求绝对可靠,请使用付费域名 .com、.net等,或国家域名 .cn、us等; .com、.net这些知名域名背后的公司依靠域名年费赚的盆满钵满,且这些域名使用广泛,一旦倒闭将引发全球性网络灾难,已经是大而不能倒的状态。国家域名 .cn、us等由国家机构维护,只要国家还在,这些域名就不会倒闭。


2>. CDN缓存

默认情况下,所有CDN都只缓存.js、.css、.png等静态资源,对于无后缀URL或HTML页面请求,CDN一般都会直接回源,因此要根据需要设置合适的回源策略;如果是纯静态网站,可以直接缓存所有请求,或设置以指定URL开头的请求全部缓存1年;


3>. 单源站必须设置在香港

中国大陆网络环境特殊,流量进出都要经过墙检查,因此速度会比较慢;香港距离中国大陆物理距离近、网络线路优质,可以基本上平替中国大陆的主机;同时,香港是全球网络核心枢纽之一,连接全球都比较快。

事实上,最佳实践是分别在中国大陆和新家坡设置源站,但如果只有一个源站,设置在香港就是最佳实践。




举报

© 著作权归作者所有


0