Cloud Load Balancing 提供了将用户流量分配到应用的多个实例的机制。他们通过将负载分布到多个应用实例中并为最终用户提供最佳应用性能来实现这一点。本页面介绍了一些最佳实践,以确保针对您的应用优化负载均衡器。为了确保最佳性能,建议您对应用的流量模式进行基准化分析。
将后端放置在靠近客户端的位置
用户或客户端应用与您的工作负载(负载均衡器后端)越接近,它们之间的网络延迟时间就越短。因此,请在预计用户流量到达 Google Front End 的区域中创建负载均衡器后端。在许多情况下,需要在多个区域中运行后端,以最大限度地减少全球不同区域客户端的延迟时间。
如需了解详情,请参阅以下主题:
使用 Cloud CDN 启用缓存
在默认全球外部应用负载均衡器配置中启用 Cloud CDN 和缓存。如需了解详情,请参阅 Cloud CDN。
当您启用 Cloud CDN 时,可能需要等待几分钟时间,然后系统才能开始缓存响应。Cloud CDN 仅缓存具有可缓存内容的响应。如果某网址的响应没有被缓存,请检查为该网址返回了哪些响应标头,以及后端的可缓存性如何配置。如需了解详情,请参阅 Cloud CDN 问题排查。
转发规则协议选择
对于全球外部应用负载均衡器和传统应用负载均衡器,我们建议使用 HTTP/3,这是基于 IETF QUIC 构建的互联网协议。HTTP/3 在所有主要浏览器、Android Cronet 和 iOS 中默认启用。如需为您的应用使用 HTTP/3,请确保网络上的 UDP 流量不被屏蔽或受到速率限制,并且 HTTP/3 之前没有在全球外部 HTTP(S) 负载均衡器上禁用。尚不支持 HTTP/3 的客户端(如旧版浏览器或网络库)不受影响。如需了解详情,请参阅 HTTP/3 QUIC。
对于区域级外部应用负载均衡器,我们支持 HTTP/1.1、HTTPS 和 HTTP/2。HTTPS 和 HTTP/2 都需要一些前期开销才能设置 TLS。
后端服务协议选择
您选择的后端协议(HTTP、HTTPS 或 HTTP/2)会影响应用延迟和应用的可用网络带宽。例如,在负载均衡器和后端实例之间使用 HTTP/2 时,需要与实例之间建立的 TCP 连接数量要比使用 HTTP(S) 时多得多。目前,HTTP/2 不支持连接池;连接池是一项优化功能,可通过 HTTP(S) 减少这些连接的数量。因此,您可能会看到后端延迟时间较长,因为系统会进行更频繁的后端连接。
后端服务协议还会影响流量的传输加密方式。借助外部 HTTP(S) 负载均衡器,所有流向 Google Cloud VPC 网络内的后端的流量都会自动加密。此过程称为自动网络级加密。但是,自动网络级加密仅适用于与实例组和可用区 NEG 后端的通信。对于所有其他后端类型,Google Cloud 建议您使用 HTTPS 和 HTTP/2 等安全协议选项来加密与后端服务的通信。如需了解详情,请参阅从负载均衡器到后端的加密。
建议的连接时长
网络条件发生变化,后端集可能会根据负载而变化。对于为单个服务生成大量流量的应用,长时间运行的连接并不总是最佳设置。我们建议您选择最长连接生命周期(例如 10 到 20 分钟)和/或最大请求数(例如,介于 1000 到 2000 个请求之间;之后,系统会使用新连接来处理新请求。使用旧连接的所有活跃请求都关闭后,旧连接就会关闭。
这使客户端应用能够受益于一组后端的更改,包括负载均衡器的代理和为客户端提供服务所需的任何网络重新优化。
均衡模式选择条件
为了获得更好的性能,请考虑根据哪个后端响应最快速来为每个新请求选择后端群组。这可以通过使用 RATE
均衡模式实现。在这种情况下,系统会选择在最近请求后平均延迟时间最少的后端群组,或者针对 HTTP/2 和 HTTP/3 选择待处理请求最少的后端群组。
UTILIZATION
均衡模式仅适用于实例组后端,并根据实例组中的虚拟机实例利用率分配流量。
配置会话亲和性
在某些情况下,同一后端处理来自同一最终用户或与同一最终用户相关的请求可能是有益的,至少在短时间内是这样。您可以使用会话亲和性(在后端服务上配置的设置)进行配置。会话亲和性控制从客户端到负载均衡器后端的新连接分配。您可以使用会话亲和性来确保同一后端处理来自同一资源的请求,例如与同一用户账号或来自同一文档的请求。
系统会针对整个后端服务资源(而不是按后端)指定会话亲和性。但是,网址映射可以指向多个后端服务。因此,您无需对负载均衡器仅使用一种会话亲和性类型。根据您的应用,您可以使用具有不同会话亲和性设置的不同后端服务。例如,如果应用的一部分向许多用户提供静态内容,则不太可能从会话亲和性中受益。请改用启用 Cloud CDN 的后端服务来提供缓存的响应。
如需了解详情,请参阅会话亲和性。