排查内部 HTTP(S) 负载平衡

本指南介绍如何排查 Google Cloud 内部 HTTP(S) 负载平衡器的配置问题。在按照本指南进行操作之前,请先熟悉以下内容:

负载平衡流量不含原始客户端的来源地址

这是预期行为。内部 HTTP(S) 负载平衡以 HTTP(S) 反向代理(网关)的形式运行。在一个客户端程序打开与 INTERNAL_MANAGED 转发规则的 IP 地址的连接时,连接会在代理处终止。代理会处理通过该连接到达的请求。对于每个请求,代理都会根据网址映射和其他因素选择接收请求的后端。然后,代理会将该请求发送到选定的后端。因此,从后端的角度来看,传入数据包的来源是区域性代理专用子网中的某个 IP 地址。

负载平衡器拒绝请求

对于每个请求,代理都会根据负载平衡器的网址映射中的路径匹配器选择接收请求的后端。如果网址映射没有为请求定义路径匹配器,则无法选择后端服务,因此它会返回 HTTP 404(未找到)响应代码。

负载平衡器未连接到后端

您需要对保护后端服务器的防火墙进行配置,使其允许来自您分配给内部 HTTP(S) 负载平衡器所在区域的代理专用子网范围内的代理的入站流量。

这些代理会使用您的后端服务配置指定的连接设置连接到后端。如果这些值与您的后端上运行的服务器配置不匹配,则代理无法将请求转发给后端。

运行状况检查探测无法访问后端

如需验证运行状况检查流量是否已到达后端虚拟机,请启用运行状况检查日志记录并搜索成功的日志条目。

客户端无法连接到负载平衡器

代理根据转发规则中指定的协议(HTTP 或 HTTPS),监听与转发规则中配置的负载平衡器 IP 地址和端口(例如,10.1.2.3:80)之间的连接。如果您的客户端无法连接,请确保其使用的是正确的地址、端口和协议。

确保防火墙并未屏蔽客户端实例与负载平衡 IP 地址之间的流量。

确保客户端与负载平衡器位于同一区域。内部 HTTP(S) 负载平衡是区域性产品,因此所有客户端(和后端)都必须与负载平衡器资源位于同一区域。

共享 VPC 的组织政策限制

如果您使用的是共享 VPC,并且无法在特定子网中创建新的内部 HTTP(S) 负载平衡器,造成此问题的原因可能是组织政策。在组织政策中,将该子网添加到允许的子网列表中,或与组织管理员联系。如需了解详情,请参阅 constraints/compute.restrictSharedVpcSubnetworks

负载平衡器不会跨地区均匀分配流量

您可能会发现跨地区的内部 HTTP(S) 负载平衡器流量不平衡。当后端容量利用率较低(小于 10%)时,可能会发生这种情况。

由于流量仅被发送到一个地区的几个服务器,因此这种行为可能会影响整体延迟时间。

如需平衡跨地区的流量分配,您可以对以下配置进行更改:

  • 使用 max-rate-per-instance 目标容量较低的 RATE 平衡模式
  • 使用 LocalityLbPolicy 后端流量政策LEAST_REQUEST 作为负载平衡算法。

限制

如果您在将内部 HTTP(S) 负载平衡与其他 Google Cloud 网络功能配合使用时遇到问题,请注意当前的兼容性限制