CDN加速的具体流程如下:
- 用户发起请求:用户在浏览器中输入URL或点击链接,本地DNS服务器(Local DNS)接收到请求,查询域名对应的IP地址。如果本地DNS有缓存该域名的解析结果,则直接返回给用户;如果没有,本地DNS会向上级DNS服务器查询。
- CNAME解析:当本地DNS服务器没有缓存时,它向授权DNS服务器发送请求,得到资源的CNAME记录,即别名记录。这个别名通常指向CDN提供商的域名。
- 节点选择:本地DNS继续向CDN提供商的GSLB(全局服务器负载均衡)系统查询别名对应的实际IP地址。GSLB根据用户的位置、健康状态和负载情况,选择最优的边缘节点IP地址并返回。(也不一定是最优的,不同的服务器厂商选择的规则也不一样,有些是用户请求发到离用户最近的服务器,有些是用户请求发送到最空闲的服务器,有的是用户请求发送到最近且最优的服务器)
- 本地DNS返回:本地DNS服务器将得到的IP地址返回给用户端,用户端向这个IP地址发起HTTP(S)请求。
- 节点响应:如果所选CDN边缘节点已缓存所需资源,直接返回给用户;如果未缓存,边缘节点会回源站拉取资源,并将其缓存,然后返回给用户。
- 资源返回给用户:用户收到请求的资源,完成访问。如果资源是静态的,在CDN节点上通常会被缓存一段时间,以便于下次其他用户的请求能直接从边缘节点获取,从而提高访问速度。
在面对CDN遭受攻击的情况,并且有可用的其他源进行切换时,可以采取以下解决方案:
-
紧急响应:
-
立即通知CDN服务提供商,了解攻击的具体情况和预期恢复时间。
-
同时,启动应急预案,准备切换到备用源。
-
-
流量切换:
-
如果配置了负载均衡器(如SLB),可以迅速调整权重,将受攻击CDN的流量转移至其他源。通过调整负载均衡器的权重,将受攻击CDN的流量切换至其他源,旨在分散攻击压力、保护原始服务器,并维持服务的可用性及业务的连续性。这样操作虽不能完全避免流量损耗,但能大幅减轻攻击影响,确保关键业务在紧急情况下仍能稳定运行。
-
如果没有负载均衡器,可能需要手动更改DNS记录,指向新的服务器或CDN节点。
-
-
DNS切换:
-
联系DNS服务提供商,请求降低DNS记录的TTL值,以便更快生效。
-
修改DNS记录,将域名解析指向备用的服务器或CDN服务。
-
等待DNS传播,这可能需要几个小时,但降低TTL值可以缩短这一时间。
-
总的来说,在处理这类紧急情况时,速度和准备程度至关重要。因此,建议定期审查和测试应急响应计划,确保在关键时刻能够快速有效地行动。