一、概述
OpenStack是一个庞大的协作式的服务系统,而Rally是一个对OpenStack进行测试验证的工具。Rally能够对OpenStack进行自动化多节点的部署、验证、测试和分析。在大规模集群的高负载情况下测试OpenStack集群的稳定性和性能,可以作为OpenStack CI/CD系统的基本工具,用来提高OpenStack集群的SLA、性能和稳定性。
rally与OpenStack进行对接测试的框架图如下。
二、rally的三种使用场景
对于不同的使用场景,Rally使用的方式也有所不同,下面是三种最主要的使用场景。
2.1 开发测试
评估处于开发阶段的OpenStack系统的性能,rally能够完成安装部署、测试仿真并且输出测试结果等一系列操作。
2.2 开发运维
对于现有的OpenStack云平台,进行仿真测试并输出测试结果。
2.3 CI/CD
将Rally集成到CI/CD系统中。
一般来说,Rally通常可以使用在以下典型场景中:
- 自动何亮和分析新的代码对系统性能的影响;
- 使用rally检测器来探测规模和性能问题;
- 研究不同的部署方式对系统性能的影响
- 寻找合适的OpenStack部署方式,为不同的负载(controller的数量,swift节点的数量等)创建不同的部署标准
- 研究最适合OpenStack云的硬件
- 衡量在不同负载情况下各种基本操作的性能指标
三、rally安装
首先需要安装g++
yum install gcc-c++
使用virtualenv创建一个干净的python环境(也可以直接在当前的python环境中安装),然后使用pip安装rally
pip3 install rally
安装过程中会报出如下错误
需要高版本的rustc,系统自带的rustc的版本是1.54不能够满足要求
执行如下命令安装rustc和cargo
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
安装完成后需要在/root/.bashrc中添加环境路径
PATH=/root/.cargo/bin:$PATH
然后执行
pip3 install rally
提示需要openssl
安装openssl
yum install openssl*
再次安装提示需要Python.h文件
安装python3-devel
yum install python3-devel
然后再安装rally,安装成功
执行初始化数据库命令
rally db create
安装过程中可能会出现cryptography无法安装的问题,原因是cryptography的依赖包需要从github上下载,由于网络问题可能导致无法成功下载
需要安装rally-openstack
pip3 install rally-openstack
安装完成后,需要提供openstack的deployment来测试rally是否正常可用,可以使用openrc文件进行创建或者使用一个deployment的配置文件进行创建。
下面是根据openrc的环境变量创建了一个rally中的deployment
source stress-openstack.sh
rally deployment create --fromenv --name=stress
创建完成后,可以使用如下命令查看deployment的详情
rally deployment show stress
完成后检查rally是否能够与openstack中组件正常连接
rally deployment check
执行测试,需要创建一个json或者yaml文件,例如
{ "NovaServers.boot_and_delete_server": [ { "args": { "flavor": { "name": "m1.tiny" }, "image": { "name": "cirros" }, "force_delete": false }, "runner": { "type": "constant", "times": 10, "concurrency": 2 }, "context": { "users": { "tenants": 3, "users_per_tenant": 2 } } } ] }
执行测试
rally task start boot-and-delete.json
测试结果
使用rally生成html格式的报告
rally task report a54c8f18-9b01-4c4b-ac45-9527f49f23be --out output.html
这个时候如果直接使用浏览器来查看输出的output.html,会出现Failed to load AngularJS framework的错误。
这是因为使用的AngularJS Framework是国外网络,必须要修改output.html中头部对于AngularJS的引用位置,修改为如下的国内网络地址即可
<link rel="stylesheet" href="http://cdn.bootcss.com/nvd3/1.1.15-beta/nv.d3.css">
<script type="text/javascript" src="http://cdn.bootcss.com/angular.js/1.3.3/angular.min.js"></script>
<script type="text/javascript" src="http://cdn.bootcss.com/d3/3.4.13/d3.min.js"></script>
<script type="text/javascript" src="http://cdn.bootcss.com/nvd3/1.1.15-beta/nv.d3.min.js"></script>
rally可以与多个openstack环境进行连接,通过deployment进行管理,查看到当前的deployment
rally deployment list
在同一时间只能有一个deployment处于激活状态
执行
rally deployment use stress
切换到stress这个deployment