微服务性能测试的关键——IP欺骗技术

微服务的负载策略

对微服务进行测试时,我们经常会遇到具备相同功能的服务被部署多点的情况,如下图所示:

 

上图中黄色功能被部署了五个点,绿色功能被部署了三个点,而一个请求访问哪个点是由负载策略来分配的,以nginx做负载均衡为例,它的主要3种负载策略如下:

1.轮询:按请求时间顺序逐一分配后端服务器,优点:负载均衡,缺点:不支持会话保持;

2.ip hash:能保证每个请求访问ip访问固定的后端服务器,优点:可解决session问题,缺点:可能出现负载不均情况;

3.sticky(推荐方案):是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上。优点:session保持,负载均衡。缺点:客户端请求时必须带有效cookie信息,如果浏览器不支持cookie,那么sticky不生效。

例如选择ip hash这种策略,如果压力机不模拟多ip,nginx会把一台压力机发出的所有请求分配到一个应用上,这显然不是我么期望的!备注:使用IP hash策略要保证第三位和第四位IP段不同,例如192.168.1.2 和192.168.1.3 会被分配到同一台服务器上,设置192.168.2.2 和192.168.1.3,请求会被分配到不同的服务器上(吐血总结)。

实际解决方法如下:

1.需要多台压力机,同时进行压测。

2.利用jmeter 的IP欺骗机制,使用一台负载机,模拟多ip发送,这里重点讨论该方案。

jmeter 的IP欺骗机制

在电脑上配置IP,添加需要模拟的IP

点击上图中的高级,如下图所示:

点击上图中的添加,添加需要配置的ip即可,然后把新配置的IP保存到txt文件中,如下:

在jmeter中进行配置

1.添加csv数据文件,如下图:

2.CSV数据文件设置如下:

3.在HTTP请求默认值中应用参数

http请求默认值可以对所有的请求进行默认配置,进而减少配置工作量。具体配置方式如下图所示:

在Advanced页面的Source address里引入文件设置配置页面中的变量值即可

运行脚本验证

并发运行测试脚本后,在请求树中查看请求的X-LocalAddress值,发现IP 已经发生了变化!

请求1如下图所示:

请求2如下图所示:

 

到这里我们已经完成了IP的欺骗工作!可以通过一台jmeter压力机模拟多个ip分发请求,进而实现让负载分配请求到不同微服务的目的!原创不易,如果文章帮到了你,欢迎转发和点赞,让更多的朋友受益!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试开发Kevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值