DPVS

高性能第4层负载均衡器
授权协议 GPLv2
开发语言 C/C++
所属分类 服务器软件、 集群/负载均衡
软件类型 开源软件
地区 国产
投 递 者 司徒杜吟
操作系统 Linux
开源组织 爱奇艺
适用人群 未知
 软件概览

DPVS架构图

介绍

DPVS是爱奇艺公司基于DPDK开发的高性能第4层负载均衡器。基于阿里巴巴/ LVS修改而来,出于蓝而胜于蓝。

DPVS全称为 "DPDK-LVS".

为了达到高性能,使用了多种不同技术

  • 内核旁路(用户空间实现)

  • per-CPU,关键数据无锁化

  • RS Steering和CPU绑定(避免上下文切换)

  • 批处理TX / RX

  • 零拷贝(避免数据包复制和系统调用)

  • 轮询替换中断

  • 高性能IPC和无锁消息

  • 其他由DPDK实现的性能增强技术

DPVS的主要特点包括:

L4负载均衡器,包括FNAT,DR模式等

不同的调度算法,如RR、WLC、WRR等

用户空间轻量级IP协议栈(IPv4,路由,ARP,ICMP ...)。

SNAT模式,用于从内部网络访问Internet。

支持KNI,VLAN,不同IDC环境的绑定。

安全方面,支持TCP syn-proxy,Conn-Limit,黑名单。

QoS:流量控制(开发中)

DPVS功能模块如下图所示:

quick start

快速搭建:

Linux发行版:CentOS 7.2

内核:3.10.0-327.el7.x86_64

CPU:Intel(R)Xeon(R)CPU E5-2650 v3 @ 2.30GHz

NIC:Intel X540

内存:64G和NUMA系统。

GCC:gcc版本4.8.5 20150623(红帽4.8.5-4)

DPDK可以正常工作的环境应该也能运行DPVS,请查看dpdk.org了解更多信息。

安装过程略,可以到官网查看详情。

测试 Full-NAT 负载均衡

测试拓扑图如下所示:

在DPVS上设置VIP和本地IP(Full-NAT模式所需的LIP)。 我们把命令放到setup.sh中。 你可以通过./ipvsadm -ln,./dpip addr show来检查一下。

从客户端访问VIP,看起来正常!

性能测试

我们的测试显示,DPVS的转发速度(pps)是LVS的几倍,与Google的Maglev一样好。

  • 是什么? 今天在学习和了解一个项目的整体架构时,看到在其网关层有个比较少见的名词(主要是我见的少),就是和Nginx搭配使用的DPVS,我们都学习过Nginx是负载均衡的比较经典的系统,那么这个DPVS是个什么东东,接下来我们就好好研究它。 首先,我们需要知道的是,DPVS来自于哪里?我看到的众多架构图都来自爱奇艺官方给出的一个架构,当然这个名字的来源又是DPDK+LVS,而且这里的LVS还是阿

  • 本文主要介绍基于CentOS7.9系统部署DPVS的FullNAT模式在使用keepalived进行主备模式配置高可用集群在线上生产环境落地实践时遇到的一些问题和处理的思路。 文中所有IP地址、主机名、MAC地址信息均已进行脱敏或魔改处理,客户端IP使用模拟器生成,但不影响阅读体验。 1、keepalived架构 1.1 单机架构图 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接

  • 本文主要介绍在CentOS7.9系统上部署DPVS的FullNAT模式和在RealServer上安装toa模块获取客户端的真实IP。 此前的文章已经介绍过DPVS简介与部署以及DPDK在DPVS中的应用及原理分析,有需要的同学可以先补一下相关的内容。由于之前的文章中的部署步骤只介绍到了DPVS的部署,并没有涉及相关的各种负载均衡模式的配置,以及时间过去大半年之后,DPVS的版本和对应的DPDK版本

  • DPVS的整体思路是在DPDK中抽象一个设备层和一个IPVS层,IPVS层完成LVS中完成的功能,设备层用于抽象各种网卡设备。这个设备层是DPVS相比其他方案会多做的事情。如果是一个简单的负载均衡的实现,是不会做这个设备层的,这个设备层对应于内核中对设备的管理,同时还对应的实现了邻居表(ARP)和路由表。有了这个设备层,ARP和路由的实现才有了可能。因为设备层提供了一个设备的概念和一个IP的概念。

  • 1. dpvs.conf 配置文件说明 本文是对dpvs默认配置文件的解释说明。 在DPVS的配置文件中,表示初始化阶段的配置项,无法重新加载。 如果配置了无效值! 文件,dpvs将使用其默认值。 注释行: 以#或者!。内联范围注释:使用“ ”,在两者之间添加注释。 1.1. 全局 1.2. 网卡设备 配置网卡的接收、发送队列数,RSS、FDir的模式。 注意:FDir的匹配域不在dpvs配置文件

  • tcp_conn_lookup tcp连接查找 /** * tcp_protocol中查找conn接口 * direct,drop,peer_cid为输出参数 */ static struct dp_vs_conn * tcp_conn_lookup(struct dp_vs_proto *proto, const struct dp_vs_iphdr *iph,

  • ipvsadmin配置命令,开启persistent选项之后,ipvs将来自同一个客户端的请求全部调度到一个固定的RS服务器上。对于SSL和FTP这类,其多个报文之间是相互关联的协议,需要开启此类功能。但是对于NAT转发模式,由于NAT将对端口号进行修改,FTP服务需要使用ip_vs_ftp模块才能正常工作 命令行选项netmask默认为255.255.255.255,仅对同一个客户端进行持续调度

 相关资料
  • 负载均衡是任何可扩展软件系统的重要组成部分。通过在一组端点上智能分配流量-即便该集合动态更改,并且随着端点故障或减慢-良好的负载均衡可以减少尾部延迟并增加可靠性。linkerd 提供了各种强大的负载均衡算法,包括最小负载,EWMA和孔径(aperture)。这些算法已经在 Twitter 和其他公司进行了大量测试。 因为它在 RPC 层上运行,所以 linkerd 可以根据观察到的 RPC 延迟和

  • 我在GKE中使用HTTP负载均衡器(第7层)时遇到了麻烦。我最初使用LoadBalancer服务类型在GKE中公开服务: kubectl公开部署myservice--type=“LoadBalancer” null 我错过了什么?

  • 负载均衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。 使用带有负载均衡的多个服务器组件,取代单一的组件,可以通过冗余提高可靠性。负载均衡服务通常是由专用软体和硬件来完成。 负载均衡最重要的一个应用是利用多台服务器提供单一服务,这种方案有

  • 负载均衡包括负载均衡实例、访问控制及证书。 实例 负载均衡实例是一个运行的负载均衡服务,通过设置的虚拟IP接收流量并将其转发分配给后端服务器。 访问控制 访问控制用于设置访问负载均衡的IP白名单或IP黑名单。 证书 当在负载均衡实例上配置HTTPS监听转发来自HTTPS协议的请求时,需要配置证书。

  • 一个简单的负载均衡的示例,把www.domain.com均衡到本机不同的端口,也可以改为均衡到不同的地址上。> http { : upstream myproject { : server 127.0.0.1:8000 weight=3; : server 127.0.0.1:8001; : server 127.0.0.1:8002; : server 127.0.0.1:8003; : }

  • SOFARPC 提供多种负载均衡算法,目前支持以下五种: 类型 名称 描述 random 随机算法 默认负载均衡算法。 localPref 本地优先算法 优先发现是否本机发布了该服务,如果没有再采用随机算法。 roundRobin 轮询算法 方法级别的轮询,各个方法间各自轮询,互不影响。 consistentHash 一致性hash算法 同样的方法级别的请求会路由到同样的节点。 weightRou

  • 本文向大家介绍Nginx+Tomcat高性能负载均衡集群搭建教程,包括了Nginx+Tomcat高性能负载均衡集群搭建教程的使用技巧和注意事项,需要的朋友参考一下 Nginx是一个高性能的HTTP服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其占有内存少,并发能力强,在同类型的网页服务器中表现较好。Nginx可以在大多数Unix Linux OS上编译运行,并有Windows移

  • 本节将会讨论常见的分布式系统负载均衡手段。 6.5.1 常见的负载均衡思路 如果我们不考虑均衡的话,现在有n个服务节点,我们完成业务流程实际上只需要从这n个中挑出其中的一个。有几种思路: 按顺序挑: 例如上次选了第一台,那么这次就选第二台,下次第三台,如果已经到了最后一台,那么下一次从第一台开始。这种情况下我们可以把服务节点信息都存储在数组中,每次请求完成下游之后,将一个索引后移即可。在移到尽头时