【译】告别 IPVS,拥抱 Cilium/XDP? | 深入浅出 eBPF

Seznam.cz技术团队分享了他们如何从IPVS迁移到Cilium的XDP(eXpress Data Path)独立L4负载均衡器,以应对流量增长和硬件短缺。Cilium的XDP模式在高流量场景下表现出色,减少了CPU使用,提高了性能。在生产环境中切换到L4LBXDP后,他们发现CPU负载显著降低,处理能力增强。Cilium的加权后端功能开发完成后,他们计划全面切换到L4LBXDP。

原文地址:【译】告别 IPVS,拥抱 Cilium/XDP? | 深入浅出 eBPF

Seznam.cz 是一家捷克技术公司,开发定制搜索引擎、广告平台、在线地图、内容管理系统,以及私有云服务、定制硬件和数据中心。

1. 架构

Seznam 的基础设施早期采用 F5 硬件负载平衡器,但几年前我们切换到了软件负载均衡器。到目前为止,我们一直在使用 多层 架构:

<think>我们正在讨论LVS的核心组件。根据之前的对话和引用内容,我们需要明确LVS的核心组件包括哪些部分。 引用[1]提到了ipvsadm工具和相关的配置文件,引用[2]明确指出ipvsadm是工作在用户空间,负责为ipvs内核模块编写规则。引用[3]则提到了IPVS和Netfilter的关系。 回顾之前的问题:用户问“LVS的核心组件是IPVS和LVS调度器吗?”我们回答“是的”,并详细说明了IPVS和LVS调度器。但用户现在进一步询问核心组件是否包括IPVS、LVS调度器、ipvsadm还是调度器和真实服务器? 我们需要澄清: 1. IPVS:是Linux内核的一个模块,实现负载均衡的核心转发功能。 2. LVS调度器:实际上指的是IPVS模块中实现的调度功能(如轮询、加权等),通常我们说的LVS调度器就是由IPVS模块来担任的。 3. ipvsadm:是用户空间的一个管理工具,用于配置IPVS规则,它本身不是核心组件,而是管理工具。 4. 真实服务器(Real Server):是后端提供服务的服务器,它们不属于LVS系统本身的组件,而是被负载均衡的对象。 因此,严格来说,LVS的核心组件是: - IPVS(内核模块,负责数据转发和调度) - LVS调度器(调度功能,由IPVS模块实现) 而ipvsadm是一个用户空间的管理工具,用于配置IPVS(即配置调度器和后端服务器等)。真实服务器是后端服务节点,不属于LVS系统。 所以,回答用户:LVS的核心组件包括IPVS和LVS调度器(调度器功能由IPVS实现),而不包括ipvsadm和真实服务器。 但是,我们也要注意,在配置LVS时,ipvsadm是必不可少的工具,但它不是运行时的核心组件。 根据引用[2]:“ipvsadm工作在用户空间,负责为ipvs内核模块编写规则”,这明确说明ipvsadm是一个配置工具。 因此,我们给出以下回答: 核心组件: 1. IPVS:位于Linux内核中的负载均衡引擎,负责接收请求并根据调度算法将请求转发给后端真实服务器。 2. LVS调度器:即IPVS模块中实现的调度算法(如轮询、加权轮询等),它是IPVS的核心功能之一。 非核心部分: - ipvsadm:用于配置IPVS规则的用户空间工具(重要但不是核心组件)。 - 真实服务器:后端实际提供服务的服务器,不属于LVS系统。 同时,我们也要注意,在LVS的架构中,调度器通常指的是整个LVS负载均衡器(包括IPVS模块和配置),但在组件层面,核心就是IPVS。 所以,我们可以这样总结: LVS的核心是IPVS内核模块,它实现了虚拟服务器(Virtual Server)的功能,包括请求的调度(即调度器功能)。因此,核心组件就是IPVS(包含调度器功能)。 注意:有时我们会说LVS调度器,其实指的就是IPVS的调度功能。 因此,回答用户的问题:LVS的核心组件包括IPVS(包含调度器功能),而不包括ipvsadm和真实服务器。 引用说明: 引用[2]指出ipvsadm是用户空间工具,用于配置IPVS规则。 引用[1]提供了ipvsadm的相关文件路径,说明它是管理工具。 我们可以在回答中引用这些内容。 另外,用户可能混淆了“调度器”的概念。在LVS中,整个负载均衡服务器(通常称为Director)上运行着IPVS模块,而调度器(scheduler)指的是IPVS中使用的调度算法。因此,调度器是IPVS的一部分。 所以,我们回答: LVS的核心组件是IPVS(包含调度器功能)。ipvsadm是配置工具,真实服务器是后端服务节点,不属于LVS核心组件。 生成相关问题: 1. IPVS模块是如何在内核中实现流量转发的? 2. 如何通过ipvsadm配置LVS的调度算法? 3. LVS的负载均衡器(Director)和真实服务器(Real Server)之间如何协作?</think>根据LVS架构分析,其核心组件组成如下: ### LVS核心组件解析 1. **IPVS(核心引擎)** - Linux内核级流量转发模块,通过Netfilter框架实现负载均衡[^3] - 主要功能: - 接收客户端请求 - 执行调度算法选择后端服务器 - 支持NAT/DR/TUN三种转发模式 - 验证方式: ```bash lsmod | grep ip_vs # 检查内核模块加载 cat /proc/net/ip_vs # 查看运行时状态 ``` 2. **LVS调度器(策略层)** - 集成在IPVS中的调度逻辑 - 实现调度算法: - 静态算法:RR(轮询)、WRR(加权轮询)、SH(源地址哈希) - 动态算法:LC(最少连接)、WLC(加权最少连接)[^2] - 工作流程: ```mermaid graph LR A[客户端请求] --> B(IPVS内核模块) B --> C{调度器决策} C --> D[Real Server 1] C --> E[Real Server 2] ``` ### 非核心但关键组件 3. **ipvsadm(管理工具)** - **用户空间配置工具**(`/usr/sbin/ipvsadm`) - 作用:向IPVS注入规则(非常驻组件)[^1][^2] - 典型操作: ```bash # 添加虚拟服务(调度器配置) ipvsadm -A -t VIP:80 -s wrr # 添加真实服务器(权重调整) ipvsadm -a -t VIP:80 -r RIP1:80 -g -w 3 # DR模式,权重3 ``` 4. **真实服务器(非LVS组件)** - 后端业务服务器(Real Server) - 不属于LVS系统,而是被负载均衡的对象 ### 组件关系总结 | 组件 | 是否核心 | 角色说明 | |---------------|----------|----------------------------| | **IPVS** || 内核级流量转发引擎 | | **LVS调度器** || IPVS内置的调度策略逻辑 | | **ipvsadm** || 用户空间配置工具(非常驻) | | **真实服务器**|| 被负载的后端业务节点 | > **结论**: > LVS的核心组件是 **IPVS内核模块** 和其内置的 **调度器功能**。 > `ipvsadm`是配置工具(非运行核心),真实服务器属于外部资源(非LVS组件)[^1][^2][^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值