Google Compute Engine 全局 HTTP 负载均衡器

Google Compute Engine 全局 HTTP 负载均衡器

我正在使用 Google Compute Engine。我已经设置了部署管理器,它设置了一个防火墙,允许网络 LB 连接到 Web 服务器,Web 服务器本身将它们添加到实例组管理器,它设置了一个针对实例组管理器的自动缩放器,HTTP 运行状况检查设置将针对 Web 服务器实例执行,它将 HTTP 运行状况检查添加到后端服务并将实例组管理器添加到后端服务,它设置了一个 URL 映射,其中后端服务是它的默认服务,而 URL 映射器又被添加到 HTTP 代理,该代理由具有全局 IP 的转发规则指向。

此设置与此处描述的设置非常相似https://cloud.google.com/solutions/scalable-and-resilient-apps

现在,我似乎可以解决此设置的问题。我在 Web 服务器上运行了一个 Nginx 服务器,它响应请求,我能够创建到它的事件源连接,但恰好 1 分钟后,连接因错误 INCOMPLETE_CHUNKED_ENCODING 而关闭。如果我直接连接到其中一个 Web 服务器,则不会发生这种情况。我已将 tcp keepalive 的 sysconf 设置更改为:

net.ipv4.tcp_keepalive_time=600 
net.ipv4.tcp_keepalive_intvl=15 
net.ipv4.tcp_keepalive_probes=5

阅读后https://cloud.google.com/compute/docs/troubleshooting#networktraffic

我在 nginx 配置中尝试了无数的方法但似乎无法找到解决方案。

有人有任何想法或类似的问题吗?

答案1

亚历克斯分享该帖子链接是正确的,因为它指向了主要问题,但需要一点解释。

您需要更改 Nginx 配置文件 (/etc/nginx/nginx.conf) 中的“keepalive_timeout”值(默认值为 65),以增加 HTTP 连接超时时间,这样您的超时时间就会长于负载均衡器中的 600 秒超时时间。这会导致负载均衡器而不是 nginx 成为关闭空闲连接的一方。

调整 nginx keepalives 以与 Google Cloud Platform HTTP(S) 负载均衡器配合使用。
在 nginx 中设置“keepalive_timeout 650;”/etc/nginx/nginx.conf

keepalive_timeout 650;
keepalive_requests 10000;

更多详细信息http 持久性

答案2

nginx可能需要一些调整

相关内容