Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
jonathan001
V2EX  ›  云计算

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

  •  
  •   jonathan001 · 1 day ago · 1995 views

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

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

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

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

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

    Linux 还可以用 netns 来分割多个 instance
    jonathan001
        4
    jonathan001  
    OP
       1 day ago
    @pingdog 我刚才看了下,可以把不同租户的 nginx 进程放到 netns 中,网络一端在 ns 中,一端在物理机,物理机器这段要通过 vrf 隔离,按理说可以实现多租户的隔离。
    teaguexiao
        5
    teaguexiao  
       1 day ago
    AWS ALB/NLB 实際上是方案二的变体,共享池配路,内部用 VPC Lattice 和 Hyperplane 做网络虚拟化而不是传统 NAT ,避免了连接跟踪表爆峸的问题。跟你方案二思路相近,但关键在网络中面痄呼而不是 instance 层就能打通租户隔离。
    jonathan001
        6
    jonathan001  
    OP
       1 day ago
    @teaguexiao 我看公开的资料少,就自己瞎琢磨
    my3157
        7
    my3157  
       1 day ago via Android
    其实大多数云都是有个特殊的网络优化过的物理机,然后上面跑 lxc/vm ,运行 nginx+lua or haproxy
    jonathan001
        8
    jonathan001  
    OP
       1 day 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  
       16h 0m 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
       4h 57m ago
    网络资源到计算资源走的路由,但是如何区分租户呢?租户的 ip 如果有重叠该如何处理?如两个租户的 lb 地址都是 10.0.0.1/32 ?

    还有一种可能就是专门那一个网段如 10.0.0.0/16 ,给每一个租户的 lb 分配一个单独的 10.0.1.1/32 的路由,这样也能标识一个租户,然后通过路由的方式引入到计算集群,计算集群处理后再通过网络返回给 lb ,不知道我这么理解对不对。
    realpg
        20
    realpg  
    PRO
       2h 15m 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  
       57 mins ago
    iqiyi/dpvs 也是基于 dpdk 开源的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3706 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 04:48 · PVG 12:48 · LAX 21:48 · JFK 00:48
    ♥ Do have faith in what you're doing.