云道OpenStack Shaker网络性能测试实践
Posted 烽火云计算
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云道OpenStack Shaker网络性能测试实践相关的知识,希望对你有一定的参考价值。
本文主要介绍Shaker的安装及如何使用Shaker来测试OpenStack。
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.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上下载镜像,节省时间。创建云主机时注入密码,方便登录云主机观察测试。
在resources下删除图片里红框中的内容。直接使用云平台上的镜像,不需要在web上下载镜像,节省时间,提高效率。
在master_image_server里添加图片红框里的参数。
config_drive: True 为了指定新建虚拟机的config_drive为True,否则用户命令注入不进去,新建的虚拟机不会自动启动shaker-agent。
b.准备ubuntu镜像,上传到云平台上,命名为ubuntu-server
c.创建flavor:shaker-flavor 大小为1vCPU_2G_50G
d.上传编辑好的模板文件,并创建栈,各参数对应的值参见图片:
external_net:外网选择可以连通管理网的网段
admin_pass:注入密码
e.栈创建成功后找到栈创建的云主机,进入云主机,等待Shaker所需工具安装完成。
f.安装完工具后,将云主机关,制作云主机快照,命名为shaker-image。等待镜像上传成功后,就可以进行Shaker测试。
3.1运行测试
以shaker/shaker/scenarios/openstack/perf_l2.yaml为例:
(1)查看perf_l2.yaml文件,找到这个场景的heat的模板文件
修改shaker/shaker/scenarios/openstack/l2.hot文件,在user_data前添加两个配置项
config_drive: True 为了指定新建虚拟机的config_drive为True,否则用户命令注入不进去,新建的虚拟机不会自动启动shaker-agent
admin_pass: 1qaz2WSX 新建的虚拟机指定密码,如果不指定就会是随机密码,不方便测试人员观察进度
(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格式的测试报告。
测试报告清晰明了,将测试的用例及测试结果全部以图表形式输出。当出现ERROR的情况时,Stats会显示相关错误详情。
Shaker除了可以测试OpenStack的网络性能外,还可以通过加入其他测试工具将Shaker的功能拓展,比如支持云主机的计算性能测试(unixbench工具),磁盘性能测试(fio工具)等等,我们致力于将Shaker作为Openstack性能测试的主要工具。
李丹,烽火云计算软件测试工程师,主要从事OpenStack的网络相关的功能、性能测试等方面的工作。
以上是关于云道OpenStack Shaker网络性能测试实践的主要内容,如果未能解决你的问题,请参考以下文章