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

关于负载均衡方案

  •  
  •   maxmin · 2018-01-24 09:50:54 +08:00 · 3406 次点击
    这是一个创建于 2255 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近准备把我们的后台对接服务器加上负载均衡功能,避免因为某一台对接服务器挂机,导致接入的设备,用户得到有效的实时数据。

    大家有什么好的解决方案,或者开源比较成熟的方案吗?

    求帮忙推荐一下

    ps: 大致流程: 对接服务器负责管理接入的设备,然后再上报信息给中心管理服务器,中心管理服务器再推送给用户。 用户控制的话则先到中心管理服务器->对接服务器->设备。

    23 条回复    2018-01-25 14:19:29 +08:00
    zlfzy
        1
    zlfzy  
       2018-01-24 09:53:46 +08:00
    上阿里云的负载均衡就行了
    mewushuang
        2
    mewushuang  
       2018-01-24 10:05:56 +08:00 via Android
    keepalived
    maxmin
        3
    maxmin  
    OP
       2018-01-24 10:10:28 +08:00
    @zlfzy 局域网。不适合用阿里云。

    @mewushuang 啥意思?
    hxndg
        4
    hxndg  
       2018-01-24 10:13:05 +08:00
    我忽然觉得不如直接买台负载均衡设备。。。
    比方说绿盟,华耀中国,启明星辰。。
    maxmin
        5
    maxmin  
    OP
       2018-01-24 10:15:27 +08:00
    @hxndg 之前已经买过 F5, 有些时候场景不适用,所以还得自己来搞一搞。
    xenme
        6
    xenme  
       2018-01-24 10:16:58 +08:00
    开源 HAProxy 这种,商业 NetScaler/F5
    greenskinmonster
        7
    greenskinmonster  
       2018-01-24 10:17:12 +08:00
    搜索 keepalived、haproxy,如果可以用 nginx 反代,那么也可以。
    shooyaaa
        8
    shooyaaa  
       2018-01-24 10:23:05 +08:00
    量不是巨大的话用 nginx
    zlfzy
        9
    zlfzy  
       2018-01-24 10:24:01 +08:00
    @maxmin 一般来说 nginx 够你用了
    hxndg
        10
    hxndg  
       2018-01-24 10:26:44 +08:00
    @maxmin 你是要哪种负载均衡? rr, cookie, ss?
    maxmin
        11
    maxmin  
    OP
       2018-01-24 10:30:29 +08:00
    @zlfzy @shooyaaa 服务器管理的设备有两种注册方式,一种设备主动向服务器注册的,一种是服务器向设备发起连接的,这种情况下,nginx 的负载均衡支持吗?


    @hxndg 主要为了防止工作期间某一个服务器挂机了,其他备用服务器能把设备信息同步过来,提供给用户 7*24 的管理,控制。
    kkk330
        12
    kkk330  
       2018-01-24 10:31:42 +08:00
    lvs
    hxndg
        13
    hxndg  
       2018-01-24 11:04:51 +08:00
    @maxmin 我又想了一下,感觉你这个不是负载均衡。
    因为负载均衡是不涉及服务器上的数据的,你可能需要看一下灾备备份的东西,多机热启等等。
    imherer
        14
    imherer  
       2018-01-24 11:07:39 +08:00
    nginx 吧
    maxmin
        15
    maxmin  
    OP
       2018-01-24 11:17:50 +08:00
    @hxndg 数据的话,只是交互就可以,切换服务器后,同步就可以,灾备也会在其中之一的。
    做这个主要是担心某个时刻服务器挂机了,其他服务器能接管工作。
    soli
        16
    soli  
       2018-01-24 12:30:20 +08:00   ❤️ 2
    看你的描述应该是至少两方面的需求:

    1. 负载均衡,LB (Load Balancing)
    2. 高可用,HA (High Availability)

    把问题分拆成这两方面的,各个击破的话,就比较容易和清晰了。

    不过,我还是综合起来说一个一般性方案吧。你可以按需求进行取舍其中的某一环:

    - 前面上智能 DNS,往后依次是 LVS、HAProxy/Keepalived、Nginx 反代、对接服务器;
    - 对接服务器最好拆分成两层:前置机(负责维持连接、会话)和转发机(负责协议解析、数据转发);
    - 前置机与转发机、转发机与中心管理服务器之间可用简单的一致性哈希做负载均衡(如果机器配置不同,可以加上权重);
    - 上 Zookeeper 做配置管理、服务监听、服务发现、故障转移等;

    上面这一套下来,应该满足你描述中的需求了,并具有了一定的高可靠和可扩展能力。

    然后,你可能就会又有了下面的需求:

    - 高性能:提高性能除了优化底层服务之外(比如自己轮个简化版的 nginx,提高 20% 左右的性能),『缓存』可谓一招鲜(然后你就有了数据一致性的问题,这又是一大块);
    - 异地灾备:可以用多级主从做,不要死磕主数据库。更多的我也不知道了。
    - 多活:这是个复杂的活儿。
    - 自动化:尽量降低人为操作,把各种任务都自动化,自动部署、自动配置、自动升级 /回滚、自动巡检。。。



    以上都是脸滚键盘打出的字。
    hxndg
        17
    hxndg  
       2018-01-24 15:16:02 +08:00 via Android
    @soli 你这是一般方案么?太复杂了,在我看来楼主只要把数据分离出来,服务器可用性据我所知 F5 是能做健康检查的。
    zhouwei520
        18
    zhouwei520  
       2018-01-24 16:21:41 +08:00
    @soli 不是很懂,感觉很厉害的样子
    yingfengi
        19
    yingfengi  
       2018-01-24 16:38:05 +08:00 via Android
    sangfor AD 应用交付
    就是有点贵
    mumonitor
        20
    mumonitor  
       2018-01-24 17:43:52 +08:00
    开源自建:
    keepalived/LVS + Nginx
    keepalived/LVS + Haproxy
    maxmin
        21
    maxmin  
    OP
       2018-01-24 17:47:46 +08:00
    @hxndg F5 之前有使用,现在这个场景用不了。
    @soli 这个方案略复杂,我需要消化一下。


    @mumonitor 谢谢,正在看 nginx 的东西,看看合不合适。
    julyclyde
        22
    julyclyde  
       2018-01-25 12:42:43 +08:00
    什么叫“避免因为某一台对接服务器挂机,导致接入的设备,用户得到有效的实时数据。”
    maxmin
        23
    maxmin  
    OP
       2018-01-25 14:19:29 +08:00
    @julyclyde sorry,写漏了。
    避免因为某一台对接服务器挂机,导致接入的设备,用户得不到有效的实时数据。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3083 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 12:51 · PVG 20:51 · LAX 05:51 · JFK 08:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.