gpt4 book ai didi

nginx tcp 流 (k8s) - 在上游关闭时保持客户端连接打开

转载 作者:行者123 更新时间:2023-12-05 02:27:42 24 4
gpt4 key购买 nike

我有一个接受 TCP 流量(而不是 HTTP)的应用程序,我希望能够对其进行流量负载平衡。但是,一个要求是当客户端建立连接时,我们在任何情况下(理想情况下)都不会关闭该连接,因为我们正在与一些使用旧技术的客户端打交道。

我已经设置了 kubernetes nginx 入口 Controller ,但它的表现并不像我希望/期望的那样。我想要的是:如果与其中一个上游服务器的连接关闭,则客户端连接会保持打开状态一段时间,同时 nginx 选择一个新的上游服务器并开始向其发送数据。我不关心流的数据被拆分到不同的上游服务器,我只需要在重新部署之类的过程中从客户端的角度来看连接保持打开状态。

实际发生的情况是,从我的客户的角度来看,目前当上游服务器应用程序关闭连接时,我的连接也关闭了,我必须重新连接。

入口 Controller 有这个配置,我认为它可以完成我想要的,但它似乎没有按预期工作:


server {
preread_by_lua_block {
ngx.var.proxy_upstream_name="tcp-my-namespace-my-service-7550";
}

listen 7550;

proxy_timeout 600s;
proxy_next_upstream on;
proxy_next_upstream_timeout 600s;
proxy_next_upstream_tries 3;

proxy_pass upstream_balancer;

}

非常感谢任何帮助,我很乐意提供更多信息。

最佳答案

您所描述的是 nginx 如何与 http 开箱即用。然而

  1. Nginx对http有详细的了解
  2. HTTP 是一种基于消息的协议(protocol),即使用请求和回复

由于 nginx 对您正在使用的协议(protocol)一无所知,即使它使用没有隐含状态的请求/回复机制,nginx 也不知道它是否收到了不在其他地方重播的请求。

您需要实现协议(protocol)感知 mitm。

关于nginx tcp 流 (k8s) - 在上游关闭时保持客户端连接打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72997577/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com