DPVS-2:单臂负载均衡测试

news2025/2/25 19:30:00

上一篇编译安装了DPVS,这一篇开启DPVS的负载均衡测试 : 单臂 + FULL NAT模式

拓扑-单臂

单臂模式
DPVS 单独物理机
CLINET,和两个RS都是另一个物理机的虚拟机,它们网卡都绑定在一个桥上br0 , 二层互通。
在这里插入图片描述

启动DPVS

dpvs.conf 使用默认的dpvs.conf.single-nic.sample的配置

root@r750-132:~/dpvs/bin#  ./dpvs -- -a 98:00.1 -l 0-9 
current thread affinity is set to FFFFFFFF
EAL: Detected 32 lcore(s)
EAL: Detected 2 NUMA nodes
EAL: Detected static linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: No available hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: VFIO support initialized
EAL: Probe PCI driver: mlx5_pci (15b3:1017) device: 0000:98:00.1 (socket 1)
EAL: No legacy callbacks, legacy socket not created
DPVS: dpvs version: 1.9-8, build on 2025.02.20.15:37:58
DPVS: dpvs-conf-file: /etc/dpvs.conf
DPVS: dpvs-pid-file: /var/run/dpvs.pid
DPVS: dpvs-ipc-file: /var/run/dpvs.ipc
CFG_FILE: Opening configuration file '/etc/dpvs.conf'.
CFG_FILE: log_level = WARNING
NETIF: dpdk0:rx_queue_number = 8
NETIF: worker cpu1:dpdk0 rx_queue_id += 0
NETIF: worker cpu1:dpdk0 tx_queue_id += 0
NETIF: worker cpu2:dpdk0 rx_queue_id += 1
NETIF: worker cpu2:dpdk0 tx_queue_id += 1
NETIF: worker cpu3:dpdk0 rx_queue_id += 2
NETIF: worker cpu3:dpdk0 tx_queue_id += 2
NETIF: worker cpu4:dpdk0 rx_queue_id += 3
NETIF: worker cpu4:dpdk0 tx_queue_id += 3
NETIF: worker cpu5:dpdk0 rx_queue_id += 4
NETIF: worker cpu5:dpdk0 tx_queue_id += 4
NETIF: worker cpu6:dpdk0 rx_queue_id += 5
NETIF: worker cpu6:dpdk0 tx_queue_id += 5
NETIF: worker cpu7:dpdk0 rx_queue_id += 6
NETIF: worker cpu7:dpdk0 tx_queue_id += 6
NETIF: worker cpu8:dpdk0 rx_queue_id += 7
NETIF: worker cpu8:dpdk0 tx_queue_id += 7
SAPOOL: sapool_filter_enable = on
IPVS: dp_vs_conn_init: lcore 9: nothing to do.
NETIF: Ethdev port_id=0 invalid tx_offload: 0x1000e, valid value: 0xc96af

配置指令

VIP=192.168.100.100
LIP=192.168.100.200
RS1=192.168.100.4
RS2=192.168.100.5

# 为接口配置一个虚拟IP
./dpip addr add 192.168.100.100/24 dev dpdk0

# 添加一个虚拟服务,地址为VIP,端口80,负载均衡策略为 轮询(rr= Round Robin)
./ipvsadm -A -t 192.168.100.100:80 -s rr

# 为虚拟服务添加一个真实服务器, -b FullNAT模式(源目的地址都转换) 
./ipvsadm -a -t 192.168.100.100:80 -r 192.168.100.4:80 -b
./ipvsadm -a -t 192.168.100.100:80 -r 192.168.100.5:80 -b

# 为虚拟服务添加一个本地地址,FNAT之后访问真实服务器的源地址
./ipvsadm --add-laddr -z 192.168.100.200 -t 192.168.100.100:80 -F dpdk0

查看配置

root@r750-132:~/dpvs/bin# ./ipvsadm -L -n
IP Virtual Server version 1.9.8 (size=0)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.100.100:80 rr
  -> 192.168.100.4:80             FullNat 1      0          0         
  -> 192.168.100.5:80             FullNat 1      0          0   

服务器配置

RS host 192.168.100.4 中,nginx返回值中设为 1

RS host 192.168.100.5中,nginx 返回值中设为 2

root@ubuntu22-1:~# cat /var/www/html/index.nginx-debian.html 
This is Server 1 !

root@ubuntu22-2:~# cat /var/www/html/index.nginx-debian.html
This is Server 2 !

服务器ping 负载均衡器,连同正常

root@ubuntu22:~# ping 192.168.100.100
PING 192.168.100.100 (192.168.100.100) 56(84) bytes of data.
64 bytes from 192.168.100.100: icmp_seq=1 ttl=64 time=0.381 ms
64 bytes from 192.168.100.100: icmp_seq=2 ttl=64 time=0.106 ms
^C
--- 192.168.100.100 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1026ms
rtt min/avg/max/mdev = 0.106/0.243/0.381/0.137 ms
root@ubuntu22:~# ping 192.168.100.200
PING 192.168.100.200 (192.168.100.200) 56(84) bytes of data.
64 bytes from 192.168.100.200: icmp_seq=1 ttl=64 time=0.295 ms
64 bytes from 192.168.100.200: icmp_seq=2 ttl=64 time=0.125 ms
^C
--- 192.168.100.200 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1005ms
rtt min/avg/max/mdev = 0.125/0.210/0.295/0.085 ms

CURL测试

测试成功

负载均衡轮询模式看起来生效了。

但是存在有连续的数字,可能与curl测试同时只有一个连接有关,或者每一次被RSS分配到不同的worker有关,具体后续再读源码分析。

root@ubuntu22:~# curl 192.168.100.100:80
This is Server 2 !
root@ubuntu22:~# curl 192.168.100.100:80
This is Server 1 !
root@ubuntu22:~# curl 192.168.100.100:80
This is Server 1 !
root@ubuntu22:~# curl 192.168.100.100:80
This is Server 1 !
root@ubuntu22:~# curl 192.168.100.100:80
This is Server 2 !
root@ubuntu22:~# curl 192.168.100.100:80
This is Server 2 !
root@ubuntu22:~# curl 192.168.100.100:80
This is Server 1 !
root@ubuntu22:~# curl 192.168.100.100:80
This is Server 1 !
root@ubuntu22:~# curl 192.168.100.100:80
This is Server 2 !
root@ubuntu22:~# curl 192.168.100.100:80
This is Server 2 !
root@ubuntu22:~# curl 192.168.100.100:80
This is Server 2 !
root@ubuntu22:~# curl 192.168.100.100:80
This is Server 1 !
root@ubuntu22:~# curl 192.168.100.100:80
This is Server 1 !
root@ubuntu22:~# curl 192.168.100.100:80
This is Server 1 !
root@ubuntu22:~# curl 192.168.100.100:80
This is Server 1 !

查看邻居表

这里会显示每一个worker的邻居表, 当有一个邻居更新时,会同步到所有的worker。

root@r750-132:~/dpvs/bin# ./dpip neigh show dev dpdk0
ip: 192.168.100.3                                    mac: 52:54:00:b3:0d:e5   state: REACHABLE     dev: dpdk0  core: 1  
ip: 192.168.100.4                                    mac: 52:54:00:77:2b:73   state: REACHABLE     dev: dpdk0  core: 1  
ip: 192.168.100.5                                    mac: 52:54:00:8c:53:e9   state: REACHABLE     dev: dpdk0  core: 1  
ip: 192.168.100.3                                    mac: 52:54:00:b3:0d:e5   state: REACHABLE     dev: dpdk0  core: 3  
ip: 192.168.100.4                                    mac: 52:54:00:77:2b:73   state: REACHABLE     dev: dpdk0  core: 3  
ip: 192.168.100.5                                    mac: 52:54:00:8c:53:e9   state: REACHABLE     dev: dpdk0  core: 3  
ip: 192.168.100.3                                    mac: 52:54:00:b3:0d:e5   state: REACHABLE     dev: dpdk0  core: 2  
ip: 192.168.100.4                                    mac: 52:54:00:77:2b:73   state: REACHABLE     dev: dpdk0  core: 2  
ip: 192.168.100.5                                    mac: 52:54:00:8c:53:e9   state: REACHABLE     dev: dpdk0  core: 2  
ip: 192.168.100.3                                    mac: 52:54:00:b3:0d:e5   state: REACHABLE     dev: dpdk0  core: 4  
ip: 192.168.100.4                                    mac: 52:54:00:77:2b:73   state: REACHABLE     dev: dpdk0  core: 4  
ip: 192.168.100.5                                    mac: 52:54:00:8c:53:e9   state: REACHABLE     dev: dpdk0  core: 4  
ip: 192.168.100.3                                    mac: 52:54:00:b3:0d:e5   state: REACHABLE     dev: dpdk0  core: 5  
ip: 192.168.100.4                                    mac: 52:54:00:77:2b:73   state: REACHABLE     dev: dpdk0  core: 5  
ip: 192.168.100.5                                    mac: 52:54:00:8c:53:e9   state: REACHABLE     dev: dpdk0  core: 5  
ip: 192.168.100.3                                    mac: 52:54:00:b3:0d:e5   state: REACHABLE     dev: dpdk0  core: 6  
ip: 192.168.100.4                                    mac: 52:54:00:77:2b:73   state: REACHABLE     dev: dpdk0  core: 6  
ip: 192.168.100.5                                    mac: 52:54:00:8c:53:e9   state: REACHABLE     dev: dpdk0  core: 6  
ip: 192.168.100.3                                    mac: 52:54:00:b3:0d:e5   state: REACHABLE     dev: dpdk0  core: 7  
ip: 192.168.100.4                                    mac: 52:54:00:77:2b:73   state: REACHABLE     dev: dpdk0  core: 7  
ip: 192.168.100.5                                    mac: 52:54:00:8c:53:e9   state: REACHABLE     dev: dpdk0  core: 7  
ip: 192.168.100.3                                    mac: 52:54:00:b3:0d:e5   state: REACHABLE     dev: dpdk0  core: 8  
ip: 192.168.100.4                                    mac: 52:54:00:77:2b:73   state: REACHABLE     dev: dpdk0  core: 8  
ip: 192.168.100.5                                    mac: 52:54:00:8c:53:e9   state: REACHABLE     dev: dpdk0  core: 8  

抓包验证

在RS1上抓包,请求SRC IP已经是DPVS的 LocalIP, DST IP为RS1 IP, 确实是FULL NAT模式。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2305992.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Classic Control Theory | 12 Real Poles or Zeros (第12课笔记-中文版)

笔记链接:https://m.tb.cn/h.Tt876SW?tkQaITejKxnFLhttps://m.tb.cn/h.Tt876SW?tkQaITejKxnFL

Kubernetes开发环境minikube | 开发部署MySQL单节点应用

minikube是一个主要用于开发与测试Kubernetes应用的运行环境 本文主要描述在minikube运行环境中部署MySQL单节点应用 minikube start --force kubectl get nodes 如上所示,启动minikube单节点运行环境 minikube ssh docker pull 如上所示,从MySQL官…

安装可视化jar包部署平台JarManage

一、下载 下载地址:JarManage 发行版 - Gitee.com 🚒 下载 最新发行版 下载zip的里面linux和windows版本都有 二、运行 上传到服务器,解压进入目录 🚚 执行java -jar jarmanage-depoly.jar 命令运行 java -jar jarmanage-dep…

基于数据可视化+SpringBoot+安卓端的数字化OA公司管理平台设计和实现

博主介绍:硕士研究生,专注于信息化技术领域开发与管理,会使用java、标准c/c等开发语言,以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年,拥有近12年的管理工作经验,拥有较丰富的技术架…

输入搜索、分组展示选项、下拉选取,全局跳转页,el-select 实现 —— 后端数据处理代码,抛砖引玉展思路

详细前端代码写于上一篇:输入搜索、分组展示选项、下拉选取,el-select 实现:即输入关键字检索,返回分组选项,选取跳转到相应内容页 —— VUE项目-全局模糊检索 【效果图】:分组展示选项 >【去界面操作体…

性能巅峰对决:Rust vs C++ —— 速度、安全与权衡的艺术

??关注,带你探索Java的奥秘!?? ??超萌技术攻略,轻松晋级编程高手!?? ??技术宝库已备好,就等你来挖掘!?? ??订阅,智趣学习不孤单!?? ??即刻启航,编…

unity学习53:UI的子容器:面板panel

目录 1 UI的最底层容器:canvas 1.1 UI的最底层容器:canvas 1.2 UI的合理结构 2 UI的子容器:面板panel 2.1 创建panel 2.2 面板的本质: image ,就是一个透明的图片,1个空容器 3 面板的属性 4 面板的…

4-知识图谱的抽取与构建-4_2实体识别与分类

🌟 知识图谱的实体识别与分类🔥 🔍 什么是实体识别与分类? 实体识别(Entity Recognition)是从文本中提取出具体的事物,如人名、地名、组织名等。分类(Entity Classification&#x…

elasticsearch在windows上的配置

写在最前面: 上资源 第一步 解压: 第二步 配置两个环境变量 第三步 如果是其他资源需要将标蓝的文件中的内容加一句 xpack.security.enabled: false 不同版本的yaml文件可能配置不同,末尾加这个 xpack.security.enabled: true打开bin目…

详解分布式ID实践

引言 分布式ID,所谓的分布式ID,就是针对整个系统而言,任何时刻获取一个ID,无论系统处于何种情况,该值不会与之前产生的值重复,之后获取分布式ID时,也不会再获取到与其相同的值,它是…

【Rust中级教程】2.8. API设计原则之灵活性(flexible) Pt.4:显式析构函数的问题及3种解决方案

喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 说句题外话,这篇文章一共5721个字,是我截至目前写的最长的一篇文章&a…

【复习】Redis

数据结构 Redis常见的数据结构 String&#xff1a;缓存对象Hash&#xff1a;缓存对象、购物车List&#xff1a;消息队列Set&#xff1a;点赞、共同关注ZSet&#xff1a;排序 Zset底层&#xff1f; Zset底层的数据结构是由压缩链表或跳表实现的 如果有序集合的元素 < 12…

STM32使用NRF2401进行数据传送

NRF2401是一款由Nordic Semiconductor公司生产的单片射频收发芯片&#xff0c;以下是关于它的详细介绍&#xff1a; 一、主要特点 工作频段&#xff1a;NRF2401工作于2.4~2.5GHz的ISM&#xff08;工业、科学和医疗&#xff09;频段&#xff0c;该频段无需申请即可使用&#xf…

DeepSeek、微信、硅基流动、纳米搜索、秘塔搜索……十种不同方法实现DeepSeek使用自由

为了让大家实现 DeepSeek 使用自由&#xff0c;今天分享 10 个畅用 DeepSeek 的平台。 一、官方满血版&#xff1a;DeepSeek官网与APP 首推&#xff0c;肯定是 DeepSeek 的官网和 APP&#xff0c;可以使用满血版 R1 和 V3 模型&#xff0c;以及联网功能。 网址&#xff1a; htt…

Orange 开源项目 - 集成阿里云大模型

1 阿里云的大模型服务平台百炼 阿里云的大模型服务平台百炼是一站式的大模型开发及应用构建平台。不论是开发者还是业务人员&#xff0c;都能深入参与大模型应用的设计和构建。您可以通过简单的界面操作&#xff0c;在5分钟内开发出一款大模型应用&#xff0c;或在几小时内训练…

公开整理-最新中国城市统计NJExcel+PDF版本(1985-2024年)

数据简介&#xff1a;《中国城市统计NJ》从1985年开始&#xff0c;本NJ内容共分四个部分:第一部分是全国城市行政区划,列有不同区域、不同级别的城市分布情况;第二、三部分分别是地级以上城市统计资料和县级城市统计资料,具体包括人口、劳动力及土地资源、综合经济、工业、交通…

KubeSphere平台安装

KubeSphere简介 KubeSphere 是一款功能强大的容器管理平台&#xff0c;以下是其简介&#xff1a; 1&#xff09;基本信息 开源项目&#xff1a;基于 Apache-2.0 授权协议开源&#xff0c;由 Google Go、Groovy、HTML/CSS 和 Shell 等多种编程语言开发。基础架构&#xff1a;…

Claude 3.7 Sonnet 泄露,Anthropic 最先进 AI 模型即将在 AWS Bedrock 上首次亮相

(图片&#xff1a;AWS) Anthropic 旗下先进的 AI 模型 Claude 3.7 Sonnet 似乎即将发布。业界预计&#xff0c;亚马逊可能会在2025年2月26日的活动中公布相关消息。泄露的信息表明&#xff0c;该模型将托管于 AWS Bedrock 平台&#xff0c;该平台以提供尖端 AI 模型访问而闻名…

ONNX转RKNN的环境搭建和部署流程

将ONNX模型转换为RKNN模型的过程记录 工具准备 rknn-toolkit:https://github.com/rockchip-linux/rknn-toolkit rknn-toolkit2:https://github.com/airockchip/rknn-toolkit2 rknn_model_zoo:https://github.com/airockchip/rknn_model_zoo ultralytics_yolov8:https://github…

Linux红帽:RHCSA认证知识讲解(二)配置网络与登录本地远程Linux主机

Linux红帽&#xff1a;RHCSA认证知识讲解&#xff08;二&#xff09;配置网络与登录本地远程Linux主机 前言一、使用命令行&#xff08;nmcli 命令&#xff09;配置网络&#xff0c;配置主机名第一步第二步修改主机名称 二、使用图形化界面&#xff08;nmtui 命令&#xff09;配…