OpenStack网络测试工具shaker介绍

作者: 赵怡


一、shaker简介

Shaker是一款在OpenStack环境中使用的网络性能测试工具, 可针对不同网络场景进行性能测试。

主要原理是, 通过heat模板创建虚拟机, 并使用虚拟机中的iperf3,netperf工具进行虚拟机间互相打流测试网络性能, 最终抓取测试结果, 通过网页方式输出给用户。

 

二、shaker安装

由于shaker依赖于heat编排组件用于自动创建虚拟机和网络, 所以先要安装openstack heat组件。

另外, shaker本身可以手动安装, 也可以通过pip install pyshaker方式安装

手动安装

1. 从github上下载shaker软件源代码

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

 

2. 安装shaker时, 为了依赖包不干扰现有环境的python库, 可以把shaker安装在virtualenv中

# pip install virtualenv

# cd shaker

# virtualenv .venv

# source .venv/bin/activate

(.venv) #

(.venv) # yum install gcc libyaml zeromq-devel -y

(.venv) # pip install pytz functools32

(.venv) # pip install -r ./requirements.txt

(.venv) # python ./setup.py install

 

3. 创建shaker要使用到的定制image

这里会连接到客户的openstack,自动生成shaker-flavor以及通过heat模板创建一个shaker会使用到的image(通过创建虚拟机, 执行下载/安装脚本, 然后创建快照方式生成image),image中会下载iperf/netperf工具, 以及通过pip安装pyshaker-agent代理。

由于涉及到下载, 安装, 需要保证您的openstack中的外部网络可以访问外网。

(.venv) # source admin-openrc.sh

(.venv) # shaker-image-builder

 

4. 运行shaker, 这里会使用heat根据用户指定的场景创建一堆虚拟机, 并在虚拟机上执行shaker-agent来执行测试操作。结果输出到report中。

(.venv) # shaker --server-endpoint 10.65.1.49:8033 --scenario /root/shaker/shaker/scenarios/openstack/full_l2.yaml --report ./shaker_report.html

 

5. 测试结果样例如下:

OpenStack网络测试工具shaker介绍_第1张图片

测试结果


三、shaker原理

制作Shaker-Image

命令:shaker-image-builder; 命令会执行默认配置,如果需要改变配置 (比如选择不同的虚拟机镜像模板)可以用 --help

创作shaker-image的过程实际上是调用heat建立一个stack, 利用配置userdata文件,在镜像模板启动虚拟机时,将pyshaker-agent,iperf, netperf这些测试工具都安装在虚拟机里。

由于Shaker这个项目还不成熟,可以利用devstack环境,将shaker-image先创建,然后注册到测试环境的glance里面,然后创建一个合适的shaker-flavor, 这样可以避免很多错误。

 

具体原理

这个命令底层就调用了一个Python函数,“shaker/engine/image_builder.py”中的“build_image” 函数。

Shaker提供了三种制作“shaker-image”镜像的模板:centos、debian、ubutnu,默认使用ubuntu,可以使用“--image-builder-template ”参数指定使用哪个镜像,使用哪个镜像对Shaker来说都一样,Shaker在乎的是镜像中的pyshaker-agent、iperf、netperf、flent工具,换句话说,“镜像中只要有这几款工具,任何系统都可以实现!”

“build_image”函数会创建名字为“ shaker-flavor”的Flavor(1vcpu、512mb memory、3g disk),以及名字为“shaker-image”的Glance镜像,Shaker创建镜像底层使用的技术是Heat,“build_image”函数读取“shaker/resources/image_builder_templates/ ”目录下的模板文件,默认是Ubuntu,然后由Heat创建需要的Network、Router,下载原始镜像,然后通过“cloud-init”工具,安装Shaker需要的工具,“build_image”函数会等待虚拟机关机,最后创建虚拟机的快照,上传到Glance中。

“build_image”函数创建镜像之前会检查Glance是否存在名为“shaker-image”的镜像和名为“shaker-flavor”的Flavor,如果已经存在,就不会再次创建了,所以不管使用哪个原始镜像创建“shaker-image”镜像,都只会创建一个不会重复。例如第一次使用Ubuntu,那么第二次使用“centos、shaker-image-builder ”命令会直接返回!

 

测试
shaker --output output.json --verbose --server-endpoint 10.2.17.2:9999--scenario openstack/full_l2
--output 指定把Raw格式的报告存放到哪个文件
--server-endpoint 指shaker server运行时监听的IP地址和端口,端口随意,不冲突即可,虚拟机中的“shaker-agent”会连接到这个socket上,和shakerserver通讯,由shaker告知需要测试的项目以及相关节点信息(如IP)
--scenario Shaker 项目提供多种场景的模板进行测试,详细可以查看
https://github.com/openstack/shaker/tree/master/shaker/scenarios/openstack

注:  由于Shaker相对于其他Rally等测试工具来讲,操作,原理等都比较复杂,测试中外部依赖比较多,项目也不是很成熟。所以,可以先用Docker将所有依赖包括shaker-image,shaker-flavor全部打包,在到测试环境测试,这样相对比较简单,如果需要还可以,写一些自动化脚本,将shaker-image, shaker-flavor这些自动注册到测试环境的glance nova中,并简化测试步骤。

 

四、常见问题

1. 如在shaker-image虚拟机中运行shaker-agent碰到问题: ImportError: version conflict:'/usr/lib64/python2.7/site-packages/psutil/_psutil_linux.so' C extension modulewas built for another version of psutil (different than 2.2.1)

通过以下操作解决: sudopip install psutil==2.2.1


你可能感兴趣的:(测试工具,neutron,云计算,openstack)