Rally简介
Rally是OpenStack社区推出开源测试工具,可用于对OpenStack各个组件进行性能测试。
通过使用Rally组件,用户可完成OpenStack云计算平台的安装部署、功能验证、大规模负载测试(性能测试)、输出测试报告等一系列动作。
Rally安装
在icos环境中,直接在globals.yml中开启rally。
enable_rally: "yes"
然后tag安装部署即可。
如果是性能测试设计主机关闭等操作,建议rally安装在一台非测试节点的机器。
安装完优化一下参数,rally配置文件位置:/etc/rally/rally.conf
默认注释所有选项,测试中遇到如下问题:
- 获取实例状态超时
- 连接超时
做如下设置,避免超时影响测试结果,时间设置1800s:
[DEFAULT] openstack_client_http_timeout = 1800.0 [benchmark] cinder_volume_create_timeout = 1800.0 cinder_volume_delete_timeout = 1800.0 nova_server_boot_timeout = 1800.0 nova_server_boot_timeout = 1800.0
rally使用
创建Deployment
对于已经安装部署了OpenStack系统,有两种方式创建deployment
1) 使用环境变量创建
(rally)[root@node135 ~]# more openrc export OS_TENANT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=xxxx export OS_AUTH_URL=http://100.2.28.139:35357 #生效一下 source openrc #创建 rally deployment create --fromenv --name=existing
2) 使用json文件创建
rally deployment create--file=existing.json --name=existing
existing文件模板默认位置/rally-openstack/samples/deployments
existing.json文件内容如下:
{ "type":"ExistingCloud", "auth_url": "http://10.25.*.*:35357/v3", "region_name":"RegionOne", "endpoint_type":"public", "admin": { "username":"admin", "password": "****", "tenant_name": "admin" }, "users": [ { "username": "nsp_test_1", "password":"password", "tenant_name":"nsp_tenant_1" }, { "username":"nsp_test_2", "password":"password2", "tenant_name":"nsp_tenant_2" } ] }
查看所有的deployment列表
rally deployment list
查看已经创建的deployment详情
rally deployment show existing
检查deployment
rally deployment check
检查创建的deployment各项服务是否正常,以下是执行结果
如果中途退出了环境,需要再次定义环境变量
rally deployment use existing
执行Task
Task是Rally执行的一个测试单元,执行Task时需要指定入口文件,可以是json文件或者yaml文件
如下是执行形式:
rally task start /rally-openstack/samples/tasks/scenarios/nova/boot_ljy.yaml
常用的场景
默认场景模板位置 /rally-openstack/samples/tasks/scenarios
创建与删除虚拟机
boot-and-delete.yaml {% set flavor_name = flavor_name or "m1.tiny" %} #资源规格 --- NovaServers.boot_and_delete_server: - args: flavor: name: "{{flavor_name}}" image: name: "TestVM" #镜像名称 force_delete: false runner: type: "constant" times: 10 #测试次数 concurrency: 2 #并发数 context: users: tenants: 3 users_per_tenant: 2 sla: failure_rate: max: 0 - args: flavor: name: "{{flavor_name}}" image: name: "TestVM" auto_assign_nic: true runner: type: "constant" times: 10 concurrency: 2 context: users: tenants: 3 users_per_tenant: 2 network: start_cidr: "192.168.190.0/24" networks_per_tenant: 2 sla: failure_rate: max: 0
创建云盘
(rally)[root@control01 ljy]# more create-volume.yaml --- CinderVolumes.create_volume: - args: size: 1 runner: type: "constant" times: 3 concurrency: 2 context: users: tenants: 2 users_per_tenant: 2 sla: failure_rate: max: 0 - args: size: min: 1 max: 5 runner: type: "constant" times: 3 concurrency: 2 context: users: tenants: 2 users_per_tenant: 2 sla: failure_rate: max: 0
创建与删除网络
(rally)[root@control01 ljy]# more create-and-delete-networks.yaml --- NeutronNetworks.create_and_delete_networks: - args: network_create_args: {} runner: type: "constant" times: 10 concurrency: 1 context: users: tenants: 3 users_per_tenant: 3 quotas: neutron: network: -1 sla: failure_rate: max: 0
查看Task
可使用rally task list,来列出已经执行的task
生成Web测试报告
使用rally task report [task_id] --out=[outfile.html]可以生成web格式的测试报告
可能此时的html文件打开会有报错,原因是report.html文件中使用了一些css、js库,而这些库放在了google网站上,因此才会出现这么奇怪的现象。
需要将report.html里面如下四行中的libs网址:
<link rel="stylesheet"href="https://cdnjs.cloudflare.com/ajax/libs/nvd3/1.1.15-beta/nv.d3.min.css"> <script type="text/javascript"src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.3/angular.min.js"></script> <script type="text/javascript"src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.13/d3.min.js"></script> <script type="text/javascript"src="https://cdnjs.cloudflare.com/ajax/libs/nvd3/1.1.15-beta/nv.d3.min.js"></script>
替换为可以访问的bootcss静态库的libs网址,如下:
<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>
之后就可以打开了。或者直接将report.html模板文件的对应行修改掉,这样生成的报告web页面都会自动替换。
模板文件位置:/usr/lib/python2.7/site-packages/rally/ui/templates/task/report.html
上面的命令执行成功,可以看到生成的Html文件,在浏览器中可查看Html文件。展示效果如下: