May 232016
 

现在OpenStack项目越来越多,要想搞清楚每个项目具体用途是啥,就算对于我们OpenStack创业公司,有时候都是有点吃力。很很多好玩的东西,我们不知道,这是比较可惜的事情。

到底从哪个项目开始介绍,选了半天,终于选了这个项目Shaker,和我的名字很类似。开玩笑,是用我名字创建的项目,所以就必须认真学习。

靠一个人的力量的搞定那么多项目,其实也不现实。这次就把我九州云同事江军波 OpenStack应用实战之Shaker安装测试 转载过来。

项目介绍

在以前OpenStack做网络的性能测试是比较麻烦的,各种的网络场景,vlan,vxlan,Flat模式,L3,Dvr,各家厂商的SDN插件,这些场景的性能测试工作量,是非常庞大的,你都需要登录虚拟机里面,使用工具进行互相打压,并且把数据记录下来。这样手工出来的测试结果,很难让人信服。

Shaker项目是Mirantis发起,专门针对OpenStack网络的性能的测试工具。通过模拟不同的网络场景,通过heat的模板,创建虚拟机,并且在虚拟机里运行iperf,iperf3, netperf等工具来对网络进行自动化性能测试,并且把测试的结果用网页形式输出。

目前OpenStack的另外一个著名测试工具Rally, 也是Mirantis发起,对OpenStack进行整体的测试的一个工具,可以对OpenStack的功能,存储的性能进行压力测试,可以测试磁盘的IOPS,并且提供很好的web展示。

Rally和Shaker有各自的重点,两个工具结合起来,在OpenStack交付给用户的场景下,可以提供一份比较客观的验收报告。

环境说明

需要有一个可用的openstack环境,需要配置好heat服务,因为shaker会使用编排服务启动各种场景下的虚拟机,由于测试网络性能,所以计算节点需要两个以上,采用的neutron L3网络。

为了好说明,专门拿一台机器跑Shaker,其实安装在控制节点,也是可以的。控制节点也可以跑计算服务。

本文环境如下

角色 IP 备注
Controller 192.168.1.41 网络节点在上面
Compute1 192.168.1.42  
Compute2 192.168.1.43  
Shaker 192.168.1.43  

 

安装篇

在Shaker机器上 (CentOS 7.2)

安装Shaker项目,这里我把github的源替换成trystack.cn, 为了加快下载的速度。

git clone http://git.trystack.cn/openstack/shaker
cd shaker
pip install

制作镜像

这个环节其实是最容易出错,如果有已经做好的镜像,其实就可以跳过这一步。目前发现制作镜像出现错误都是因为网络原因导致,大家要留意网络。

设置环境变量,这个是需要admin的权限。

source ./keystonerc

你可以设置镜像的创建参数,etc/shaker.conf ,默认参数应该就够用。默认是采用ubuntu的镜像来进行测试

shaker-image-builder

heat,作为一个编排软件,日常其实很少用到,这次倒是体会了一次heat编排功能的强大,shaker-image-builder,大概需要完成的内容大概是:

  1. 创建路由器
  2. 创建内部网络,连接到路由器上,
  3. 把外网连接到路由器上,
  4. 创建一个专用Flavor shaker-flavor
  5. 下载一个ubuntu镜像,上传到glance上
  6. 通过镜像,创建一个虚拟机
  7. 通过cloud init 安装所有的测试工具
  8. 装完后,关机,做快照,上传到glance,镜像命名为shaker-imag
  9. 删除虚拟机。并且把第一次下载的ubuntu镜像,网络,路由都删除。

你的OpenStack就是多了一个镜像和一个Flaovr。

上面这些事情如果手工来完成,估计没1,2个小时是搞不定,而且很容易出错。shaker-image-builder就是调用Heat模板来完成。

https://github.com/openstack/shaker/blob/master/shaker/resources/image_builder_templates/ubuntu.yaml

上面最容易出错是第三步,路由器连接外网。你需要提前在你的OpenStack里,创建一个外部网络,heat通过代码检测出那个网络是外部网络,就接到路由器上,这样你创建的虚拟机才能联网。不然肯定就会出错。

日后其实可以考虑把做好的镜像提供出去,下载直接就可以使用。

制作镜像原理

shaker-image-builder这个命令底层就调用了一个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-imag的镜像以及名为shaker-flavor的flavor,如果已经存在,就不会再次创建了,所以不管使用哪个原始镜像创建shaker-image镜像,都只会创建出一个,例如第一次使用ubuntu,那么第二次使用centos,shaker-image-builder 命令会直接返回,不会继续。

测试

环境有限,只进行了如下简单测试,对一个tenant网络进行了测试 (scenario:openstack/full_l2),这个环境下,会在每个计算节点启动一个虚拟机,然后在虚拟机里面对tcp、icmp进行测试

source ./keystonerc
shaker --output output.json --verbose \
--server-endpoint 192.168.1.44:4000 --scenario openstack/full_l2

参数说明

–output 指定把raw格式的报告存放到哪个文件

–server-endpoint 这个ip地址和端口,是运行shaker命令的本机的ip地址和端口,端口随意,不冲突就好,虚拟机中的shaker-agent会连接到这个socket上,跟shaker命令通讯,由shaker告知需要测试的项目以及相关节点信息(如ip)

–scenario Shaker 项目提供多种场景的模板进行测试,详细可以查看https://github.com/openstack/shaker/tree/master/shaker/scenarios/openstack

我们例子使用的是full_l2.yaml 来进行测试。

测试原理

同样shaker也使用heat启动各种场景下的虚拟机,这个示例使用的是 openstack/full_l2 ,根据描述,shaker会启动成对的虚拟机(master/slave),每个虚拟机起在不同的compute节点上,在虚拟机中使用iperf、netperf工具测试

heat还是会按照一个基本流程,创建网络,路由,安全组,打开相应的端口。

根据结果生成报告

shaker-report –input output.json –report a.html

shaker-report 可以根据结果生成html格式的报告

shaker

 

Snap2

 

相关链接

https://github.com/openstack/shaker/
http://pyshaker.readthedocs.io/en/latest/

  2 Responses to “OpenStack项目系列介绍(1) Shaker”

  1. pip install 后面是不是少了一个点?

 Leave a Reply

(required)

(required)

This site uses Akismet to reduce spam. Learn how your comment data is processed.