贝博恩创新科技网

Google Cloud CDN教程如何快速配置与优化?

Google Cloud CDN 全方位教程

目录

  1. 什么是 Google Cloud CDN?
  2. 为什么使用 Google Cloud CDN?(核心优势)
  3. 工作原理概览
  4. 核心概念
    • Origin (源站)
    • Backend Service (后端服务)
    • URL Map (URL 映射)
    • Load Balancer (负载均衡器)
  5. 实战教程:一步步配置 Google Cloud CDN
    • 步骤 1:准备工作
    • 步骤 2:创建后端服务
    • 步骤 3:创建 URL 映射
    • 步骤 4:创建全局外部 HTTPS 负载均衡器
    • 步骤 5:配置域名和 SSL 证书
    • 步骤 6:部署并测试
  6. 高级配置与最佳实践
    • 缓存键
    • 缓存模式
    • 缓存所有内容
    • 自定义错误页面
    • 安全性与认证
    • 性能优化
  7. 监控与日志
  8. 常见问题与故障排查

什么是 Google Cloud CDN?

Google Cloud CDN (Content Delivery Network,内容分发网络) 是一个分布式网络服务,旨在将你的网站或应用内容缓存到离用户地理位置更近的 Google 边缘节点上。

Google Cloud CDN教程如何快速配置与优化?-图1
(图片来源网络,侵删)

当用户请求你的内容时,他们不是直接从你的源服务器(如虚拟机或存储桶)获取,而是从最近的边缘节点获取,这带来了以下好处:

  • 更快的加载速度传输距离缩短,延迟降低。
  • 减少源服务器负载:大部分请求由边缘节点处理,源服务器压力减小。
  • 更高的可扩展性:轻松应对流量高峰,无需担心源服务器带宽瓶颈。
  • 全球覆盖:利用 Google 强大的全球网络基础设施。

为什么使用 Google Cloud CDN?(核心优势)

  • 与 Google Cloud 深度集成:与 Compute Engine、Google Kubernetes Engine (GKE)、Cloud Storage、Cloud Functions 等服务无缝集成。
  • 智能缓存:可以智能地缓存动态内容,甚至对 API 响应进行缓存,极大提升性能。
  • HTTP/2 和 HTTP/3 支持:利用现代协议提升传输效率。
  • 精细化的缓存控制:通过缓存键和缓存模式,你可以精确控制哪些内容被缓存、如何缓存。
  • 安全可靠:与 Cloud Armor (WAF) 和 Identity-Aware Proxy (IAP) 集成,提供强大的安全防护。
  • 成本效益:按使用量计费,没有前期硬件投入,对于流量大的应用可以有效降低带宽成本。

工作原理概览

  1. 用户请求:全球各地的用户通过你的域名(如 www.example.com)访问你的网站。
  2. DNS 解析:用户的 DNS 请求指向 Google Cloud 的全局负载均衡器(Anycast IP 地址)。
  3. 流量路由:Google 的网络基础设施将用户的请求路由到地理位置上最近的边缘节点 PoP (Point of Presence)。
  4. 边缘节点检查缓存
    • 命中:如果请求的内容在边缘节点的缓存中,并且仍然有效(未过期),则直接从缓存返回给用户,这是最快的方式。
    • 未命中不在缓存中或已过期,边缘节点会代表用户向你的源站 发起请求。
  5. 源站响应:源站处理请求,并将响应返回给边缘节点。
  6. 缓存并响应:边缘节点将源站的响应缓存起来,然后将其返回给原始用户,后续相同或类似的请求就可以直接从缓存中服务。

核心概念

在配置之前,理解以下几个核心概念至关重要:

  • Origin (源站):你的应用程序或内容的实际来源,它可以是:

    • 后端服务:指向 Compute Engine VM 实例组、GKE 集群或无服务器网络端点组。
    • Cloud Storage 存储桶:非常适合托管静态网站(HTML, CSS, JS, 图片, 视频)。
    • 外部后端:指向你数据中心或其他云服务商的服务。
  • Backend Service (后端服务):定义了如何将流量路由到你的 Origin,它包含健康检查、负载均衡算法以及最重要的——是否启用 CDN

    Google Cloud CDN教程如何快速配置与优化?-图2
    (图片来源网络,侵删)
  • URL Map (URL 映射):将传入的 URL 路径规则与一个后端服务关联起来,你可以配置 www.example.com/images/* 路径下的所有请求都由一个特定的后端服务处理。

  • Global External HTTP(S) Load Balancer (全局外部 HTTPS 负载均衡器):这是整个设置的入口,它接收来自全球的流量,并根据 URL Map 的规则将流量分发到相应的后端服务,它负责 SSL/Termination (SSL 终止)、基于地理位置的路由等。

实战教程:一步步配置 Google Cloud CDN

我们将以一个最常见的场景为例:为一个托管在 Compute Engine VM 上的静态网站启用 CDN

步骤 1:准备工作

  1. 创建 GCP 项目:如果你还没有,请在 Google Cloud Console 中创建一个新项目。
  2. 启用计费:确保你的项目已启用计费。
  3. 创建 VM 实例
    • 创建一个 Compute Engine VM 实例作为源站。
    • 在启动脚本中安装一个简单的 Web 服务器,Nginx。
    • 创建一个测试 index.html 文件,并放在 Web 服务器的根目录(/var/www/html)。
    • 重要:在 VM 的“防火墙”标签页,创建一个防火墙规则,允许来自 tcp:80 (HTTP) 和 tcp:443 (HTTPS) 的流量,或者,在创建实例时勾选“允许 HTTP 流量”和“允许 HTTPS 流量”。
  4. 获取 VM 的外部 IP 地址:记下你的 VM 的外部 IP 地址,我们稍后会用到。

步骤 2:创建后端服务

  1. 在 GCP Console 中,导航到 网络服务 > 负载均衡 > 后端服务
  2. 点击 “创建后端服务”
  3. 基本信息
    • 名称my-cdn-backend
    • 协议:选择 HTTPHTTPS,为了简单,我们先选 HTTP,如果源站支持 HTTPS,建议选 HTTPS
  4. 后端配置
    • 平衡模式:保持默认的 LEAST_REQUEST
    • 后端类型:选择 “云存储”“实例组”,因为我们用的是 VM,所以选择 “实例组”
    • 新实例组:点击“新建实例组”。
      • 名称my-vm-instance-group
      • 类型:选择“无状态”。
      • 区域:选择你的 VM 所在的区域。
      • 实例:从下拉列表中选择你刚才创建的 VM 实例。
      • 健康检查:使用默认的健康检查(它会检查 HTTP:80)。
    • 点击 “创建” 返回后端服务配置。
  5. CDN:这是最关键的一步!
    • 勾选 “启用 Cloud CDN”
    • 缓存模式:保持默认的 Use origin headers,这意味着 CDN 会遵循源服务器通过 HTTP 头(如 Cache-Control)返回的缓存指令。
  6. 其他设置:如需要,可以配置自定义头、超时等。
  7. 点击 “创建” 完成后端服务的创建。

步骤 3:创建 URL 映射

  1. 在 GCP Console 中,导航到 网络服务 > 负载均衡 > URL 映射
  2. 点击 “创建 URL 映射”
  3. 基本信息
    • 名称my-cdn-url-map
  4. 主机和路径规则
    • 主机名:输入你的域名,www.example.com,如果你还没有域名,可以先使用 来匹配所有主机名。
    • 路径:输入 ,表示匹配所有路径。
    • 后端服务:从下拉列表中选择你刚刚创建的后端服务 my-cdn-backend
  5. 点击 “创建” 完成 URL 映射的创建。

步骤 4:创建全局外部 HTTPS 负载均衡器

  1. 在 GCP Console 中,导航到 网络服务 > 负载均衡
  2. 点击 “创建负载均衡器”
  3. 选择互联网负载均衡器类型:选择 “从互联网到我的 VMs”,然后点击 “继续”
  4. 配置前端
    • 名称my-cdn-load-balancer
    • 协议:选择 HTTPS (强烈推荐)。
    • IP 版本:选择 IPv4
    • IP 地址:选择 “创建 IP 地址”,创建一个全球静态外部 IP 地址,记下这个 IP 地址。
    • 证书:点击 “管理”
      • 创建新的自签名证书(仅用于测试):输入域名,创建一个临时证书。
      • 上传证书(推荐):如果你有证书文件(.pem 格式),可以在这里上传,或者选择 Google 管理的证书,它会自动为你签发和续 Let's Encrypt 的免费证书。
    • 点击 “完成”
  5. 配置后端
    • 点击 “后端配置”
    • 点击 “更改后端服务”
    • 从列表中选择你创建的 URL 映射 my-cdn-url-map
    • 点击 “保存”
  6. 配置审核:检查所有配置是否正确,然后点击 “创建”

部署负载均衡器需要几分钟时间,你可以在负载均衡器的详情页面查看“配置状态”。

Google Cloud CDN教程如何快速配置与优化?-图3
(图片来源网络,侵删)

步骤 5:配置域名和 SSL 证书

  1. 配置域名:到你购买域名的 DNS 管理商(如 GoDaddy, Namecheap 等)处,添加一个 A 记录。
    • 名称www (或 代表根域名)。
    • 值/类型:指向你在步骤 4 中创建的全局静态外部 IP 地址
  2. 等待 DNS 生效:DNS 更新可能需要几分钟到几小时不等,你可以使用 nslookup www.example.com 来验证 IP 地址是否已更新。

步骤 6:部署并测试

  1. 等待负载均衡器状态变为 “运行中”
  2. 在浏览器中访问你的域名:https://www.example.com
  3. 第一次访问:页面会从你的源站 VM 加载,你可以通过查看 VM 的访问日志来确认这一点。
  4. 第二次访问:再次刷新页面,这次响应应该非常快,你可以在 Chrome DevTools 的 Network 面板中查看响应头,如果看到 X-Cloud-Trace-ContextX-CDN-CacheX-Edge-Cache 等头,并且值为 HIT,说明 CDN 已经缓存了内容并成功命中。

高级配置与最佳实践

缓存键

缓存键是 CDN 用来判断两个请求是否“相同”的依据,默认情况下,缓存键包括:

  • 请求的 HTTP 方法 (通常是 GETHEAD)
  • 请求的完整 URI (包括查询参数 ?a=1&b=2)

最佳实践:对于动态页面(如 ?user=123),你可能不希望每个用户 ID 都产生一个独立的缓存,这时可以修改缓存键,排除查询参数

  • 操作:在后端服务的 CDN 设置中,找到 “高级缓存设置” -> “缓存键” -> “查询参数”,选择 “忽略所有查询参数”,这样 page.html?id=1page.html?id=2 会命中同一个缓存。

缓存模式

  • Use origin headers (默认):尊重源服务器通过 Cache-Control 等头指令,这是最灵活的方式。
  • Cache all content:忽略源服务器的缓存指令,强制缓存所有成功的 200 OK 响应,适用于内容几乎不变的静态资源。
  • Disable caching:不缓存任何内容,适用于实时性要求极高的数据。

缓存所有内容

如果你确信你的后端服务返回的内容是静态的,可以在后端服务的 CDN 设置中,将 “缓存模式” 设置为 “Cache all content”,这可以最大限度地减少回源,提升性能。

自定义错误页面

当源站返回 404 Not Found500 Server Error 时,你可以配置 CDN 返回一个自定义的错误页面,而不是直接传递源站的错误信息。

  • 操作:在后端服务的 CDN 设置中,找到 “自定义错误响应”,添加规则,例如将 404 映射到一个 Cloud Storage 存储桶中的 html 文件。

安全性与认证

  • Cloud Armor:在负载均衡器的“安全”部分,可以配置 Cloud Armor,提供 Web 应用防火墙 功能,防止 DDoS 攻击和常见的 Web 漏洞。
  • Identity-Aware Proxy (IAP):如果需要对受保护的资源进行用户身份验证,可以将 IAP 与负载均衡器集成。

性能优化

  • Brotli/Gzip 压缩:确保你的源服务器或负载均衡器启用了内容压缩,CDN 会自动处理压缩和解压,减少传输数据量。
  • HTTP/2 和 HTTP/3:现代浏览器默认支持,能显著提升性能,确保你的 SSL 证书配置正确。

监控与日志

  • Cloud Monitoring:在 GCP Console 的“监控”部分,你可以查看 CDN 的关键指标,如:
    • 请求总数
    • 缓存命中率:最重要的性能指标。
    • 平均延迟
    • 带宽使用量
  • Cloud Logging:在“日志”部分,你可以查看详细的请求日志,这对于调试问题非常有用,可以查看请求是否命中缓存、回源详情等。

常见问题与故障排查

  • 问题:缓存命中率很低。

    • 排查
      1. 检查源服务器返回的 Cache-Control 头,是否设置了 no-storeprivate
      2. 检查 URL 是否有动态的查询参数没有被排除在缓存键之外。
      3. 确保请求的 HTTP 状态码是 200 OK206 Partial Content
  • 问题:用户访问速度没有明显提升。

    • 排查
      1. 使用 pingtraceroute 检查用户到 CDN IP 的网络路径是否正常。
      2. 使用 curl -I https://your-domain.com 查看响应头,确认 X-CDN-Cache: HIT 存在。
      3. 检查源服务器本身是否就是性能瓶颈。
  • 问题:部署后网站无法访问。

    • 排查
      1. 检查负载均衡器的“配置状态”是否为“运行中”。
      2. 检查防火墙规则是否正确配置。
      3. 检查健康检查是否通过,在“健康检查”页面查看目标实例组的状态。
      4. 检查 DNS 记录是否正确配置。

Google Cloud CDN 是一个功能强大且易于集成的服务,能够显著提升全球用户的访问体验,并降低源服务器的负载,通过本教程,你应该已经掌握了从零开始配置 CDN 的基本流程。

CDN 的核心在于 缓存,理解如何通过 缓存键缓存模式 来精确控制缓存行为,是发挥其最大潜力的关键,结合 监控日志,你可以持续优化配置,确保你的应用始终以最佳性能运行。

分享:
扫描分享到社交APP
上一篇
下一篇