公有云负载均衡是如何实现多租户的 - V2EX
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB

公有云负载均衡是如何实现多租户的

  •  
  •   jonathan001 2 days ago 2398 views

    我最近在思考一个问题,公有云负载均衡是如何实现多租户,目前我想到的方案有二,具体如下:

    方案一、 负载均衡器直接安装在 VPC 内部以虚拟机的形式存在,这样天然实现了租户隔离,即使 CIDR 重叠也没有关系,但是随着租户越来越多虚拟机数量暴增,资源严重浪费。

    方案二、 共享负载均衡池,部分人共用一个 nginx 进程,每个租户分配一个虚拟的 ip 地址,负载均衡器 proxy_pass 指向这个虚拟的 IP ,然后通过 NAT 进行转换引流到 VPC 中,但是缺点是 NAT 需要跟踪这些 SESSION ,表象过大。

    不知道有没有做过的童鞋,给提提意见。

    22 replies    2026-05-18 12:54:52 +08:00
    PolarBears
        1
    PolarBears  
       2 days ago
    除了虚拟机其实还有 LXC 这种东西
    jonathan001
        2
    jonathan001  
    OP
       2 days ago
    @PolarBears 只是隔离环境,我在想是不是可以用 LXC 然后流量出的时候直接打上 vlan ,然后上层交换机引入 vxlan
    pingdog
        3
    pingdog  
       2 days ago via iPhone
    vxlan 解决不了多租户,vrf, sr 都发展十多年了

    Linux 还可以用 netns 来分割多个 instance
    jonathan001
        4
    jonathan001  
    OP
       2 days ago
    @pingdog 我刚才看了下,可以把不同租户的 nginx 进程放到 netns 中,网络一端在 ns 中,一端在物理机,物理机器这段要通过 vrf 隔离,按理说可以实现多租户的隔离。
    teaguexiao
        5
    teaguexiao  
       2 days ago
    AWS ALB/NLB 实上是方案二的变体,共享池配路,内部用 VPC Lattice 和 Hyperplane 做网络虚拟化而不是传统 NAT ,避免了连接跟踪表爆的问题。跟你方案二思路相近,但关键在网络中面痄呼而不是 instance 层就能打通租户隔离。
    jonathan001
        6
    jonathan001  
    OP
       2 days ago
    @teaguexiao 我看公开的资料少,就自己瞎琢磨
    my3157
        7
    my3157  
       2 days ago via Android
    其实大多数云都是有个特殊的网络优化过的物理机,然后上面跑 lxc/vm ,运行 nginx+lua or haproxy
    jonathan001
        8
    jonathan001  
    OP
       2 days ago
    @my3157 这种方案我已经梳理通了,直接在 linux netns 中跑 nginx 进程,物理一层的网卡直接放到 vrf 中,netns 中的 nginx 进程应该可以用 cgroup 来做隔离,对于高可用可以在多个可用区部署多个进程,然后归属同一个 vxlan 就行。
    defunct9
        9
    defunct9  
       1 day ago via iPhone
    原始的 clb 应该是 f5 ,现在的 alb 应该是 nginx 或者 haproxy 或者 traefik 或者 caddy
    thereone
        10
    thereone  
       1 day ago
    多租户的实现,别的不清楚就我接触到的是物理设备和 NFV 设备。普通型是使用负载均衡的虚拟机优享型和专用是直接使用物理设备。厂商专用的 NFV 和物理设备都是内部就支持多租户隔离不需要额外做什么。F5 的 Bigve 和高性能物理硬件 华三硬件 LB 还有虚拟机型 LB 以及其它厂家的硬件和软件等等。至于引流底层都是 vxlan 封装至于数据卸载可以是在 tor 交换机也可以在设备内部。
    jonathan001
        11
    jonathan001  
    OP
       1 day ago
    @thereone 没有接触过这种设备,但是我感觉 vpc 直接部署虚拟机还是非常简单的。
    thereone
        12
    thereone  
       1 day ago
    @jonathan001 vpc 部署虚拟机一般是云上客户自己做,省钱买几台虚拟机自己做成 LB 用 nginx 也好 LVS 别的也好来实现。真正云厂家底层都是用专门的 NFV 或者高性能物理硬件这个才能承载众多用户量。毕竟这些厂家都是专门做这个的性能方面基本不用担心,ASIC FPGA 的硬件转发可以把性能和承载的租户拉到非常高。NFV 也是底层是用 VPP 或者 DPDK 实现高性能的。在要不就是云厂家购买白盒设备自己做自研。
    fovecifer
        13
    fovecifer  
       1 day ago
    公有云负载均衡也分不同层次,常用的是 TCP 层和 http/https 层的,我认为肯定要上网络虚拟化的设备,LZ 你说的应该更靠近操作系统层面
    jonathan001
        14
    jonathan001  
    OP
       1 day ago
    @thereone 据我所知好多都是基于 dpdk 自己研发的,还有使用 haproxy 二次开发的
    jonathan001
        15
    jonathan001  
    OP
       1 day ago
    @fovecifer 我看这方面资料太少了。
    thereone
        16
    thereone  
       1 day ago
    @jonathan001 DPDK/VPP 是一般是在通用服务器上面做,还有就是白盒 P4 可编程这种。就说这么多不懂就多去搜搜看看。
    jonathan001
        17
    jonathan001  
    OP
       1 day ago
    CodeWind
        18
    CodeWind  
       1 day ago
    维护过华为 HCS 私有云,说说 HCS 的方案。
    首先 LB 是一个集群,包含四层的 lvs 和七层的 nginx ,如果申请的四层 LB ,那就只在 lvs 上创建配置,如果申请的七层,会在 lvs 和 nginx 都创建配置(流量先过 lvs ,再过 nginx),所以解答第一个问题,大家共用。
    第二,网络资源和计算资源是分开的,计算资源内部是 vxlan ,但是不和网络资源建立 tunnel ,网络资源到计算资源走的路由。具体就是 lb 访问后端时是访问的 ecs 的 floating ip(华为叫内大网地址)。
    第三,lb 访问时要区分有无公网 IP ,有公网 IP 时,流量进到核心后,引流到网络节点,然后走内大网平面路由到后端 ecs 。如果无公网 IP ,好像是通过流表把流量引流到网络节点,然后再走上面的流程(记得不是很清楚了)
    大致就是这些了,有疑问可以再交流
    jonathan001
        19
    jonathan001  
    OP
       18h 40m ago
    网络资源到计算资源走的路由,但是如何区分租户呢?租户的 ip 如果有重叠该如何处理?如两个租户的 lb 地址都是 10.0.0.1/32 ?

    还有一种可能就是专门那一个网段如 10.0.0.0/16 ,给每一个租户的 lb 分配一个单独的 10.0.1.1/32 的路由,这样也能标识一个租户,然后通过路由的方式引入到计算集群,计算集群处理后再通过网络返回给 lb ,不知道我这么理解对不对。
    realpg
        20
    realpg  
    PRO
       15h 58m ago
    其实很多都是不隔离的
    有一些草台班子的 你能看到这个现象 他们为了省资源 slb src 的地址进行一次处理

    比如你的 SLB 实例的公网 IP 是 1.1.1.1 ,内网 IP 是 192.168.31.7 ,你的两个计算节点内网 IP 是 192.168.31.11 和 192.168.31.12

    你在节点上看连接,甚至会发现 slb 连过来的 IP 不是 192.168.31.7 ,而是 100.68.31.125 之类


    云内都是 vxlan ,标签交换,三层路由的,不会建立低效的二层关系的
    vopsoft
        21
    vopsoft  
       14h 40m ago
    iqiyi/dpvs 也是基于 dpdk 开源的
    jonathan001
        22
    jonathan001  
    OP
       13h 36m ago
    @realpg 也太随意了,
    About     Help     Advertise     Blog     API     FAQ     Solana     1100 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 18:31 PVG 02:31 LAX 11:31 JFK 14:31
    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