[Linux] haproxy地址映射实现性能测试

devtools/2024/10/20 15:49:58/

背景

需要虚拟1万个网元做性能测试,前提是已经有网元模拟器,可以在服务器上批量起虚拟IP, 每个虚拟IP对应一个网元进程,但是一台服务器的CPU数量有限,不可能起1万个模拟器进程。于是结合haproxy,将frontend的1万个IP映射到backend的40个虚拟IP (CPU数量>40)。

查看CPU数量

# grep -c ^processor /proc/cpuinfo
40# lscpu | grep ^CPU\(s\)
CPU(s):                40

说明:grep -c 只输出匹配行的数量
 

IP地址规划

前端 1万个虚拟IP

47.0.1.1 ~ 47.0.1.250

47.0.2.1 ~ 47.0.2.250

...

47.0.40.1 ~ 47.0.40.250

后端  40个虚拟IP,对应40个线程(40个CPU)

47.0.1.1 ~ 47.0.1.20

47.0.2.1 ~ 47.0.2.20

修改ARP缓存表大小

# echo "512" > /proc/sys/net/ipv4/neigh/default/gc_thresh1
# echo "2048" > /proc/sys/net/ipv4/neigh/default/gc_thresh2
# echo "10240" > /proc/sys/net/ipv4/neigh/default/gc_thresh3

说明:

1.使用echo写入

2.gc_thresh1,gc_thresh2和gc_thresh3
gc_thresh1:最小可保留的邻居表项数量。如果邻居表项的数量小于此值,垃圾回收(Garbage Collector)不会执行回收操作。默认值为 128;
gc_thresh2:当邻居表项数量超过此值时,垃圾回收将会清空大于5秒的表项。默认值为 512;
gc_thresh3:表示最大可允许的非永久表项数量。如果系统拥有大量接口或直连了许多设备,应该增大此值。默认值为 1024。

haproxy配置

/etc/haproxy/haproxy.cfg

global
...maxconn     10000 # 改大连接数 5000 -> 10000...defaultsmode                    tcp       # http -> tcplog                     global#option                  httplog  # 注释掉或删掉option                  tcplogoption                  dontlognull
...frontend pcscfsimmode tcp         #tcpbind *:1830      #前端端口acl dst_ip1 dst 47.0.1.0/24acl dst_ip2 dst 47.0.2.0/24...acl dst_ip19 dst 47.0.19.0/24acl dst_ip20 dst 47.0.20.0/24use_backend backapp1          if dst_ip1use_backend backapp2          if dst_ip2...use_backend backapp1          if dst_ip19use_backend backapp2          if dst_ip20backend backapp1balance     roundrobin             #轮询方式server  app1 47.0.1.1:1831 check   #后端端口1831server  app2 47.0.1.2:1831 check...server  app19 47.0.1.19:1831 checkserver  app20 47.0.1.20:1831 checkbackend backapp2balance     roundrobinserver  app21 47.0.2.1:1831 checkserver  app22 47.0.2.2:1831 check...server  app39 47.0.2.19:1831 checkserver  app40 47.0.2.20:1831 check

说明:

前端 47.0.1.0/24 即模拟器对应的 47.0.1.1:1830 ~ 47.0.1.250:1830 等10段IP, 会以roundrobin的方式映射到后端的app1~app20,即47.0.1.1:1831 ~ 47.0.1.20:1831;

前端 47.0.2.0/24 即模拟器对应的 47.0.2.1:1830 ~ 47.0.2.250:1830 等10段IP, 会以roundrobin的方式映射到后端的app21~app40,即47.0.2.1:1831 ~ 47.0.2.20:1831

后端的 47.0.1.1:1831 ~ 47.0.1.20:1831 和 47.0.2.1:1831 ~ 47.0.2.20:1831 对应40个模拟器线程


http://www.ppmy.cn/devtools/5054.html

相关文章

数据可视化(六):Pandas爬取NBA球队排名、爬取历年中国人口数据、爬取中国大学排名、爬取sina股票数据、绘制精美函数图像

Tips:"分享是快乐的源泉💧,在我的博客里,不仅有知识的海洋🌊,还有满满的正能量加持💪,快来和我一起分享这份快乐吧😊! 喜欢我的博客的话,记得…

Python革命:如何利用AI数据分析引领人工智能的未来

在人工智能迅速发展的今天,Python语言已经成为了推动AI领域发展的一大利器。作为一种高级编程语言,Python以其简洁的语法和强大的功能,为AI数据分析提供了强有力的支持,帮助开启了人工智能的新时代。 Python的核心优势 Python的最…

js 遍历数据结构,使不符合条件的全部删除

js 遍历数据结构,使不符合条件的全部删除 let newSourceJSON.parse(JSON.stringify(state.treeData))state.expandedKeys[]checkedKeys.map((item:any)>{loop(newSource,{jsonPath:item.split(&)[1]},state.expandedKeys)})function removeUnwantedNodes(tre…

Go语言中通过数据对齐降低内存消耗和提升性能

数据对齐是一种安排数据分配方式以加速 CPU 访问内存的方法。 不了解这个概念会导致额外的内存消耗甚至性能下降。 要了解数据对齐的工作原理,让我们首先讨论没有它会发生什么。假设我们分配两个变量,一个 int32 类型的 (32 B) 和一个 int64类型的(64 B): var i int32…

「51媒体」展会媒体邀约资源,媒体宣传服务执行

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 在组织展会时,媒体宣传服务的执行是提升展会知名度和影响力的关键环节。 确定目标媒体:根据展会的主题和目标受众,选择适合的媒体进行邀请。这可能包括…

linux-centos虚拟机设置固定ip

环境准备 虚拟机版本:centos7 安装环境:vmware17 1、设置网络连接 虚拟机-设置-网络适配器-NAT模式 2、查看子网信息 编辑-虚拟网络编辑器-NAT模式-NAT设置 查看子网ip和网关ip 下一步要用 3、修改配置文件 vim /etc/sysconfig/network-scripts…

Numpy方法总结(三)

一. NumPy 数学函数 1. 三角函数 NumPy 提供了标准的三角函数:sin()、cos()、tan()。 np.sin(a*np.pi/180) np.cos(a*np.pi/180) np.tan(a*np.pi/180) 示例 import numpy as npa np.array([0,30,45,60,90]) print (不同角度的正弦值:) # 通过乘 …

修改taro-ui-vue3的tabs组件源码增加数字标签

需求:taro-ui-vue3的tabs组件上增加数字标记 步骤一:node_modules文件夹下找到taro-ui-vue3/lib/tabs/index.js 把173行的这一段替换成下面这段,然后写上样式 default: () > item.number ? [h(View, {class: at-tabs__item_in}, {defau…