强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

CDN 与 WAF 精讲教程 / 第03章 CDN 架构设计

第03章 CDN 架构设计

本章从架构视角深入 CDN 的网络分层设计,涵盖 L4/L7 代理分层、全局负载均衡(GLB)、Anycast 路由等核心技术。


3.1 CDN 总体架构

3.1.1 分层架构概览

┌────────────────────────────────────────────────────────────────────┐
│                          CDN 总体架构                               │
│                                                                    │
│  ┌──────────────────────────────────────────────────────────────┐  │
│  │  Layer 1: DNS 调度层 (Global Traffic Manager)                 │  │
│  │  ├── GeoDNS   ├── ECS   ├── Anycast   ├── 健康检查           │  │
│  └──────────────────────────────┬───────────────────────────────┘  │
│                                 │                                  │
│  ┌──────────────────────────────▼───────────────────────────────┐  │
│  │  Layer 2: 边缘接入层 (Edge / L4 Load Balancer)               │  │
│  │  ├── TCP/UDP 终止   ├── TLS 卸载   ├── DDoS 防护             │  │
│  └──────────────────────────────┬───────────────────────────────┘  │
│                                 │                                  │
│  ┌──────────────────────────────▼───────────────────────────────┐  │
│  │  Layer 3: 业务处理层 (L7 Proxy / Application)                │  │
│  │  ├── WAF   ├── 缓存   ├── 压缩   ├── 路由   ├── 边缘计算     │  │
│  └──────────────────────────────┬───────────────────────────────┘  │
│                                 │                                  │
│  ┌──────────────────────────────▼───────────────────────────────┐  │
│  │  Layer 4: 中间层 (Shield / Mid-Tier)                          │  │
│  │  ├── 二级缓存   ├── 回源合并   ├── 区域路由                   │  │
│  └──────────────────────────────┬───────────────────────────────┘  │
│                                 │                                  │
│  ┌──────────────────────────────▼───────────────────────────────┐  │
│  │  Layer 5: 源站接入层 (Origin)                                  │  │
│  │  ├── LB   ├── App Server   ├── DB   ├── Object Storage       │  │
│  └──────────────────────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────────────────────┘

3.2 Layer 4 处理

3.2.1 L4 的职责

Layer 4(传输层)处理 TCP/UDP 连接,主要负责:

功能说明典型实现
连接终止终结客户端 TCP 连接LVS / DPVS / iptables
TLS 卸载终结 SSL/TLS 握手Nginx / HAProxy / 硬件加速卡
L4 负载均衡基于 IP + 端口分发流量LVS DR/TUN 模式
DDoS 防护SYN Flood、UDP Flood 清洗XDP / eBPF / 专用设备
连接复用多个客户端连接复用到后端Nginx upstream keepalive

3.2.2 L4 负载均衡模式

模式1: DR (Direct Routing)                  模式2: TUN (Tunneling)
┌──────┐   ┌─────────┐                     ┌──────┐   ┌─────────┐
│Client│──→│  LVS    │──→                  │Client│──→│  LVS    │
└──────┘   │ (VIP)   │  ┌──────┐           └──────┘   │ (VIP)   │
           └────┬────┘  │ RS-1 │(直接回)               └────┬────┘
                │       └──────┘                            │ IPIP隧道
                │       ┌──────┐                            ▼
                └──────→│ RS-2 │                       ┌──────┐
                        └──────┘                       │ RS-1 │(隧道回)
                                                       └──────┘

模式3: NAT
┌──────┐   ┌─────────┐   ┌──────┐
│Client│──→│  LVS    │──→│ RS-1 │──→ 回包经 LVS
└──────┘   │ (VIP)   │   └──────┘
           └─────────┘   ┌──────┐
                         │ RS-2 │──→ 回包经 LVS
                         └──────┘
模式性能瓶颈适用场景
DR最高RS 需配置 VIP大规模 CDN 边缘
TUNIP 封装开销跨机房部署
NAT中等LVS 是回包瓶颈小规模 / 云环境

3.2.3 现代 L4 方案

技术特点采用者
DPVS基于 DPDK 的高性能 LVS百度、爱奇艺
XDP/eBPF内核态高速包处理Cloudflare
KatranFacebook 开源 L4 LBMeta/Facebook
MaglevGoogle 一致性哈希 L4 LBGoogle Cloud

3.3 Layer 7 处理

3.3.1 L7 的职责

Layer 7(应用层)是 CDN 的核心处理层,所有 HTTP 层面的优化和安全都在此完成:

功能说明组件
HTTP 解析解析请求头、Cookie、查询参数Nginx / Envoy / Haproxy
WAF 过滤应用层安全规则匹配ModSecurity / 自研引擎
缓存代理缓存查找、回源、存储Varnish / Traffic Server
内容压缩Brotli / Gzip 压缩Nginx brotli 模块
URL 重写规则引擎路由请求Nginx rewrite / HAProxy ACL
边缘计算在边缘执行用户逻辑Workers / Edge Functions
协议升级HTTP/1.1 → HTTP/2 / HTTP/3Nginx / Envoy

3.3.2 L7 请求处理流水线

客户端请求
    │
    ▼
┌───────────────────┐
│  1. 请求解析       │  解析 HTTP 头、URL、Cookie
└────────┬──────────┘
         ▼
┌───────────────────┐
│  2. Bot 检测       │  UA / 行为分析 / 指纹识别
└────────┬──────────┘
         ▼
┌───────────────────┐
│  3. WAF 规则匹配   │  SQL 注入 / XSS / RCE 检测
└────────┬──────────┘
         ▼
┌───────────────────┐
│  4. Rate Limiting  │  频率限制、CC 防护
└────────┬──────────┘
         ▼
┌───────────────────┐
│  5. 路由决策       │  URL 路由、A/B 测试、灰度
└────────┬──────────┘
         ▼
┌───────────────────┐
│  6. 缓存查找       │  HIT → 直接响应(跳到步骤 9)
└────────┬──────────┘
         │ MISS
         ▼
┌───────────────────┐
│  7. 回源           │  Shield → Origin
└────────┬──────────┘
         ▼
┌───────────────────┐
│  8. 响应处理       │  缓存存储 + 响应头修改
└────────┬──────────┘
         ▼
┌───────────────────┐
│  9. 内容压缩       │  Brotli / Gzip
└────────┬──────────┘
         ▼
┌───────────────────┐
│ 10. 响应返回       │  TLS 加密 → 发送给客户端
└───────────────────┘

3.4 全局负载均衡(GLB)

3.4.1 GLB 概念

GLB(Global Load Balancing,全局负载均衡) 是 CDN 的"大脑",决定每个用户请求由哪个 PoP 处理。与单机房的 L4/L7 负载均衡不同,GLB 工作在 DNS 层面,跨越全球数据中心。

3.4.2 GLB 调度维度

维度说明权重
地理位置用户到 PoP 的物理距离
网络延迟实时探测的 RTT 值
节点负载CPU、内存、带宽使用率
节点健康健康检查通过/失败最高(故障排除)
成本不同区域带宽成本差异
用户归属运营商、企业专属节点按需

3.4.3 GLB 架构示例

                    ┌──────────────────────────┐
                    │     GLB 调度系统          │
                    │  ┌─────────────────────┐ │
                    │  │ 实时数据采集         │ │
                    │  │ ├── 节点健康状态     │ │
                    │  │ ├── 网络延迟探测     │ │
                    │  │ ├── 节点负载指标     │ │
                    │  │ └── 流量预测模型     │ │
                    │  └──────────┬──────────┘ │
                    │             ▼             │
                    │  ┌─────────────────────┐ │
                    │  │ 调度决策引擎         │ │
                    │  │ ├── Geo → 候选 PoP   │ │
                    │  │ ├── 延迟排序         │ │
                    │  │ ├── 负载过滤         │ │
                    │  │ └── 故障剔除         │ │
                    │  └──────────┬──────────┘ │
                    │             ▼             │
                    │  ┌─────────────────────┐ │
                    │  │ DNS 响应生成         │ │
                    │  │ 返回最优 PoP 的 IP   │ │
                    │  └─────────────────────┘ │
                    └──────────────────────────┘

3.4.4 调度策略对比

策略适用场景优点缺点
静态 Geo一般网站简单可靠不感知实时网络变化
动态探测低延迟要求业务最优路由系统复杂
加权轮询多活容灾均匀分布不感知距离
故障转移高可用架构快速切换需健康检查

3.5 Anycast 路由

3.5.1 Anycast 原理

Anycast(任播) 是一种网络寻址方式,多个节点共享同一个 IP 地址,BGP 路由协议自动将用户请求导向最近的节点。

Anycast vs Unicast vs Multicast:

Unicast(单播):1 IP → 1 节点
  Client ──→ [节点A]  10.0.0.1

Anycast(任播):1 IP → 多节点(最近者响应)
  Client(北京) ──→ [节点A 北京] 10.0.0.1 ← BGP 选最近
  Client(上海) ──→ [节点B 上海] 10.0.0.1 ← 同一 IP
  Client(广州) ──→ [节点C 广州] 10.0.0.1 ← 不同物理机

Multicast(组播):1 IP → 多节点同时接收
  Client ──→ [节点A, 节点B, 节点C]  224.0.0.1

3.5.2 Anycast 在 CDN 中的应用

厂商Anycast 用途说明
Cloudflare全部流量所有边缘节点共享 Anycast IP
Google Cloud CDN边缘接入基于 Google 全球骨干网
Fastly边缘接入多 Anycast 集群
AWS边缘接入部分 Anycast

3.5.3 Anycast 优缺点

优点缺点
天然就近访问,无需 DNS 精确调度BGP 收敛慢(故障切换可能需数分钟)
天然 DDoS 分散(攻击流量分散到全球)TCP 会话迁移困难
配置简单(同一 IP)路由不对称问题
与 BGP 健康检查结合可实现自动故障转移调试困难

3.5.4 Anycast + Unicast 混合架构

大型 CDN 混合架构:

┌──────────────────────────────────────────────────────────┐
│  Anycast 层                                               │
│  ├── DDoS 流量清洗入口                                     │
│  ├── DNS 权威服务器                                        │
│  └── 初步流量分发                                          │
└───────────────────────┬──────────────────────────────────┘
                        │
┌───────────────────────▼──────────────────────────────────┐
│  Unicast 层                                               │
│  ├── 各区域 PoP 使用独立 Unicast IP                       │
│  ├── GLB 精确调度到具体 PoP                               │
│  └── 支持精细化流量管理                                    │
└──────────────────────────────────────────────────────────┘

3.6 高可用设计

3.6.1 故障域隔离

故障域层级:
┌────────────────────────────────────────────────┐
│  Region (区域)                                  │
│  ├── Availability Zone (可用区)                  │
│  │   ├── Cluster (集群)                         │
│  │   │   ├── Node (节点)                        │
│  │   │   └── Node (节点)                        │
│  │   └── Cluster (集群)                         │
│  └── Availability Zone (可用区)                  │
└────────────────────────────────────────────────┘

设计原则:
- 同一 PoP 跨至少 2 个可用区
- 同一区域有至少 2 个 PoP
- 关键服务 N+2 冗余

3.6.2 健康检查机制

层级检查方式频率故障响应
L4TCP 连接探测1-5s标记节点不可用
L7HTTP 200 检查5-10s从负载均衡池移除
业务自定义健康接口10-30s配合 GLB 调度
全局综合评分30-60sDNS 权重调整

3.7 注意事项

⚠️ TLS 版本:CDN 边缘应仅支持 TLS 1.2+,禁用 SSLv3、TLS 1.0/1.1。

⚠️ 连接复用率:保持源站连接池高复用率(Keep-Alive),减少 TCP/TLS 握手开销。

⚠️ SNI 一致性:确保 L4 层正确传递 SNI(Server Name Indication),否则多域名 HTTPS 会失败。


3.8 扩展阅读


本章小结

主题核心要点
L4 处理TCP 终止、TLS 卸载、DDoS 初步防护
L7 处理HTTP 解析、WAF、缓存、压缩的核心层
GLB全球调度系统,综合地理位置、延迟、负载决策
Anycast多节点共享 IP,BGP 路由实现天然就近
高可用故障域隔离 + 健康检查 + N+2 冗余

下一章:第04章 缓存策略 →