请教一个 Liunx 多个接入网的负载均衡的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Misakax
V2EX    Linux

请教一个 Liunx 多个接入网的负载均衡的问题

  •  
  •   Misakax 2023-06-27 10:25:38 +08:00 1788 次点击
    这是一个创建于 841 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Ubuntu 中目前接入了两个宽带,enp1s0 为联通,enp2s0 为电信

    不想在上级路由使用 RouterOS iKuai OpenWRT 等,也不作路由使用,仅作为下载机及轻量容器部署

    已经根据 https://lartc.org/howto/lartc.rpdb.multiple-links.html 试过 iproute 的方法,但是效果很不佳,丢包严重

    请教下各位 V 友有什么好的办法负载均衡并叠加带宽提升上下行?

    12 条回复    2023-06-28 13:33:41 +08:00
    hefish
        1
    hefish  
       2023-06-27 10:51:08 +08:00
    这个要用对等路由吧。
    ip route add default equalize nexthop via $LT_GW dev enp1s0 weight 10 nexthop via $CT_GW dev enp2s0 weight 10
    hefish
        2
    hefish  
       2023-06-27 10:55:00 +08:00
    或者是用两个路由表,
    联通进来的线路用默认的路由表,
    ip route add default via $LT_GW dev enp1s0
    电信进来的用另一个路由表。
    ip route add default via $CT_GW dev enp2s0 table 100

    然后用 ip rules 分配
    ip rule add from 0.0.0.0/0 dev enp2s0 table 100
    Judoon
        3
    Judoon  
       2023-06-27 10:56:57 +08:00
    不如换个思路吧,把联通和电信的 ip 网段扒出来,单独加路由表分开网卡走
    Mythologyli
        4
    Mythologyli  
       2023-06-27 11:00:06 +08:00
    用 kvm 装个软路由(逃
    wheat0r
        5
    wheat0r  
       2023-06-27 11:10:15 +08:00
    链路负载均衡设备能卖钱就是因为这事其实很复杂。
    单纯流量平均分,会有大量的请求走到不合适的线路里。
    原则上来说,这事必须从 dns 开始,根据两个线路的带宽,按比例把解析请求扔给不同线路的 dns 服务器,这样自然会解出不同线路的 IP ,然后再根据路由表走对应的线路。如果解出来的 ip 不在两个运营商里,再平均分。
    思考一下,linux 上面可以通过哪些方式解决这些问题。
    hefish
        6
    hefish  
       2023-06-27 13:12:21 +08:00
    @hefish
    上面只是来自电信的包,走电信路由回程,
    忘了来自联通的包,走联通回程,
    ip rule add from 0.0.0.0/0 dev enp1s0 table main

    还忘了创建 100 的路由表:
    echo 100 telecom >> /etc/iproute2/rt_tables
    liantian
        7
    liantian  
       2023-06-27 13:31:14 +08:00 via iPhone
    仅作为下载机…
    那可以下载软件上下功夫,哪怕一个目的地址,多线程走不同出口…那不才是彻底吃满带宽。
    Misakax
        8
    Misakax  
    OP
       2023-06-27 14:28:42 +08:00
    起因仅仅只是电信突然免费帮我从 100M 升到了 1000M ,本来 Ubuntu 只接了一条联通的千兆,就突发奇想想试试两条千兆接入能否叠加,又受制于网口都是千兆口,在上级路由叠加带宽也不能实现目的。
    Misakax
        9
    Misakax  
    OP
       2023-06-27 14:28:58 +08:00
    @hefish #6 感谢 我去试试看
    hefish
        10
    hefish  
       2023-06-27 21:13:54 +08:00
    按说能叠加,好像只要用对等路由就可以了,跟前些年的软路由多拨使 PT 带宽加倍差不多的意思。
    Misakax
        11
    Misakax  
    OP
       2023-06-28 09:41:31 +08:00
    @hefish #10 试了下只有一开始有负载上,之后又变成走单线了
    hefish
        12
    hefish  
       2023-06-28 13:33:41 +08:00
    @Misakax 按说每一个 ip 包在找到路由之后,都会有个缓存,记录下这个数据包的 dst ip 和对应的 gateway ip ,以后针对这个 dst ip ,都会不通过路由表,直接走缓存的 gateway ip 。 直到缓存失效。

    你试着从 linux 上,traceroute 多个目标 IP , 是不是针对不同的目标,他会随机选择不同的出口。 当然也可以通过 traceroute 同一个目标 ip ,每次 traceroute 前都 ip ro flush cache ,来让他重新依照路由表选择路由。
    看看对等路由是否生效。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3842 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 00:07 PVG 08:07 LAX 17:07 JFK 20:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86