云框架研究:openstack基准测试框架rally

背景:Rally是OpenStack基准测试的一款工具,集成了部署、API测试、压力测试功能,Rally测试OpenStack在并发下API的相应时间和请求成功率,从而测试出OpenStack规模和性能。

1.概览

1.1. 注册Rally部署

$ rally deployment create –fromenv –name=existing
$ rally deployment create –file=existing.json –name=existing
1.2 检查deployment环境
$ rally deployment check
1.3 rally任务模板
{
“args”: { },
“runner”: { },
“context”: { },
“sla”: { }
}
1.4 执行rally任务
$ rally task start rally-jobs/rally.yaml
1.5 生成测试报告
$ rally task report –out=report.html --open
1.6 其他命令
$ rally show images
$ rally show flavors
$ rally deployment list

  1. 安装部署
    1.1 从git库上下载源码
    $ git clone git://git.openstack.org/openstack/rally
    1.2 安装rally依赖包
    $ pip install –r requirements.txt
    1.3 安装rally
    $ ./install_rally.sh –target /home/rally
    1.4 rally配置和初始化数据库
    $ vim /etc/rally/rally.conf
    connection=sqlite:////opt/rally/database/rally.sqlite
    1.5 创建rally数据库
    $ rally-manage db create
    $ rally-manage db recreate
  2. 环境配置
    1.1 公共环境变量
    rally的调用逻辑和OpenStack的组件很相似,都是通过调用keystone提供的endpoint去测试相应的API,来达到针对用户场景做压力测试。因此在测试之前需要配置一些公共的环境变量。在访问keystone认证的时候会用到,最终根据系统配置的变量会在~/.rally/目录下生成一个deployment环境文件,内容如下。
    export OS_AUTH_URL=‘https://identity.az1.dc1.domainname.com/identity/v2.0’
    export OS_USERNAME=‘cloud_admin’
    export OS_PASSWORD=‘FusionSphere123’
    export OS_TENANT_NAME=‘admin’
    export OS_REGION_NAME=‘az1.dc1’
    export OS_ENDPOINT_TYPE=‘adminURL’
    export OS_INTERFACE=‘admin’
    1.2 地址映射配置
    对于FSO版本的OpenStack,同时在/etc/hosts文件配置相应的ip地址映射关系(已验证采用ip地址直接访问失败)
    120.25.1.21 nova-novncproxy.az1.dc1.domainname.com
    120.25.1.21 metering.az1.dc1.domainname.com
    120.25.1.21 image.az1.dc1.domainname.com
    120.25.1.21 volume.az1.dc1.domainname.com
    120.25.1.21 orchestration.az1.dc1.domainname.com
    120.25.1.21 network.az1.dc1.domainname.com
    120.25.1.21 compute.az1.dc1.domainname.com
    120.25.1.21 identity.az1.dc1.domainname.com
    120.25.1.21 object-store.az1.dc1.domainname.com
    120.25.1.21 upgrade.az1.dc1.domainname.com
    120.25.1.21 info-collect.az1.dc1.domainname.com
    120.25.1.21 cps.az1.dc1.domainname.com
    120.25.1.21 backup.az1.dc1.domainname.com
    120.25.1.21 log.az1.dc1.domainname.com
    120.25.1.21 ntp.az1.dc1.domainname.com
  3. 操作使用
    1.1 初始化rally环境
    rally的用例是跑在deployment环境中的,可以通过fromenv或者filename获取创建环境的参数,每个deployment环境的配置根据实际情况设置,通常都不一样。可以通过list命令查看所有deployment初始化出来的环境,同时可以通过check来验证rally访问OpenStack的API是否可用。

从环境变量中初始化

$ rally deployment create –fromenv –name=existing

从json中初始化

$ rally deployment create –filename=existing.json –name=existing

查看rally环境

$ rally deployment list

验证rally创建的环境是否可用

$ rally deployment check
如果check成功,会返回keystone提供的service和status信息。如下所示:
[root@LIN-20161280922 .rally]# rally deployment check
keystone endpoints are valid and following services are available:

services type status
ceilometer metering Available
cinder volume Available
glance image Available
heat orchestration Available
keystone identity Available
neutron network Available
nova compute Available
swift object-store Available

1.2 测试案例
为了说明测试的整个过程,这里创建一个5个并发,100次请求的创建和删除用例场景,测试一下keystone压力。
首先创建任务的json文件create_delete.json如下:
{
“KeystoneBasic.create_delete_user”: [
{
“args”: {
“name_length”: 10
},
“runner”: {
“type”: “constant”,
“times”: 100,
“concurrency”: 5
}
}
]
}

使用rally进行测试:
$ rally task start create_delete.json

测试结果


Task b0657b73-e4f6-47ce-aedf-703d89c4a95c has 0 error(s)

±------------------------------------------------------------------------------------------------------------------------+
| Response Times (sec) |
±---------------------±----------±-------------±-------------±-------------±----------±----------±--------±------+
| Action | Min (sec) | Median (sec) | 90%ile (sec) | 95%ile (sec) | Max (sec) | Avg (sec) | Success | Count |
±---------------------±----------±-------------±-------------±-------------±----------±----------±--------±------+
| keystone.create_user | 0.357 | 0.691 | 4.187 | 21.285 | 36.024 | 3.033 | 100.0% | 100 |
| keystone.delete_user | 0.125 | 0.337 | 2.759 | 3.326 | 35.895 | 1.598 | 100.0% | 100 |
| total | 0.517 | 1.477 | 16.213 | 21.512 | 36.327 | 4.632 | 100.0% | 100 |
±---------------------±----------±-------------±-------------±-------------±----------±----------±--------±------+
查看任务详情,rally跑成功之后,会生成一个task的UUID,可以通过这个task查看任务的具体信息,主要分两部分,一部分是任务相关信息,另外则是任务的执行结果,如下:
[root@LIN-20161280922 xiaxb]# rally task detailed b0657b73-e4f6-47ce-aedf-703d89c4a95c


Task b0657b73-e4f6-47ce-aedf-703d89c4a95c: finished

test scenario KeystoneBasic.create_delete_user
args position 0
args values:
{
“runner”: {
“type”: “constant”,
“concurrency”: 5,
“times”: 100
},
“args”: {
“name_length”: 10
}
}


Task b0657b73-e4f6-47ce-aedf-703d89c4a95c has 0 error(s)

±------------------------------------------------------------------------------------------------------------------------+
| Response Times (sec) |
±---------------------±----------±-------------±-------------±-------------±----------±----------±--------±------+
| Action | Min (sec) | Median (sec) | 90%ile (sec) | 95%ile (sec) | Max (sec) | Avg (sec) | Success | Count |
±---------------------±----------±-------------±-------------±-------------±----------±----------±--------±------+
| keystone.create_user | 0.357 | 0.691 | 4.187 | 21.285 | 36.024 | 3.033 | 100.0% | 100 |
| keystone.delete_user | 0.125 | 0.337 | 2.759 | 3.326 | 35.895 | 1.598 | 100.0% | 100 |
| total | 0.517 | 1.477 | 16.213 | 21.512 | 36.327 | 4.632 | 100.0% | 100 |
±---------------------±----------±-------------±-------------±-------------±----------±----------±--------±------+

Load duration: 93.172319
Full duration: 183.385978

生成可视化的结果报告,当需要把执行结果可视化展示出来的时候,可以根据上一步生成的task的UUID号用task report命令生成可视化结果,调用命令后会在当前目录生成一个html的报告文件,用浏览器打开,就可以查看到测试结果。
[root@LIN-20161280922 xiaxb]# rally task report b0657b73-e4f6-47ce-aedf-703d89c4a95c --out create_delete.html

你可能感兴趣的:(大数据)