最近利用思博伦的Avalanche 3100和AX设备做了几个性能测试,测试AX设备的L7层新建连接、并发连接数和L7层吞吐量。由于单台Avalanche设备能够打出的性能压力有限,所以并没有测出AX设备的性能上限,但是测试过程中,获得了一些调整Avalanche测试脚本的经验,分享给大家。
1、测试拓扑和方法:
如下图所示,测试拓扑比较简单就是两台设备通过万兆端口直连,这里有个建议:如果需要测试吞吐量,最好用万兆口相连接,拓扑和物理连接都比较简单,而且Avalance在下发测试模板的时候也会比较快!
测试方法:由Avalanche测试仪表分别模拟客户端和服务器端,其扮演客户侧的端口发起大量访问AX虚拟服务器VIP的流量,经过AX设备的负载分担,将这些访问请求导入到Avalanche扮演服务器侧的端口上,并做出应答。
以下是AX上VIP的相应配置,本次测试加载了URL hash和URL switch这两个HTTP应用层特性,所以测试方法更贴近实际应用,如果简单的测测ADC产品的四层性能,我想意义不是特别大。
- 创建HTTP模板,将URL中包含特定字符的请求分配到对应的服务器组群(service-group)中,并按照URL起始128个字节长度取值做Hash保持;
slb template http url-hash
url-switching contains news service-group sg-news
url-switching contains sport service-group sg-sport
url-switching contains blog service-group sg-blog
url-switching contains music service-group sg-music
url-switching contains gov service-group sg-gov
url-switching contains finance service-group sg-finance
url-switching contains media service-group sg-media
url-switching contains download service-group sg-download
url-switching contains p2p service-group sg-p2p
url-switching contains flash service-group sg-flash
url-switching contains movie service-group sg-movie
url-hash-persist first 128 use-server-status
- 配置被访问的VIP,并启用此前创建的HTTP模板,同时将会话表空闲超时时间设置为3600秒,测试并发连接数是会用到这个TCP模板;
slb virtual-server vip-test 10.10.0.10
port 80 fast-http
service-group sg-test
template tcp idletime
template http url-hash
2、测试七层每秒新建连接(CPS)的脚本
- 首先配置客户端的测试动作,在Avalanche控制终端的【Client】菜单项中,选择【default Actions】子菜单,修改客户端的action动作,设定客户端发起访问的目标地址和目标文件,为了测试URL switch和Hash,最好get不同的URL路径,URL越离散越好,这些URL中需要包含HTTP模板中的那些字段,以测试其效果;
- 选择【Network】子菜单,添加客户侧源IP地址,这些IP地址要足够多;
- 选择【Ports】子菜单,选定Avalance测试仪表与AX客户侧Vlan连接的端口,并在此端口上添加一个虚拟路由器(Virtual Router),将缺省路由指向AX的端口IP;同时,在AX设备上也要将客户侧的子网路由指向虚拟路由器的接口IP;
- 在【Loads】子菜单中配置业务访问压力,【Specification】选为“Connections/second”;【Ramp UP】由于仪表限制,Avalache3100基本也就能打出不到20万的CPS,所以在30秒周期内,我将预期峰值设定为最高190,000CPS,维持20秒;
- 最后在【Associations】子菜单中,归结以上创建的各个部分,形成客户端测试模板;
- 同样的,在Avalanche控制终端的【Server】菜单项中,配置服务器端【Profile】参数,选定服务类型为HTTP,Server类型为IIS;
- 在【Transactions】子菜单中,配置服务器侧目标文件的大小(Size),注意:测试CPS时一般可配置为128字节或者1K字节大小的文件,测试吞吐量时需要配置为至少512K字节大小;
- 同样,在【Network】、【Subnets】、【Ports】子菜单中配置服务器侧的子网IP、网关地址和端口,将服务器网关指向AX设备与该端口连接的接口IP地址;
- 最后在【Associations】子菜单中,配置服务器的IP地址,并归结以上创建的各个部分,形成服务器端测试模板;
- 完成以上步骤后,就可以开始测试了,以下是测试时在两个设备上的截图;
3、测试七层吞吐量的脚本(目标文件大小为512K字节)
-
利用此前创建的CPS测试脚本,在【Client】菜单中,选择【Loads】子菜单,修改客户端的业务访问压力,【Ramp UP】设置为在30秒周期,将预期新建连接值设定为4,000CPS,预计峰值产生20Gbps流量(4000 x 512K bytes),维持300秒;
-
在【Server】菜单中,选择【Transactions】子菜单,配置服务器侧目标文件的大小(Size)为512K字节;
-
完成以上步骤后,就可以开始测试了。
4、测试并发连接数
测试并发连接数是这几个性能测试当中稍微复杂一些的项目,主要是因为测试仪表需要保持住已经建立的连接,直到达到我们预期的数值为止。那如何保持住呢?我采用的方法是让测试仪表在一个TCP connection中每个几十秒发送一个HTTP Get请求,这样可以保证测试仪表不会主动向负载均衡设备发送关闭连接的报文;同时,调整负载均衡设备上的连接空闲超时时间(Connection idle timeout),将空闲超时时间设置到比测试仪表达到预期值所需时间更长就好。
- 利用此前创建的CPS测试脚本,在【Client】菜单中,选择【Actions】子菜单修改客户端的action,设定客户端发起不小于20个请求,访问不同路径的目标文件(正好测试URL hash需要),如图所示;
- 选择【Profile】子菜单,启用“User Think Time”时间,设定为40秒,使客户端每发起一个HTTP Get请求后都会等待40秒再发起下一个Get请求,以保证客户端的连接不会空闲超时而关闭;
- 在【Loads】子菜单中配置业务访问压力,【Specification】选为“Connections”,【Ramp UP】中将并发连接数峰值,设定到预期值,并维持一定的时间(以秒为单位);
- 保持【Server】端的配置不变,即可开始测试了。
以上就是利用Avalanche仪表对负载均衡产品进行性能测试的大致方法,要注意每个测试仪表和被测设备都是有性能上限的,需要在测试过程中注意性能瓶颈的定位。可以通过这些设备的CPU、内存占有率等资源情况来做出判断。
S.G
本文转自 virtualadc 51CTO博客,原文链接:http://blog.51cto.com/virtualadc/703546