云道OpenStack Shaker网络性能测试实践

Posted 烽火云计算

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云道OpenStack Shaker网络性能测试实践相关的知识,希望对你有一定的参考价值。


本文主要介绍Shaker的安装及如何使用Shaker来测试OpenStack。


1. Shaker的基本介绍


Shaker是一款针对OpenStack网络性能的测试工具。主要原理是通过模拟不同的网络场景和heat模板,创建虚拟机,并在虚拟机中运行iperf,iperf3,netperf等工具来对网络性能进行自动化测试,并把测试结果以html的形式输出。

Shaker支持计算节点内,计算节点间,跨可用域节点间,所有计算节点间两两配对部署测试,支持L2,L3_east_west,L3_north_south等网络场景的测试。

具体工作流程如下:

a.Shaker使用heat启动各种场景的虚拟机,虚拟机一般是成对(master/slave)的;

b.虚拟机中的“shaker-agent”通过SOCKET连接加入到Shaker;

c.Shaker告知agent需要测试的项目以及相关节点信息(如IP);

d.虚拟机使用“iperf,netperf”等工具进行发包测试;

e.虚拟机测试完毕向Shaker上报测试结果。


Shaker的架构图


2. Shaker的安装


2.1环境说明

使用Shaker测试OpenStack,需要OpenStack环境并且配置好heat服务,因为Shaker会使用heat服务启动各种场景下的虚拟机。由于是测试网络性能,所以计算节点需要2个及以上,采用neutron L3网络。其次,由于测试时虚拟机中的“shaker-agent”需要连接到Shaker服务器,即虚拟机需要与Shaker服务器之间网络互通,又由于Shaker服务器需要调用heat服务,所以Shaker服务器需要与被测控制节点的管理网互通。

为避免测试中产生网络不通的问题,我们给出的解决方案是,将Shaker安装在与控制节点的管理网相通的主机上(本文中Shaker安装在控制节点上),配置一个外网,打通管理网与这个外网,使用外网的浮动IP来实现管理网与业务网相通。


2.2下载源码

git clone https://github.com/openstack/shaker


2.3在虚拟环境中安装Shaker

安装Shaker时,为了依赖包不干扰现有环境,建议把Shaker安装在virtualenv虚拟环境中。

# pip install virtualenv

# cd shaker

# virtualenv shaker-test

# source shaker-test/bin/activate

(shaker-test) # yum install gcc libyaml zeromq-devel -y

(shaker-test) # pip install pytz functools32

(shaker-test) # pip install -r ./requirements.txt

(shaker-test) # python ./setup.py install


2.4制作Shaker镜像

(shaker-test) # source admin-openrc.sh

(shaker-test) # shaker-image-builder

首先调用source命令设置OpenStack的环境变量,Shaker命令(shaker-image-builder)会自动生成名字为“shaker-flavor”的Flavor以及通过heat模板创建一个名字为“shaker-image”的镜像(通过创建虚拟机,执行下载/安装脚本,然后创建快照方式生成Image),该镜像中包含iperf,netperf,pyshaker-agent等工具。

由于网络原因,使用Shaker命令制作镜像时有很大概率失败并且耗时良久,可以在云平台上手动创建符合Shaker标准的镜像。以狗食环境为例:

a.拷贝出Shaker创建镜像的模板文件“shaker/shaker/resources/image_builder_templates/ubuntu.yaml”,编辑该模板文件。

在parameters下添加图片里红框中的内容。模板文件直接使用云平台上的镜像,不需要在web上下载镜像,节省时间。创建云主机时注入密码,方便登录云主机观察测试。


【云道】OpenStack Shaker网络性能测试实践


在resources下删除图片里红框中的内容。直接使用云平台上的镜像,不需要在web上下载镜像,节省时间,提高效率。


【云道】OpenStack Shaker网络性能测试实践


在master_image_server里添加图片红框里的参数。

config_drive: True 为了指定新建虚拟机的config_drive为True,否则用户命令注入不进去,新建的虚拟机不会自动启动shaker-agent。


【云道】OpenStack Shaker网络性能测试实践


b.准备ubuntu镜像,上传到云平台上,命名为ubuntu-server

c.创建flavor:shaker-flavor 大小为1vCPU_2G_50G

d.上传编辑好的模板文件,并创建栈,各参数对应的值参见图片:


【云道】OpenStack Shaker网络性能测试实践


external_net:外网选择可以连通管理网的网段

admin_pass:注入密码

e.栈创建成功后找到栈创建的云主机,进入云主机,等待Shaker所需工具安装完成。


【云道】OpenStack Shaker网络性能测试实践


f.安装完工具后,将云主机关,制作云主机快照,命名为shaker-image。等待镜像上传成功后,就可以进行Shaker测试。


3. Shaker的测试


3.1运行测试

 以shaker/shaker/scenarios/openstack/perf_l2.yaml为例:

(1)查看perf_l2.yaml文件,找到这个场景的heat的模板文件


【云道】OpenStack Shaker网络性能测试实践


修改shaker/shaker/scenarios/openstack/l2.hot文件,在user_data前添加两个配置项

config_drive: True 为了指定新建虚拟机的config_drive为True,否则用户命令注入不进去,新建的虚拟机不会自动启动shaker-agent

admin_pass: 1qaz2WSX 新建的虚拟机指定密码,如果不指定就会是随机密码,不方便测试人员观察进度


【云道】OpenStack Shaker网络性能测试实践


(2)进入"shaker-test"的虚拟环境,shell的前缀会变为(shaker-test): 

[root@dfcontroller1 ~]:source /root/shaker-test/bin/activate

(shaker-test)[root@dfcontroller1 ~]: 

(3)执行测试命令

shaker --debug --agent-join-timeout 1800 --external-net bizconline-net --server-endpoint 192.168.251.31:8033 --scenario /root/shaker/shaker/scenarios/openstack/perf_l2.yaml --report ./shaker_report.html 2>&1 | tee /var/log/shaker/shaker.log

--agent-join-timeout:agent连接失败的超时时间

--external-net:指定外网

--scenario:指定测试场景

--report:输出测试结果


3.2查看测试结果

测试完后会生成HTML格式的测试报告。


【云道】OpenStack Shaker网络性能测试实践




测试报告清晰明了,将测试的用例及测试结果全部以图表形式输出。当出现ERROR的情况时,Stats会显示相关错误详情。


4. Shaker的拓展


Shaker除了可以测试OpenStack的网络性能外,还可以通过加入其他测试工具将Shaker的功能拓展,比如支持云主机的计算性能测试(unixbench工具),磁盘性能测试(fio工具)等等,我们致力于将Shaker作为Openstack性能测试的主要工具。


作者简介:


李丹,烽火云计算软件测试工程师,主要从事OpenStack的网络相关的功能、性能测试等方面的工作。



以上是关于云道OpenStack Shaker网络性能测试实践的主要内容,如果未能解决你的问题,请参考以下文章

Ceph集群网络性能测试

RFC3918协议测试——网络测试仪实操

RFC3918组转发矩阵测试——网络测试仪实操

RFC2889广播时延测试——网络测试仪实操

RFC2889广播时延测试——网络测试仪实操

Ceph集群网络性能测试