TCP 请求在 Google 云负载均衡器上丢失

TCP 请求在 Google 云负载均衡器上丢失

我们正在为我们的一项服务使用 TCP Google Cloud Loadbalancer。

架构如下:有一个 TCP 负载均衡器,其前端允许使用一系列端口,并连接后端实例,并且实例服务在 LB 上打开的相同端口上运行。

例如:LB IP -1.1.1.1:(100-200)即,端口范围是开放的。现在后端有 3 个实例正在运行,并且服务在端口 100、101 和 103 上运行。

作为用户,如果您想访问在端口 100 上运行的服务,则必须使用 LB IP:100 来访问服务。但从过去几天开始,请求被丢弃。但是,如果您尝试直接连接到实例 IP:100,服务将正常工作。因此,我无法找出确切的原因。请求也是基于 TCP 的,那么为什么 LB 会丢弃它呢?

请给我一些建议。注意:有没有办法从 GCloud 或控制台检查 LB 日志???

答案1

为了更好地了解情况,发布 OP 自己的答案:

我的问题不是由于 LB 引起的。

我的 LB 使用循环算法,它只是传递请求而不检查后端服务器状态。我的服务器中只有一台在运行,因此一半的请求被丢弃。

我刚刚在同一个 LB 下配置了一个实例,问题就解决了。

这种解决方案是最“粗暴”的,它不提供任何故障保护。如果任何服务器出现故障,一些请求将被丢弃,服务将降级。

避免这种情况的最简单方法是创建一个托管实例组并使用健康检查验证所有虚拟机是否正在运行,然后创建负载均衡器

相关内容