Google PCNE: 负载均衡、Cloud CDN 和全球流量管理 — 学习指南
属于 Google Professional Cloud Network Engineer — 学习指南. 使用经过验证的答案练习: Google 考试中心, 或参加限时模拟考试: ExamRoll.io.
概述
本节说明 Google Cloud Load Balancing、Cloud CDN 和全局流量管理如何协同工作,以交付具有弹性、高性能和安全性的服务。内容涵盖负载均衡器系列和选择、代理与直通行为、后端和路由组件、故障切换和容量管理、Cloud CDN 缓存和源站保护、任播和跨区域设计、DNS 导向和健康检查、可观测性,以及用于构建稳健全局入口点的设计模式。
负载均衡器系列、选择和数据平面行为
Google Cloud 提供具有不同范围、协议和数据平面特性的外部和内部负载均衡器。选择合适的负载均衡器可以匹配协议需求、地理位置和操作控制。
外部代理 L7(全局):External Application Load Balancer,用于 HTTP(S) 和 gRPC。它会终止 TLS、强制执行 L7 策略、支持 URL 映射、Cloud CDN、Cloud Armor、请求/响应功能以及任播 IPv4/IPv6。最适合需要高级路由、安全和缓存功能的面向互联网的 Web API/站点。
外部代理 L4.5:External TCP Proxy Load Balancer(全局)和 External UDP Proxy Load Balancer(区域级)会终止客户端连接并将其代理到后端。当您需要全局 VIP 和 L4 功能(TLS 策略、通过标头保留客户端 IP(针对 TCP))但不需要 L7 路由时,可使用此类负载均衡器。
外部直通 L3/L4(区域级):External Network Load Balancer 转发数据包而不终止连接。延迟最低且最简单;支持 TCP/UDP/ESP/ICMP。适用于直接迁移 (lift-and-shift)、异构后端或无法容忍代理终止的协议。传统的 NLB 使用目标池;较新的区域级直通 NLB 使用后端服务。
内部代理(区域级):Internal HTTP(S) Load Balancer (L7) 和 Internal TCP Proxy Load Balancer (L4.5) 在 VPC 内部终止连接并进行代理,用于微服务的南北向和服务到服务的场景。支持主机/路径路由 (HTTP)、通过应用实现到客户端的 mTLS,以及每个服务的安全策略。
内部直通(区域级):Internal TCP/UDP Load Balancer 通过私有 RFC1918 地址将连接分发到后端,保留客户端 IP 并使用 MAGLEV 哈希算法。是需要可用区感知分发和低开销的东西向服务(数据库、自定义协议)的理想选择。
分层和终止的权衡:
- 代理 L7/4.5 提供高级路由、TLS 卸载、可观测性、Cloud Armor/CDN 和跨区域故障切换,但代价是增加了额外的跃点和可能的标头/NAT 更改。它适用于公共入口点和服务网格。
- 直通 L3/L4 可端到端保留客户端 IP 并最大限度地减少延迟,但没有 L7 功能,可观测性钩子也较少。会话行为基于哈希;健康检查更简单。
范围和 IP 系列:
- 全局任播 VIP 可用于 External Application LB 和 External TCP Proxy LB,提供可从任何地方访问的单一 IPv4/IPv6 地址。区域级 LB 使用区域级单播 VIP。为公共服务暴露 IPv6 是通过为外部全局负载均衡器配置 IPv6 地址来实现的。
选择标准要点:
- 需要主机/路径路由、重定向、Cloud CDN、Cloud Armor 或 gRPC:External Application LB。
- 需要不带 L7 的全局 TCP:External TCP Proxy LB。
- 不喜欢代理的协议(例如,一些旧版 UDP/TFTP):外部或内部直通负载均衡器。
- 具有 HTTP 路由的私有服务到服务通信:Internal HTTP(S) LB。
- 最大限度地减少 VPC 内部流量的成本/跃点:内部直通负载均衡器。
后端服务、路由对象、健康状况和流量粘性
核心数据平面对象:
- 后端服务:定义后端(实例组、可用区级 NEG、混合 NEG、无服务器 NEG)、健康检查、均衡模式、容量、会话亲和性、超时和故障切换策略。代理型 LB 和较新的直通型 LB 必须使用此对象。
- 目标池:传统外部 NLB 的旧版构造。适用于简单的 TCP/UDP 分发以及在直接迁移(lift-and-shift)期间的异构虚拟机。
- 命名端口:实例组上的键,用于将逻辑名称(例如 http)映射到端口号,由后端服务和 URL 映射引用。确保在组成员之间保持一致。
健康检查和故障切换:
- 类型:HTTP(S)、HTTP/2、gRPC、TCP、SSL。选择能够验证实际服务就绪情况的检查,而不仅仅是操作系统的可达性。
- 范围:健康检查是区域性的;每个后端都应有一个范围限定在其服务区域的健康检查。
- 故障切换策略:后端服务可以指定主后端和故障切换后端。当主后端不健康或容量不足时,流量会进行故障切换(如果启用了基于容量的故障切换且满足阈值)。考虑使用排空和容量预留来避免惊群效应(thundering herd)。
URL 映射和路由:
- URL 映射附加到外部或内部 HTTP(S) LB,并定义主机规则和路径匹配器。
- 默认服务:用于处理不匹配任何规则的请求的包罗(catch-all)后端;如果未设置,则返回 404。
- 重定向和重写:使用 URL 映射操作在路由前执行 HTTPS 重定向、规范主机重定向或路径重写。
示例:带有 HTTPS 重定向和默认后端的最小 URL 映射
- 为 example.com 创建一个主机规则,将 HTTP 重定向到 HTTPS,将 /static 路由到一个启用了 CDN 的后端存储桶,并默认路由到一个区域级后端服务。
会话亲和性和连接排空:
- 亲和性选项取决于 LB 类型。常见选项:
- 无:最适合无状态应用;可最大化负载分发效果。
- 客户端 IP:跨 L4/L7 按源 IP 保持粘性;当多种协议(例如 HTTP 和 TFTP)必须共同粘滞到同一后端时使用。
- 生成的 Cookie(仅限 L7):LB 设置一个 Cookie 以持久化到某个后端;对于经过 NAT 的客户端,其分发效果优于客户端 IP。
- 权衡:亲和性可能导致热点问题并使自动扩缩复杂化。尽可能首选无状态设计。
- 连接排空:在缩容或移除后端时,LB 会遵守排空超时设置,让现有连接正常关闭。将排空时间调整为您预期的最长请求时间,以防止连接重置。
容量和自动扩缩:
- 均衡模式:基于利用率(例如 CPU)、RPS 或连接数。每个后端都会通告其容量;当达到饱和时,LB 会分流负载或进行故障切换。
- 自动扩缩:代管式实例组根据信号(CPU、自定义指标)进行扩缩。如果 LB 容量耗尽,扩容延迟可能导致 503 错误;可通过设置最小副本数或使用预测性自动扩缩来为日常周期性流量进行预热。
- 故障切换和溢出:启用基于容量的故障切换并设置适当的阈值,可以实现平滑的跨区域流量溢出。
后端安全:
- 使用针对实例标签或服务账号的防火墙规则来限制对后端的访问。如果内部客户端需要直接访问,则仅允许来自 Google 负载均衡器和健康检查源范围以及您批准的客户端范围的流量。
示例:将客户端和健康检查限制到带有特定标签的后端组
- 为实例添加
application标签。 - 创建一个入站允许规则,允许来自您的客户端 CIDR 和 Google 健康检查范围的 tcp:80 流量,目标为
application标签。 - 建议采用默认拒绝策略,以便在日志中发现被丢弃的流量。
Cloud CDN、缓存策略和源站保护
Cloud CDN 与外部 Application Load Balancer 集成,在边缘 POP 缓存响应,从而降低延迟并减轻源站的容量压力。
缓存模式和 TTL:
- 使用源站标头:遵循源站的 Cache-Control 和 Expires 标头。为确保正确性,这是首选方式。
- 强制缓存:使用配置的默认 TTL 缓存所有响应,可以选择性地覆盖或忽略静态内容的源站标头。请谨慎使用,以避免缓存动态数据。
- 绕过缓存:适用于绝不能缓存的路径。
缓存键:
- 键字段包括协议、主机、路径、查询参数、标头和 Cookie。根据需要配置查询字符串策略(全部包含、包含选定项或忽略)、选择性地包含标头和 Cookie 以及设备细分。
- 保持缓存键最小化以最大化命中率;仅根据会改变响应内容的字段进行区分。
签名请求:
- 签名 URL:附加一个带有过期时间和路径范围的 HMAC 或 RSA 签名,以授予对特定资源的限时访问权限。适用于将 CDN 作为加速器并进行按对象授权的场景。
- 签名 Cookie:使用 Cookie 为一组路径授权;适用于对整个网站的受限内容进行访问控制。
- 轮换密钥并强制执行较短的过期时间,以降低重放攻击的风险。
压缩与正确性:
- 即使请求中包含 Via 标头,源站也必须进行压缩。如果 CDN 提供的是未压缩的对象,而源站“支持压缩”,请验证源站是否已配置为在存在 Via 标头时进行压缩。
源站安全:
- 从边缘代理到源站应使用 HTTPS,并采用现代化的 TLS 策略。
- 限制源站的可达性:后端防火墙规则应只允许来自 Google 负载均衡器和健康检查源 IP 范围以及已知私有生产者的流量。后端实例不应接受任意的公共入站流量。
- 与 Cloud Armor 配合使用,以实现 L7 DDoS/WAF 防护、速率限制和威胁检测。对新规则使用预览模式以减少误报。
- 当您必须在 TTL 过期前清除缓存时,应使用缓存失效 API 来主动使内容失效。对于动态内容,首选短 TTL 和重新验证(ETag/If-None-Match)。
故障模式与权衡:
- 过于宽泛的缓存键会浪费缓存并降低命中率;过于狭窄的缓存键则有提供错误变体的风险。
- 强制缓存动态数据可能导致个性化内容泄露。
- 签名 URL/Cookie 在边缘保护访问,但仍必须通过网络策略拒绝绕过 CDN 直接访问源站的行为。
全球流量管理、DNS 导向、可观测性与弹性入口点
Anycast 前端入口与跨区域故障切换:
- 外部 Application LB 和外部 TCP 代理 LB 使用全局 Anycast VIP 将客户端吸引到最近的 Google 边缘节点。流量随后被代理到具有容量的、最健康且最近的后端。配置多个后端区域,并为其设置一致的健康检查和容量,以实现无缝的故障切换和溢出。
- 在次要区域预先配置容量以避免冷启动开销;将 autoscaler 的最小/最大值与 LB 的容量阈值进行协调。
区域性内部流量管理:
- 内部 HTTP(S) LB 和内部直通式 LB 是区域性的;设计时应考虑区域内的可用区多样性,并在需要时,通过使用带有 Private Service Connect 的独立 LB 或能选择区域端点的服务感知型客户端来实现多区域部署。
- 通过将相互通信的服务放置在同一区域和 VPC 中,来保持较低的东西向延迟。使用单一 VPC 或对等 VPC 的 RFC1918 地址,以实现最低成本和运维简便性。
Cloud DNS 路由政策和健康检查:
- 政策:加权轮询(流量拆分)、地理位置(将用户发送到最近的区域 VIP)和故障切换(主/备)。组合使用这些政策以满足业务规则。
- 健康检查:将 DNS 健康检查(HTTP/HTTPS/TCP)附加到用于流量导向的 A/AAAA 记录上,以便撤销不健康的端点。考虑到解析器缓存(TTL)会延迟反应时间;在被导向的记录上保持较低的 TTL,以提高故障切换的响应速度,但代价是会增加 DNS 查询次数。
- 流量导向:使用加权政策来分阶段迁移或在区域间转移负载。除非使用分离式 DNS (split-horizon DNS),否则应避免将来自互联网的流量导向到私有地址。
可观测性与诊断:
- 负载均衡器日志记录:为所有 LB 启用日志记录。HTTP(S) 日志包括请求方法/URI、延迟、缓存命中/未命中、后端服务、URL 映射规则、TLS 详情和响应代码。TCP/UDP 日志提供连接元数据和健康探测状态。
- 指标:监控后端健康状况、利用率、RPS、连接数、延迟、缓存命中率、4xx/5xx 错误率和容量饱和度。针对突发变化和持续达到阈值的情况设置告警。
- 常见的 HTTP(S) 错误模式:
- 404:无匹配的 URL 映射;确认主机/路径规则和默认服务。
- 301/302:有意的重定向;检查是否存在重定向循环。
- 502:后端连接或协议不匹配(例如,HTTP/1.1 vs gRPC);检查健康状况和后端协议配置。
- 503:没有健康的后端或后端容量不足;检查健康检查、配额和 autoscaler 的行为。
- 请求跟踪:使用 X-Forwarded-For、X-Forwarded-Proto 以及由您的应用传播的跟踪 ID。使用请求 ID 将 LB 日志与后端日志关联起来。
- 防火墙洞察:在允许和拒绝规则上启用 VPC 防火墙日志记录。要明确记录被丢弃的流量,请添加一条启用了日志记录的低优先级全部拒绝规则。
弹性全局入口点设计:
- 在外部 Application LB 上使用单一的全局 Anycast VIP,并将其作为多个区域后端的前端。将无服务器/虚拟机/容器后端放置在至少两个区域。启用跨区域故障切换和溢出,配置保守的健康检查,并根据您的工作负载调整连接排空和超时设置。
- 使用 Cloud Armor 和配额限制策略来保护入口点。使用 Cloud CDN 处理静态和可缓存的动态内容,以在边缘吸收流量高峰。
- 在全局 LB 上暴露 IPv4/IPv6 双栈以服务所有网络。对于严格的客户端访问控制,应用具有精确来源范围和实例标签或服务账号的后端防火墙规则。
示例:限制客户端和健康检查来源范围访问带标签后端的防火墙规则
- 为实例添加
application标签。 - 创建一条入站允许规则,协议为 tcp:443,来源范围为 203.0.113.0/24、198.51.100.0/24 以及 Google 健康检查来源范围,目标为带有
application标签的实例。 - 确保存在一条优先级较低、带日志记录的全部拒绝规则,以捕获意外的来源。
实际问题场景
Acme Retail 推出一个全球电子商务平台,需要在 us-east1 和 europe-west1 之间实现低延迟、强安全性和透明的故障切换,同时高效地提供静态媒体内容。只有公司办公室和合作伙伴的 CDN 预演网络才能访问私有管理界面。
- 前端入口和后端
- 为公共店面主机名创建一个外部 Application Load Balancer,配备双栈 Anycast VIP 和 TLS 证书。
- 定义两个后端服务,分别指向 us-east1 和 europe-west1 中的区域级代管实例组。启用健康检查(HTTPS),并将平衡模式设置为基于利用率,容量阈值为 80%。理由:Anycast 加上多区域后端可确保用户访问最近的边缘节点,并在某个区域不健康或饱和时无缝进行故障切换。
- URL 映射、路由和重定向
- 配置一个 URL 映射,为公共店面和私有管理员主机名设置主机规则。将
/static路由到启用了 Cloud CDN 的后端存储桶;将/api和/路由到虚拟机后端。添加一个 HTTP 到 HTTPS 的重定向。理由:主机/路径路由将静态流量与动态流量分离,并强制执行安全访问。
- Cloud CDN 策略
- 对于
/static后端存储桶,将缓存模式设置为使用源站标头,并定义一个忽略非功能性查询参数、仅包含 Accept-Encoding 标头的缓存键。为常见的 404 错误启用否定缓存,并设置较短的 TTL。理由:尊重内容语义,最大化缓存命中率,并避免缓存不正确的变体。
- 会话亲和性与连接排空
- 为公共店面设置生成型 Cookie 亲和性,静态资产不设置亲和性;将连接排空时间设置为 60 秒。理由:Cookie 可以在允许广泛分发的同时保持购物车会话的稳定性;连接排空可防止在缩容或故障切换期间出现用户可见的错误。
- 跨区域故障切换和自动扩缩容
- 启用基于容量的故障切换,溢出阈值为 90%,以便将超额流量转移到另一个区域。配置 MIG 自动扩缩容,每个区域的最小副本数为 4,CPU 目标与 LB 的利用率目标相匹配。理由:避免容量悬崖,并协调 LB 和 autoscaler 的决策以实现平滑扩缩容。
- 管理界面限制
- 为私有管理员主机名创建一个内部 HTTP(S) Load Balancer,使其仅在 VPC 内部可访问。发布分离式 Cloud DNS (split-horizon Cloud DNS),以便内部客户端解析到 ILB 的 VIP,而外部客户端收到 NXDOMAIN。理由:在不暴露公共端点的情况下,保持管理流量的私密性和可控性。
- 后端防火墙和源站安全
- 为管理后端和 Web 后端添加
application标签,并添加一条允许规则,协议为 tcp:443,来源为公司和预演网络的 CIDR,以及 Google 负载均衡器和健康检查的来源范围;在较低优先级添加一条带日志记录的全部拒绝规则。理由:确保只有预期的客户端和 Google 基础设施可以访问后端,并提供对被丢弃流量的可见性。
- Cloud Armor
- 应用一个安全策略,其中包含代管 WAF 规则,并为
/api的突发流量设置一个处于预览模式的速率限制。理由:L7 保护和分阶段执行可在调优的同时降低风险。
- Cloud DNS 流量导向和健康检查
- 为公共店面主机名发布 A 和 AAAA 记录,指向 ALB 的 Anycast VIP。对于蓝/绿金丝雀部署,在指定的金丝雀主机名上创建一个加权策略,将 5% 的流量分配给仅限 europe-west1 的 ALB,95% 分配给全局部署。附加 HTTPS 健康检查,以便在金丝雀部署不健康时将其撤销,并将 TTL 设置为 20 秒。理由:基于 DNS 的金丝雀部署能够实现渐进式发布,并具备健康感知移除和快速收敛的能力。
- 可观测性
- 启用 LB 和 CDN 日志;将其导出到 BigQuery 进行分析。针对 5xx 错误率、后端容量、健康检查失败和 CDN 命中率设置告警。使用 URL 映射测试和请求日志来诊断路由错误;检查 502/503 峰值以排查后端饱和或协议不匹配问题。理由:主动监控和快速诊断可最大限度地减少 MTTR 并保障用户体验。
← 混合连接、Cloud Router 和 BGP · 所有领域 · Cloud DNS、服务发现和混合名称解析 →
练习这些题目 → · 在 ExamRoll.io 上限时练习 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
通过考试 →