tcp 负载均衡, nginx 问题请教

2019-09-10 12:43:20 +08:00
 balabalaguguji

我有个服务,是 TCP 的,我想上行和下行分配到不同服务器去处理 ,我希望的是他们经过代理服务器分配到执行服务器后,流量不再经过代理服务器,而是重新连接到了新的服务器,在不修改客户端当前重连机制下,有什么方法可以做到? nginx 可以做到吗?

3436 次点击
所在节点    程序员
28 条回复
lllllliu
2019-09-10 15:14:20 +08:00
@balabalaguguji 一个域名也可以呀,入口 Nginx 负载,Nginx 反向代理区分服务就好呀这是最简单的。然后服务都是内网,就可以做自己的负载策略了呀,也可以直接上 k8s 治理呀。

资源 /文件服务可以单独做集群,其他业务返回一个 302 到这个服务到地址就好了呀,反正用户都是无感知。
optional
2019-09-10 15:48:18 +08:00
@balabalaguguji tcp 是有状态的,两个 ip 地址怎么上下行分离,用 MPTCP 做手脚?
感觉还不如服务器返回一个 301/302 去另一台服务器下载。
justfly
2019-09-10 15:58:32 +08:00
1. 魔改内核 tcp 协议栈,proxy 拿到连接后通知 real server 和 路由,从而在 real server 绕过握手产生一个连接
2. 魔改你们公司路由器,接到 proxy 的通知后,改对该连接的包路由到 realserver

PS. 我随便扯的,没人这么干的,我觉得你也没这能力。
balabalaguguji
2019-09-10 16:37:47 +08:00
感觉这个还是不太现实,难以做到,放弃了
jziwenchen
2019-09-10 16:45:03 +08:00
换种思路

连接正式服务器前 从代理服务器询问真实服务器地址.
nimbus
2019-09-10 16:52:02 +08:00
真实服务器配置 loopback 地址为 nginx 的发布的代理地址,服务器的网关不走代理,回包直接用这个 loopback 地址作为源地址回包,就不经过代理了。
cigarzh
2019-09-10 21:28:28 +08:00
你这要 hack 传输层,没必要
应用层模仿一个就好了
balabalaguguji
2019-09-11 11:35:51 +08:00
@jziwenchen #25 没认真审题,不能修改客户端,客户端不是我自己写的,如果能修改客户端,就可以跟你说的,这么简单搞定了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/599600

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX