TCP 负载均衡架构方案提问

2018-08-23 15:23:51 +08:00
 aino

V2 大佬多过来提问一下

—————————————————————————————————————————————————————————

目前项目接入了很多不同协议的硬件设备,为了识别协议每个都开了一个端口,通过固定的端口去判断是什么厂商协议。

目前情况就是端口泛滥,分布式不知道怎么做。

想整一个网关层开放一个端口一个固定 IP,然后分流去各个服务器处理。求大佬教育!!!!!!!!!!

1633 次点击
所在节点    问与答
10 条回复
mhycy
2018-08-23 15:30:21 +08:00
端口泛滥分布式不知道怎么做的意思是?
另:固定端口固定 IP 会遇到协议识别问题
s609926202
2018-08-23 15:31:17 +08:00
占楼问:TCP 下的负载均衡如何获取 client ip,,,
aino
2018-08-23 15:34:44 +08:00
@mhycy
1、意思是现在为了识别是那一家厂商的协议就得在服务器上开放一个端口去识别它,想做成之开放一个端口并且能够识别得出是哪家厂商协议的。
2、我想固定端口 IP 主要是为了以后服务器分布式,多 IP,让设备不用更改 IP,就在网关层去分发下去。
aino
2018-08-23 15:36:21 +08:00
@s609926202 这个问题问的好!我也想多,nginx 分流下发到服务器可以的,当是服务器上报到设备,分流的情况怎么找到设备的 IP 呢
mhycy
2018-08-23 15:51:30 +08:00
@aino
设备不更改 IP 也要考虑到机房搬迁的可能性
建议使用域名绑定 ip,这样设备只需要连接之前动态查询现在的 IP 就好

至于网关的单端口多协议负载均衡,有一个前提:协议的定义是已知且容易区分的
需要考虑协议识别的资源消耗,虽说只要识别出个头就可以直接转发了

至于多出来的那个如何读取到客户端 ip 的问题,
代理式负载均衡无解,除非这是路由设备,那么通过 NAT 形式是可以拿到源 IP 的
s609926202
2018-08-23 16:27:12 +08:00
@mhycy
TCP 下我看 AWS 可以开启代理协议标头获取 IP,试过一次把站点搞崩后没敢再试、
mhycy
2018-08-23 16:29:13 +08:00
@s609926202
你说的是 HTTP ?

TCP 上承载的协议不明的话除了 IP 包头加料(用扩展字段)好像没别的方案了。。
keramist
2018-08-23 16:29:55 +08:00
haproxy 行的话就上吧
vanlink
2018-08-23 17:12:19 +08:00
@s609926202
请参考 https://www.weibo.com/ttarticle/p/show?id=2313501000014137437101208291
一般没这么用的,需要改造真实服务器的 tcp 协议栈。
还是得在应用层做文章。
vanlink
2018-08-23 17:13:37 +08:00
那得做应用层协议识别,费时费力,一般没这么干的。

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

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

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

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

© 2021 V2EX