CDN技术深度解析:最全面,看这一篇就够


一、引言

(一)CDN概念

内容分发网络(Content Delivery Network,CDN)是一种网络架构,旨在提高用户对互联网上内容的访问速度和性能。CDN通过在全球各地部署大量的服务器节点,将内容缓存到离用户更近的服务器上,从而减少内容传输的距离,提高访问速度和响应时间。当用户请求访问某个网站或应用程序时,CDN会自动选择距离用户最近的服务器节点,从该节点提供内容,而不是直接从原始服务器获取内容。

(二)CDN应用场景

1.静态加速

静态网页:CDN可以缓存静态网页(如HTML、CSS、JavaScript文件),并将其分发到全球各地的边缘节点,从而加速网页加载速度。
图片和视频:CDN能够存储和传送图片、视频等静态媒体文件,通过在用户附近的服务器上提供这些资源,减少了加载时间和带宽消耗。

2.动态加速:

动态内容:尽管动态内容通常不适合缓存,但CDN可以通过一些技术手段来加速动态内容的传输,比如动态页面的负载均衡、内容压缩和路由优化等。

3.流媒体加速:

视频直播和点播:CDN能够提供高效的流媒体分发,将视频内容快速传输给全球观众,减少了视频卡顿和加载时间,提升了用户体验。
音频流媒体:类似于视频,CDN也可以用于加速音频流的传输,如音乐流服务、网络广播等。

(三)CDN解决的主要痛点

CDN有效地解决了目前互联网业务中网络层面的问题:

1.减少网络延迟和不稳定性

用户与业务服务器之间的物理距离可能很远,导致数据传输需要经过多次网络转发,从而增加了延迟和不稳定性。CDN通过在全球范围内部署服务器节点,使用户能够从距离更近的服务器获取内容,从而显著减少了传输延迟和提高了稳定性。

2.跨运营商转发优化

当用户与业务服务器所在的运营商不同时,请求需要在运营商之间进行互联转发,这可能会增加延迟和不稳定性。CDN提供了跨多个运营商的覆盖,使得用户可以从与其运营商更接近的CDN边缘节点获取内容,从而减少了跨运营商转发带来的问题。

3.提高服务器响应速度和可用性

业务服务器面对海量用户请求时,可能会面临网络带宽和处理能力的限制,导致响应速度下降和可用性降低。CDN通过缓存静态内容、负载均衡和智能路由等技术,可以将用户请求分发到最优的服务器节点上,从而分担了原始服务器的压力,提高了响应速度和可用性。

二、CDN基础知识

(一)DNS解析过程

在这里插入图片描述
当客户端发起一个域名解析请求时,第一步会请求到递归名字服务器,然后依次请求这个域名所在的每一级权威的服务器。它会逐一地找到域名前面的对应的主机地址,然后应答给客户端,客户端得到IP地址之后会对相应的ip发起请求。然后对应的ip服务器返回响应给客户端。

(二)CDN访问过程

在这里插入图片描述
客户端请求资源: 用户在浏览器中输入网址或点击链接请求某个网页或资源。
DNS解析: 浏览器首先会进行DNS解析,将域名解析成对应的IP地址。如果该域名的DNS记录中包含了CDN服务商提供的DNS服务器信息,DNS解析可能会返回一个与用户位置最接近的CDN节点的IP地址。
请求路由: 用户的请求被发送到最近的CDN节点。
节点服务器处理请求: CDN节点服务器接收到用户请求后,会检查是否有缓存该资源的副本。如果有,它会直接从缓存中返回资源;如果没有,它会向源服务器请求资源。
资源获取: 如果资源存在于CDN节点的缓存中,则CDN节点会直接返回资源给用户;如果资源不在缓存中,则CDN节点会向源服务器请求资源。
数据传输: 源服务器将所请求的资源传输给CDN节点服务器。
数据返回: CDN节点服务器将获取到的资源返回给用户的浏览器。
内容传输完成: 用户在浏览器中收到并加载所请求的资源,完成访问过程。

(三)A记录与CNAME记录

A记录和CNAME记录是DNS中两种常见的资源记录类型,它们在域名解析过程中具有不同的作用。

1. A记录 (Address Record)

A记录用于将域名解析为IPv4地址。例如,将域名www.example.com解析为对应的IPv4地址。A记录直接指向IP地址,可以将一个域名映射到一个特定的IPv4地址。

2. CNAME记录 (Canonical Name Record)

CNAME记录用于创建一个域名的别名,将一个域名解析为另一个域名。当使用CNAME记录时,不需要指定IP地址,而是将该域名指向另一个域名。例如,将域名blog.example.com的CNAME记录指向www.example.com,这样访问blog.example.com时会自动跳转到www.example.com。CNAME记录常用于实现域名的重定向、负载均衡和简化DNS管理。通过创建CNAME记录,可以方便地将一个域名关联到另一个域名,并且当目标域名的IP地址发生变化时,只需要更新CNAME记录的指向即可,而无需修改所有引用该域名的地方。需要注意的是,在根域名(例如example.com)上不能直接创建CNAME记录,只能在子域名上进行创建。

(四)CDN网络要素

边缘服务器节点(Edge Servers): 这些是部署在全球各地的服务器,位于互联网骨干网和终端用户之间的关键位置。它们存储着静态和动态内容的副本,并且负责响应用户的请求。

内容缓存和存储系统: CDN使用缓存和存储系统来存储经常请求的内容的副本。这些系统可以包括内存缓存、磁盘缓存、分布式文件系统等,用于快速提供内容,减少对源服务器的请求负载。

负载均衡器(Load Balancers): 这些组件负责将用户请求分发到CDN网络中的不同边缘节点。通过负载均衡,CDN可以有效地利用网络资源,避免过载或不平衡的情况。

智能路由和请求重定向系统: 这些系统根据用户的位置、网络条件和其他因素,选择最优的服务器节点来响应请求。这有助于最大化性能和用户体验,并且可以优化网络资源的利用。

网络优化和加速技术: CDN通常会采用各种技术来优化数据传输,例如HTTP/2、TLS加速、TCP优化、内容压缩等。这些技术有助于降低延迟、提高带宽利用率,从而改善用户体验。

监控和分析系统: CDN需要实时监控网络状态、流量模式和服务器健康状况等。监控和分析系统可以帮助运营人员及时发现和解决问题,优化网络性能。

安全性和防护机制: 为了保护网络和内容免受攻击和滥用,CDN通常会实施安全性和防护机制,如DDoS防护、SSL加密、内容鉴别等。

管理和配置接口: CDN提供了管理和配置接口,使运营人员能够管理网络配置、监控性能指标,并进行必要的调整和优化。

三. CDN关键技术

(一)调度策略

1.过载策略

当某些节点负载过重时,首先通过调整各节点的IP权重来平衡负载。
如果负载无法通过权重调整解决,可以考虑添加新节点或删除不必要的节点,以分担负载或减少成本。

2.保底策略:

当需要增加带宽供应时,首先通过调整各节点的IP权重来满足保底带宽需求。
如果仍然不足以满足需求,可以考虑添加新节点。

3.流量节点使用:

在白天带宽低峰时,关闭部分节点以节约成本。
在晚高峰时,通过打开节点来消耗其他95节点计费带宽,以减少额外费用。

4.合并计费节点规划调整:

当节点规划存在重叠或不必要的情况时,考虑合并节点以降低成本。

5.调整策略定时回滚:

对于调整后效果不佳的策略改动,可以设定定时回滚机制,恢复到之前的状态。

(二)CDN回源规则

回源: 通过客户端请求访问资源时,如果CDN节点上未缓存该资源, CDN节点会回源站获取资源。

  1. 边缘不命中回源:当CDN节点上没有所请求的资源时,会回源到源服务器获取该资源,并将其缓存到边缘节点,以便后续请求可以直接从边缘节点获取。这是最常见的回源规则。
  2. 缓存过期回源:当CDN缓存中的资源过期时,即超过了预设的缓存时间或缓存策略要求,CDN会回源到源服务器重新获取最新的资源。
  3. 防盗链回源:为了防止资源被非法盗链使用,CDN设置了防盗链规则。当CDN节点检测到非法盗链请求时,会回源到源服务器获取资源,并验证请求的合法性。
  4. 热点回源:当某个资源在短时间内被大量请求,导致缓存失效或边缘节点无法满足需求时,CDN会回源到源服务器获取该热点资源,以满足用户需求。
  5. 强制回源:有时候需要强制让CDN节点回源获取最新的资源,即使缓存中的资源没有过期。这可以通过配置特定的回源规则来实现。
  6. 直接回源:有时候需要直接绕过CDN节点,将请求直接发送到源服务器。这可以用于测试、调试或某些特殊情况下的需求。在这种情况下,CDN节点不会对请求进行缓存或加速处理。

(三)CDN调度方法

1.DNS调度

基于DNS协议,调度系统会根据LocalDNS的IP归属地进行流量调度,返回最接近的LocalDNS的cache节点ip;(建立tcp/ip连接)
优点: DNS系统本身是分布式的结构,LocalDNS本身有cache缓存;
缺点: LocalDNS的地址判断力度较粗,另外用户有可能会设置错误的LocalDNS。

2.IP302调度

基于HTTP协议,用户首先访问到调度系统,调度系统通过获取客户端IP归属地进行调度,组装响应头的location的URL,通过状态码为302的方式响应给客户端,然后客户端根据新的URL发起连接。
优点: 基于HTTP协议,通过302重定向方式实现调度,实现更加灵活的流量控制。
缺点: 需要客户端进行额外的重定向操作,可能会增加延迟和复杂度。

3.HTTPDNS调度

基于HTTP协议,客户端直接访问HTTPDNS接口到我们的调度系统,调度系统再通过获取客户端的IP归属地得到cache节点的ip,以状态码为200的方式响应给客户端,然后客户端再向cache节点发起请求。
优点: 直接利用HTTP协议,客户端可以直接访问HTTPDNS接口,调度系统通过客户端IP获取缓存节点的IP,减少了额外的重定向步骤,可以更加高效地进行流量调度。
缺点: 需要改造客户端,增加了开发和维护的成本。

(四)DNS调度部署架构

  1. RDS(Relational Database Service)

    • 主要用于存储生成调度策略所需的配置信息,例如策略总开关、调度组、线路、节点维度的带宽信息等。
    • 这些信息可以用于策略的生成和调整。
  2. Zabbix

    • 用于获取节点的总带宽信息。
    • 这些数据可以用于监控和评估节点的性能,以及在需要时调整带宽分配。
  3. 策略Server

    • 部署了计算各调度组、各线路节点配比关系的程序的服务器。
    • 它负责根据从RDS和Zabbix获取的数据,计算出最优的调度策略,并将其应用到中控上。
  4. 中控

    • 管理域名、调度组、节点、线路等信息的控制平台。
    • 从RDS获取配置信息,接收策略Server计算的最优策略,并将其应用到实际的DNS调度系统中。
  5. KDNS(Authoritative DNS):

    • 授权DNS服务器,负责响应用户DNS查询请求。
    • 根据中控提供的调度策略,将用户的DNS查询请求转发到合适的节点上,实现负载均衡和优化性能。

(五)CDN的DNS调度原理

在这里插入图片描述

  1. 用户输入访问的域名,操作系统向本地DNS服务器查询域名的IP地址。
  2. 如果本地DNS服务器没有缓存该域名的IP地址或缓存已过期,它会向Root DNS服务器查询域名的授权服务器。
  3. Root DNS服务器将域名的授权DNS记录回应给本地DNS服务器。
  4. 本地DNS服务器得到域名的授权DNS记录后,继续向域名授权DNS查询域名的IP地址。
  5. 域名授权DNS查询域名记录后(通常是CNAME),回应给本地DNS服务器。
  6. 本地DNS服务器得到域名记录后,向CDN智能DNS查询域名的IP地址。
  7. CDN智能DNS根据一定的算法和策略(例如静态拓扑、容量等),将最适合的CDN节点IP地址回应给本地DNS服务器。
  8. 本地DNS服务器将得到的域名IP地址回应给用户端。
  9. 用户得到域名IP地址后,访问CDN节点服务器。
  10. CDN节点服务器响应请求,将内容返回给客户端。同时,缓存服务器可能会在本地进行保存,以备以后使用,同时将获取的数据返回给客户端,完成数据服务过程。

(六)CDN的302调度原理

在这里插入图片描述

图片引用:help.aliyun.com

终端发起访问后,本地DNS向权威DNS查询域名的IP地址。权威DNS响应本地DNS就近调度服务器IP,通常是CDN的调度节点。终端向调度服务器发起请求,调度服务器根据终端的IP地址、URL请求热度等因素,决定通过302重定向方式将用户请求调度至最优的缓存服务器上。调度服务器返回HTTP 302响应,并在Location头中包含最优缓存服务器的URL。终端收到302响应后,再次向302指向的地址发起请求,最优的缓存服务器收到请求后,响应内容返回给终端。

四、CDN节点配置详解

(一)节点计费方式

节点计费方式主要包括包端口计费、95计费和流量计费:

  1. 包端口计费

    • 按照端口的数据费用计费,与端口跑多少带宽无关。
    • 如果节点规划带宽大于保底带宽,但小于中控上联的90%,说明节点有可用的消峰空间,可以进行消峰操作,即在高峰时段降低带宽使用以节约成本。
  2. 95计费

    • 每个月结算一次款项。
    • 按照每5分钟取一个点的方式计算,一天共有1224=288个点,一个月就是1224*30=8640个点。
    • 将这些点中最高的5%的数据去掉,剩下的最高带宽就是95计费的带宽值。
    • 这种方式能够更好地反映出节点的实际使用情况,避免单纯按峰值计费造成不必要的成本开销。
  3. 流量计费

    • 根据当月累积的流量数据乘以流量单价,再加上请求次数乘以请求单价来计算费用。
    • 这种计费方式适用于需要根据实际使用量来计费的情况,能够更加灵活地根据用户的实际需求来收费。

(二)节点部署类型与设备

1.节点部署

  1. 标准部署

    • 节点部署采用标准的方式,非标准资源通过302调度获取。
    • 通过标准部署方式,可以更灵活地根据需要调整资源的分配和调度,以适应不同的需求和情况。
  2. 城域网部署

    • 城域网部署是指在一个城域网内部署节点,这些节点单独计费,并且采用包端口计费方式。
    • 这种部署方式可能适用于需要在特定区域内提供服务的场景,例如城市级别的内容分发。

2.节点部署设备

  1. Cache(缓存服务器)

    • 用来缓存数据的服务器,主要负责缓存用户请求的内容,以提高访问速度和降低负载。
  2. LVS(Linux Virtual Server)

    • 负载均衡设备,用于在节点中各个Cache服务器之间进行负载均衡,确保请求被合理分配到各个服务器上,从而提高系统的整体性能和可靠性。
  3. Relay(中继设备)

    • 主要负责控制命令的下发、日志的回传等功能。
    • 它可能与其他设备进行通信,如负责维护整个系统的负载DNS,以实现整个系统的负载均衡和管理。

(三)Virtual IP的应用

虚拟 IP(VIP)是一种网络配置技术,用于提供高可用性和负载均衡。在高可用性方面,主要有两种类型:浮动 IP 和虚拟 IP。

  1. 浮动 IP

    • 在浮动 IP 方案中,虚拟 IP 地址会在不同的主机之间“漂移”,即在一台主机上失效时,它会自动“漂移”到另一台主机上。
    • 这样可以确保在一台主机发生故障时,业务流量可以快速地转移到另一台主机上,从而实现服务的高可用性。
  2. 虚拟 IP

    • 虚拟 IP 通常是一组 IP 地址,由多台服务器共享,而不是在服务器之间“漂移”。
    • 负载均衡设备(如 LVS)会将请求分发到这组虚拟 IP 地址上,然后根据负载均衡算法将请求转发给其中一台服务器。
    • 这种方式实现了负载均衡,即使其中一台服务器出现故障,仍然可以通过其他服务器继续提供服务,从而提高了系统的可用性和可靠性。

(四)负载均衡器的三种工作模式

1.NAT模式(Network Address Translation)

在NAT模式下,负载均衡器充当中间代理,对外部请求进行转发和地址转换。它将外部用户的请求转发给后端的真实服务器,并将响应从真实服务器返回给外部用户。负载均衡器会修改数据包的头部信息,使得位于内部私有网络的服务器可以与外部网络通信,同时也可以实现外部用户访问内部私有IP主机。

2.TUN模式(Tunneling)

在TUN模式下,负载均衡器仅处理请求数据,将请求转发给后端的真实服务器。真实服务器直接与外部网络通信,将响应数据返回给客户端主机。
这种模式需要真实服务器能够直接与外部网络连接,并且真实服务器在收到请求后直接向客户端发送响应数据。

3.DR模式(Direct Routing)

DR模式也被称为直接路由模式,要求负载均衡器和后端服务器必须在同一个局域网内。在DR模式下,负载均衡器拦截外部请求并进行分发,但真实服务器直接将响应返回给客户端,绕过负载均衡器。为实现这种模式,负载均衡器和后端服务器需要共享虚拟IP地址。

五. CDN常见安全问题和解决方案

(一)DDOS攻击及解决

1.DDOS攻击

DDoS(Distributed Denial of Service)攻击是一种通过利用多台计算机或设备向目标服务器发送大量请求,以超过其处理能力而导致服务不可用的攻击行为。以下是有关DDoS攻击的一些重要信息:

  1. 攻击原理:DDoS攻击通常使用僵尸网络(botnet)来发动攻击。攻击者控制大量受感染的计算机或设备(称为僵尸)并将它们协同起来,同时向目标服务器发送大量的请求流量,以淹没其网络带宽、资源或应用程序。
  2. 攻击目的:DDoS攻击的目的是使目标服务器过载,导致其无法正常提供服务。攻击者可能希望对目标网站、在线服务或其他网络资源进行破坏、勒索或切断其正常业务。
  3. 攻击类型:
    • 带宽洪泛(Bandwidth Flood):攻击者通过发送大量的数据流量占用目标服务器的网络带宽。
    • 高级持续性威胁(Advanced Persistent Threat,APT):攻击者利用复杂的技术手段和远程控制,对目标服务器进行长时间的攻击,以持久地破坏其服务。
    • SYN洪泛(SYN Flood):攻击者发送大量伪造的TCP连接请求(SYN包),使目标服务器忙于处理这些请求而无法响应合法用户的请求。
    • ICMP洪泛(ICMP Flood):攻击者发送大量的ICMP回显请求(PING请求)占用目标服务器的资源。
    • DNS放大(DNS Amplification):攻击者利用开放的DNS服务器将小型请求转发为大型响应,从而淹没目标服务器的网络带宽。

2.CDN应对DDOS攻击

  1. 分布式网络:CDN通常由多个服务器节点组成,这些节点分布在不同的地理位置。这种分布式网络结构可以分散流量负载,减轻单个节点的压力,并降低遭受DDoS攻击的风险。
  2. 负载均衡:CDN使用负载均衡算法将流量分配到多个服务器节点上,以避免某个节点过载。这样,即使遭到DDoS攻击,负载均衡可以将流量均匀地分发到不同的节点上,提高整体的处理能力。
  3. 流量过滤与清洗:CDN可以通过流量过滤和清洗来检测和过滤恶意流量。它们使用各种技术,例如基于规则的过滤、行为分析和机器学习等来识别并阻止恶意流量。
  4. 带宽扩展:CDN提供高带宽的网络连接,可以扩展和增加网络容量以应对大规模的DDoS攻击。它们通常具备充足的网络资源和带宽,可以吸收和处理更大的流量负载。
  5. 缓存技术:CDN使用缓存技术将静态内容(如图片、CSS和JavaScript文件)缓存在服务器节点上。这样,在DDoS攻击期间,仍可以提供部分内容服务,减轻对源服务器的压力。
  6. 限制访问:CDN可以通过IP过滤和访问控制列表来限制威胁行为的来源。它们可以根据IP地址、地理位置和用户行为等进行访问控制,以防止恶意访问和攻击。

(二)DNS解析异常处理

1.DNS解析异常

  1. 域名配置错误:可能是域名的DNS配置有误,例如错误的记录类型、错误的IP地址或CNAME指向等。这会导致解析时返回错误的结果。
  2. DNS服务器问题:如果使用的DNS服务器出现故障或配置错误,可能无法正确解析域名。
  3. 网络连接问题:如果网络连接存在问题,例如连接超时、丢包或延迟过高,可能导致DNS解析失败。
  4. 域名过期或暂停:如果域名已过期或被暂停使用,DNS解析可能无法返回有效结果。
    在以上情况中,增加IP地址的数量通常不会直接导致DNS解析错误。DNS系统可以处理大量的IP地址记录,而且多个IP地址通常用于实现负载均衡和高可用性。

2.应对手段

如果遇到DNS解析错误,建议进行以下步骤排查问题:

  1. 检查域名配置是否正确,特别是A记录、CNAME记录等是否设置正确。
  2. 确认使用的DNS服务器正常工作,并尝试更换其他可靠的DNS服务器进行解析。
  3. 检查网络连接是否正常,包括确认网络是否畅通、防火墙是否阻止了DNS流量等。
  4. 确认域名是否过期或被暂停使用,及时更新域名相关信息。

六. 总结

总体而言,CDN业务受业务突发事件的影响较为突出,需提前做好准备,但如果资源丰富,拿服务器堆,一切都不是问题哈哈哈哈!!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wesley_xx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值