V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
aino
V2EX  ›  问与答

TCP 负载均衡架构方案提问

  •  
  •   aino · 2018-08-23 15:23:51 +08:00 · 1634 次点击
    这是一个创建于 2320 天前的主题,其中的信息可能已经有所发展或是发生改变。

    V2 大佬多过来提问一下

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

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

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

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

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

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

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

    TCP 上承载的协议不明的话除了 IP 包头加料(用扩展字段)好像没别的方案了。。
    keramist
        8
    keramist  
       2018-08-23 16:29:55 +08:00 via Android
    haproxy 行的话就上吧
    vanlink
        9
    vanlink  
       2018-08-23 17:12:19 +08:00
    @s609926202
    请参考 https://www.weibo.com/ttarticle/p/show?id=2313501000014137437101208291
    一般没这么用的,需要改造真实服务器的 tcp 协议栈。
    还是得在应用层做文章。
    vanlink
        10
    vanlink  
       2018-08-23 17:13:37 +08:00
    那得做应用层协议识别,费时费力,一般没这么干的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1335 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:20 · PVG 01:20 · LAX 09:20 · JFK 12:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.