OpenStack 性能测试工具Rally使用

  • 时间:
  • 来源:互联网
  • 文章标签:

OpenStack 性能测试工具Rally使用

Rally是OpenStack社区推出开源测试工具,可用于对OpenStack各个组件进行性能测试。
可以自动化并统一 多节点OpenStack部署,验证,测试和性能分析。它可用作OpenStack CI / CD系统的基本工具,可以不断提高其SLA,性能和稳定性。

对于不同的使用场景,Rally在测试中的流程也有所不同,主要支持以下三种场景:

1) 开发测试,可以评估处于开发阶段的OpenStack系统的性能,能够完成安装部署、仿真测试并输出测试结果等一系列动作;

2) 开发运维测试,可以基于现有的OpenStack云平台,对已经安装部署的云平台进行仿真测试并输出测试结果;

3) CI/CD场景测试,可以将Rally集成到CI/CD系统。
在这里插入图片描述

Rally安装及配置

有多种方式安装Rally组件,如下是官方推荐的3种方法,
1.自动化独立安装

这个是全自动化,省事省力,如下命令即可搞定,如果是缺少什么软件,会自动下载安装。

wget -q -O-https://raw.githubusercontent.com/openstack/rally/master/install_rally.sh |bash

curlhttps://raw.githubusercontent.com/openstack/rally/master/install_rally.sh |bash

安装完成后,执行以下命令构建rally数据库:
rally-manage db recreate
2. 和DevStack allinone一起安装

git clonehttps://git.openstack.org/openstack-dev/devstack

git clonehttps://github.com/openstack/rally

cd devstack

cp samples/local.conflocal.conf

编辑local.conf文件,在[[local|localrc]]段里面新增如下行:

enable_plugin rally https://github.com/openstack/rally master

之后执行:

./stack.sh

  1. 使用Docker方式安装

docker build -t myrally .

sudo mkdir/var/lib/rally_container

sudo chown 65500 /var/lib/rally_container

docker run -it -v/var/lib/rally_container:/home/rally rallyforge/rally

Rally安装完成后,默认的配置文件路径为 /etc/rally ,修改该路径下的 rally.conf 文件即可,一般修改项为API 接口的超时时间。为了记录一次API性能测试的详细性能耗时分布,需要在配置文件中开启osprofiler,在配置文件中的 [openstack] 配置组中配置 enable_profiler = True ,从而开启API接口的trace调用记录。
在完成Rally的配置调整后,需要初始化Rally的测试环境,即创建deployment与具体的OpenStack环境进行关联。 初始化deployment目前有两种方法,一种是通过环境变量,另一种是通过环境文件方式。在实践过程中,我们采用了环境变量的方式,即环境中的admin-openrc.sh文件,添加:

 export OSPROFILER_HMAC_KEY="charlie"

其中需要说明的一点是环境变量 OSPROFILER_HMAC_KEY ,是为使用osprofiler的功能而设置的,该变量的值需要与 Openstack各服务配置文件中的值相同。编辑好环境变量文件后,需要使环境变量生效:

 source admin-openrc.sh

环境变量生效后,就可以创建deployment了,创建命令如下所示:

 rally deployment create --fromenv --name=openstack

创建完成之后,检查环境是否可用,显示Available表明环境可用:

 rally deployment check

在这里插入图片描述

Tempest配置及测试

通过Rally进行Tempest测试,执行如下命令创建tempest实例,Rally会自动同步tempest代码至本地:

  rally verify create-verifier --type tempest --name mytest

执行如下命令,进行配置:

rally verify configure-verifier

执行rally verify start开始测试所有openstack 接口,可以通过指定–pattern参数,仅对部分服务接口进行测试例如,–pattern set=compute可选的set有full, smoke, compute, identity, image, network, object_storage, orchestration, volume, scenario,当然–pattern参数后面的值也可以是正则表达式,此时测试的接口为某一服务的部分接口,例如:–pattern tempest.api.compute.admin.test_flavors.FlavorsAdminTestJSON

rally verify start --pattern set=compute
rally verify start --pattern set=image
rally verify start --pattern set=identity
rally verify start --pattern set=network
rally verify start --pattern set=volume

测试完毕后即可查看测试结果:

rally verify report --uuid <id> --type html --to name.html

OpenStack服务配置

OSProfiler是一个Python库,基本所有的OpenStack服务都集成了该Python库用以实现对服务的性能分析和优化,每个服务使用该库在代码中需要的地方埋点,在系统的边界点设置一个起始点,在调用返回的地方设置一个结束点,中间的时间间隔即为子系统的性能耗时。OpenStack服务在开启OSProfiler后,会在每次REST API调用过程中生成一条trace记录,用来记录本次REST API调用全链路中,各子系统的性能耗时分布。
为了开启OpenStack各服务的OSProfiler功能,服务配置文件中需添加以下部分:
[profiler]

hmac_keys = swordfish,foxtrot,charlie

trace_sqlalchemy = True

trace_wsgi_transport = True

trace_message_store = True

trace_management_store = True

enabled = True

connection_string = redis://XXXX:XXXX #redis地址

最后一个配置项 connection_string 有多种配置选择,默认如果不配置的话,trace记录是发送到Ceilometer的, 如果测试的OpenStack环境没有部署Ceilometer,可以将数据发送到Redis,Elasticsearch,MongoDB,RMQ等,选择不同的backend,配置会随之发生改变。
开启OSProfiler后,我们可以记录一个REST API调用过程中,服务的HTTP调用耗时,RPC调用耗时,DB API调用耗时,所有服务客户端驱动的调用耗时(如novaclient,neutronclient等),SQL请求耗时等。

Rally性能测试

在测试的过程中,我们使用Rally来发送REST API请求,进行并发的压力测试,在压测的过程中开启了OSProfiler, 以便能够在压测过程中得到接口的性能耗时分布结果。
在测试开始之前,首先需要编写测试需要的yaml文件,这些yaml文件的样例可以在Rally的Git仓库中找到,路径是rally/samples/tasks/scenarios,可以参考这些样例完成yaml文件的编写。执行测试命令为:

rally task start <test path>

当压测结束后,使用以下命令导出测试报告:

rally task report <uuid> --out output.html

可以在测试结果报告的 Scenario Data 部分,找到trace ID,执行以下命令生成每次调用的性能耗时分布报告:

osprofiler trace show --html --out trace.html <trace-id>

参考资料:
http://niusmallnan.com/_build/html/_templates/openstack/osprofiler.html

https://docs.openstack.org/osprofiler/latest/#five-ways-to-add-a-new-trace-point

本文链接http://www.taodudu.cc/news/show-1781927.html