使用 Rally 来实现 Openstack Tempest 测试

Tempest 基本介绍

总所周知,目前最流行的云计算解决方案当属 Openstack。OpenStack 是一个开源的云计算管理平台项目,支持几乎所有类型的云环境,可以大规模的管理计算资源、存储资源和网络资源等等。因此针对于 Openstack 的测试也尤为重要。Openstack 社区为此创建了 Tempest, 它是一个旨在为云计算平台 OpenStack 提供集成功能测试的开源项目,包含了 Openstack 基本组件(nova, keystone, glance, neutron, cinder 等)的 API 测试用例与场景。它是基于 unittest2 和 nose 建立的,灵活且易于扩展及维护,使得 OpenStack 相关测试效率得到大幅度提升。

更多 Tempest 相关的信息可以上 Openstack 官网查询:http://docs.openstack.org/developer/tempest/overview.html

Rally 基本介绍

Rally 作为 Openstack 的性能测试工具被大家所熟知并使用。事实上 Rally 还可以实现云的部署和云产品的功能集成测试。Rally 主要包括三大部分:

  1. Deploy Engine:这不是一个真的部署工具,它只是一个插件形式的东西,它可以和其他部署工具(比如 DevStack,Fuel,Anvil 等)一起工作来简化和统一部署流程。
  2. Verification:这就是本文将要阐述的内容。目前只有将 Tempest 整合进了 Rally 来验证云的系统集成功能。
  3. Benchmark Engine:这是负责实现性能测试的一部分,本文将不多述。

下图 1 摘自 Openstack 官网,可以清楚明白的了解 Rally 的概况和结构,红框内即为本文将阐述的部分。

图 1. Rally 概图

图 1. Rally 概图

使用 Rally 来运行 Tempest

目前使用 Rally 来实现系统功能测试还处于不太成熟阶段,从网上搜索的结果可以看出相关的信息还是很少,目前 Openstack 社区只是将 Tempest 整合进了 Rally,接下来可能会有更多的其他的测试框架会被融合进来,我们拭目以待。

总体来说,使用 Rally 来执行 Tempest 还是优点颇多:

  1. 它会把每次执行完的结果存到数据库当中,避免数据的丢失;
  2. 可以通过 rally 的命令将数据库当中的数据导出来,形成 html,csv 或者 json 格式,让结果一目了然更清晰;
  3. Rally 有对比功能,不需要借助其他第三方的工具,通过命令可以将数据库里的两个结果对比出来形成 html/csv/json 格式,这样分析阅读起来更明了。
  4. 和性能测试用同一个工具,减少学习成本和熟悉时间,更有效率。

前期准备

本文主要描述的是怎样利用 Rally 来执行 Tempest 测试,所以本文将从零开始,一步一步来实现 Rally 的安装和配置,Tempest 的安装,配置,执行和结果呈现。

我们前期的准备是:一台配置好的 Linux 机器!

所谓配置好的虚拟机也很简单,是指:

  1. 网络是联通的,即能访问外网;
  2. Root 账户的密码重新设置过,这样保证你能知道 root 的密码;
  3. 共享文件夹是可行的,可保证随时可以从本地上传所需资源;
  4. Python, pip, easy_install, apt-get 等这些相关的资源是已经安装好了的(当然如果安装最新的 Ubuntu,这些都是默认安装好的,但最好还是检查一下);
  5. 上述这些源都是更新到最新的。
  6. 如果将用的云是需要 OpenVPN 之类的才能连通,那么还得安装 OpenVPN 等。

这样我们的前期准备就做好了!

扫描二维码关注公众号,回复: 2007310 查看本文章

Rally 安装

最简便快速的安装方法是只需执行一行命令:

清单 1.Rally 安装命令
1
2
3
4
# 使用 wget
$ wget -q -O- https://raw.githubusercontent.com/openstack/rally/master/install_rally.sh | bash
# 或者使用 curl
$ curl https://raw.githubusercontent.com/openstack/rally/master/install_rally.sh | bash

该命令将会先检查 Rally 所依赖的软件包有没有已经被装上,如果没有,它会抛出类似下面的错误和修复的命令:

图 2. 提示缺少依赖包及解决办法

图 2. 提示缺少依赖包及解决办法

出现这种情况的时候,我们可以根据给出的解决办法手动安装所需依赖包:

清单 2. 安装依赖包
1
$ sudo apt-get install libssl-dev libffi-dev python-dev libxml2-dev libxslt1-dev libpq-dev git python-pip

依赖包安装成功后,再执行一遍最初的安装命令即可。安装完成!如图 3。在安装完成之后,会给出相应的 rally 信息的目录:虚拟环境,数据库,配置文件和实例。

图 3. Rally 安装完成

图 3. Rally 安装完成

如果是用 root 账户来执行的话,如果有一些依赖包的缺失,它将会给出提示是否安装。这样的话 Rally 将会被装在系统里面而不是新的虚拟环境中。你可以这样执行:

清单 3.root 安装
1
$ sudo ./install_rally.sh

从图 2 可以看出,用一般的账户来执行的时候,Rally 默认的会被安装到一个虚拟环境,即在主目录下面会生成一个 rally 的目录来存放 Rally。当然也可以指定一个特定的目录来存放 Rally。比如像以下的这个命令,该命令需要手动将 install_rally.sh 下载下来之后再执行:

清单 4. 使用--target 安装
1
$ ./install_rally.sh --target /foo/bar

执行--help 来查看具体的参数配置:

图 4. install_rally.sh 参数配置

图 4. install_rally.sh 参数配置

Rally 配置

Rally 安装成功之后,我们需要对 Rally 进行配置。

  1. 首先是进入到 Rally 的虚拟环境, 在终端的光标行首前会出现 (rally)。
    1
    $ . ~/rally/bin/activate
  2. 然后建立 Rally 的数据库。
    1
    $ rally-manage db recreate
  3. 为了能让 Rally 和我们的云建立连接,我们需要一个 openrc 文件,该文件可以从 Horizon 里面得到,具体路径是:Horizon->Project->Compute->Access &Security->API Access。从该页面下载 openrc 文件后,将它以及文件里所引用到的其他文件(比如 crt 文件等)一起放到 Rally 所在的机器里面来。比较方便的话我们可以就将他们放在主目录下。然后我们 source 一下该文件来导出里面的环境变量。
    1
    $ . openrc
  4. 注册一个 Openstack deployment,注册成功后,将会默认使用这个 deployment,同时在主目录下会有一个新的目录出现:.rally。
    1
    $ rally deployment create --fromenv --name=existing
  5. 检查验证一下刚注册的 deployment 是否存在。
    1
    $ rally deployment list
  6. 最后检查一下 deployment 是否可行。如果出现如图 5 的表格,证明 Rally 的配置已经成功。
    1
    $ rally deployment check
图 5.Rally deployment check

Figure xxx. Requires a heading

猜你喜欢

转载自www.linuxidc.com/Linux/2017-10/148032.htm