Openstack配置手册-Rally配置

snow chuai汇总、整理、撰写---2020/2/7


1. 拓扑
     ------------+---------------------------+---------------------------+------------
                 |                           |                           |
             eth0|192.168.10.11          eth0|192.168.10.12          eth0|192.168.10.13
     +-----------+-----------+   +-----------+-----------+   +-----------+-----------+
     |    [ Control Node ]   |   |    [ Compute Node ]   |   |   [ Network Node ]    |
     |   [node1.1000cc.net]  |   |   [node2.1000cc.net]  |   |  [node3.1000cc.net]   |
     |  MariaDB    RabbitMQ  |   |         ibvirt        |   |      Open-vSwitch     |
     |  Memcached  httpd     |   |       Nova_Compute    |   |        L2_Agent       |
     |  Keystone   Glance    |   |       Open-vSwitch    |   |        L3_Agent       |
     |  Nova_API  Cinder_API |   |        L2_Agent       |   |      Metadata_Agent   |
     |  Neutron_Server       |   |                       |   |      Cinder-Volume    |
     |  Metadata_Agent       |   |                       |   |        Heat_API       |
     |       Gnocchi         |   |                       |   |       Heat_Engine     |
     |  Ceilometer_Central   |   |                       |   |   Designate_Services  |
     |    Aodh_Evaluator     |   |                       |   |           named       |
     |         Rally         |   |                       |   |                       |
     +-----------------------+   +-----------------------+   +-----------------------+
2. 安装与配置Rally
2.1 创建Rally数据库
[root@node1 ~(keystone)]# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 69683
Server version: 10.1.20-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> create database rally; Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> grant all privileges on rally.* to rally@'localhost' identified by 'password'; Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on rally.* to rally@'%' identified by 'password'; Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit Bye
2.2 安装Rally
[root@node1 ~(keystone)]# yum --enablerepo=centos-openstack-queens,epel install openstack-rally -y
2.3 配置Rally
[root@node1 ~(keystone)]# vim /etc/rally/rally.conf
# 取消32行注释,并改为如下内容
log_file = rally.log
# 取消37行注释,并改为如下内容 log_dir = /var/log/rally
# 156行,添加设定数据库连接信息 connection = mysql+pymysql://rally:password@192.168.10.11/rally
[root@node1 ~(keystone)]# mkdir /var/log/rally [root@node1 ~(keystone)]# rally db create Creating database: mysql+pymysql://rally:password@192.168.10.11/rally Database created successfully
2.4 添加用户信息以运行Rally BenchiMarking任务
[root@node1 ~(keystone)]# vim snowenv.json
{
    "openstack": {
        "auth_url": "http://192.168.10.11:5000/v3",
        "region_name": "RegionOne",
        "endpoint_type": "public",
        "admin": {
            "username": "admin",
            "password": "adminpassword",
            "tenant_name": "admin"
        },
         "users": [
             {
                 "username": "snow",
                 "password": "userpassword",
                 "tenant_name": "1000cc"
             },
         ]
    }
}
[root@node1 ~(keystone)]# rally deployment create --file snowenv.json --name snow_cloud +-----------------+---------------------+------------+------------------+--------+ | uuid | created_at | name | status | active | +-----------------+---------------------+------------+------------------+--------+ | 40f51c02-...... | 2020-02-07T15:51:05 | snow_cloud | deploy->finished | | +-----------------+---------------------+------------+------------------+--------+ Using deployment: 40f51c02-2e32-4770-a7bf-83ff0cf48b60 ~/.rally/openrc was updated
HINTS:
* To use standard OpenStack clients, set up your env by running: source ~/.rally/openrc OpenStack clients are now configured, e.g run: openstack image list
[root@node1 ~(keystone)]# source ~/.rally/openrc [root@node1 ~(keystone)]# rally deployment show snow_cloud +------------------------------+----------+----------+-------------+-------------+---------------+ | auth_url | username | password | tenant_name | region_name | endpoint_type | +------------------------------+----------+----------+-------------+-------------+---------------+ | http://192.168.10.11:5000/v3 | admin | *** | admin | RegionOne | public | | http://192.168.10.11:5000/v3 | snow | *** | 1000cc | RegionOne | public | +------------------------------+----------+----------+-------------+-------------+---------------+
[root@node1 ~(keystone)]# rally deployment check ‌-------------------------------------------------------------------------------- Platform openstack: ‌-------------------------------------------------------------------------------- Available services: +-------------+----------------+-----------+ | Service | Service Type | Status | +-------------+----------------+-----------+ | __unknown__ | alarming | Available | | __unknown__ | key-manager | Available | | __unknown__ | placement | Available | | __unknown__ | volumev2 | Available | | __unknown__ | volumev3 | Available | | ceilometer | metering | Available | | cloud | cloudformation | Available | | ...... | ...... | Available | | ...... | ...... | Available | | designate | dns | Available | | glance | image | Available | | gnocchi | metric | Available | | heat | orchestration | Available | | keystone | identity | Available | | neutron | network | Available | | nova | compute | Available | +-------------+----------------+-----------+
3. 使用Rally
3.1 定义测试方案
1) 定测试义方案
# 本测试,仅定义一个简单的场景来创建和删除计算实例
[root@node1 ~(keystone)]# vim boot-and-delete.json
{
    "NovaServers.boot_and_delete_server": [
        {
            "args": {
                "flavor": {
                    "name": "m1.small"
                },
                "image": {
                    "name": "c77"
                },
                "force_delete": false
            },
            "runner": {
                "type": "constant",
                "times": 10,
                "concurrency": 2
            },
            "context": {}
        }
    ]
    }
2) 测试 [root@node1 ~(keystone)]# rally task start boot-and-delete.json ‌------------------------------------------------------------------------------- Preparing input task ‌-------------------------------------------------------------------------------
Task is: { "NovaServers.boot_and_delete_server": [ { "args": { "flavor": { "name": "m1.small" }, "image": { "name": "c77" }, "force_delete": false }, "runner": { "type": "constant", "times": 10, "concurrency": 2 }, "context": {} } ] }
Task syntax is correct :) Running Rally version 0.11.0 ‌------------------------------------------------------------------------------- Task cf5d9f09-4345-4518-8f02-7cd2e1903303: started ‌-------------------------------------------------------------------------------
Running Task... This can take a while...
To track task status use:
rally task status or rally task detailed
Using task: cf5d9f09-4345-4518-8f02-7cd2e1903303 2020-02-07 23:59:23.075 8765 INFO rally.task.engine [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | Starting: Task validation. 2020-02-07 23:59:23.156 8765 INFO rally.task.engine [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | Starting: Task validation of syntax. 2020-02-07 23:59:23.196 8765 INFO rally.task.engine [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | Completed: Task validation of syntax. 2020-02-07 23:59:23.196 8765 INFO rally.task.engine [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | Starting: Task validation of required platfor ms. 2020-02-07 23:59:23.229 8765 INFO rally.task.engine [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | Completed: Task validation of required platfor ms. 2020-02-07 23:59:23.230 8765 INFO rally.task.engine [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | Starting: Task validation of semantic. 2020-02-07 23:59:23.230 8765 INFO rally.task.engine [-] Check health of the environment '40f51c02-2e32-4770-a7bf-83ff0cf48b60'. 2020-02-07 23:59:25.686 8765 INFO rally.task.engine [-] Platform existing@openstack (available: True): OK! 2020-02-07 23:59:26.691 8765 INFO rally.task.context [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | Context users@openstack setup() finished in 0.98 sec 2020-02-07 23:59:32.531 8765 INFO rally.task.context [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | Context users@openstack cleanup() started 2020-02-07 23:59:32.531 8765 INFO rally.task.context [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | Context users@openstack cleanup() finished in 0.73 msec 2020-02-07 23:59:32.532 8765 INFO rally.task.engine [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | Completed: Task validation of semantic. 2020-02-07 23:59:32.533 8765 INFO rally.task.engine [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | Completed: Task validation. 2020-02-07 23:59:32.533 8765 INFO rally.api [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 input file is valid. 2020-02-07 23:59:32.534 8765 INFO rally.api [-] Run Task cf5d9f09-4345-4518-8f02-7cd2e1903303 against Deployment 40f51c02-2e32-4770-a7bf-83ff0cf48 b60 2020-02-07 23:59:32.534 8765 INFO rally.task.engine [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | Starting: Running task. 2020-02-07 23:59:32.683 8765 INFO rally.task.engine [-] Running workload: position = 0 config = { "version": 2, "title": "A cropped version of a bigger task.", "description": "Auto-generated task from a single workload (uuid=56376f9e-4799-4770-ab6a-41f1fb8205ee)", "subtasks": [ { "title": "NovaServers.boot_and_delete_server", "description": "Boot and delete a server.", "scenario": { "NovaServers.boot_and_delete_server": { "flavor": { "name": "m1.small" }, "image": { "name": "c77" }, "force_delete": false } }, "contexts": {}, "runner": { "constant": { "times": 10, "concurrency": 2 "concurrency": 2 [203/1805] } }, "hooks": [], "sla": { "failure_rate": { "max": 0 } } } ] } 2020-02-07 23:59:33.707 8765 INFO rally.task.context [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | Context users@openstack setup() finished in 0.99 sec 2020-02-07 23:59:33.708 8765 INFO rally.task.context [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | Context cleanup@openstack setup() finished i n 0.00 msec 2020-02-07 23:59:36.367 8807 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 1 START 2020-02-07 23:59:36.369 8808 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 2 START 2020-02-08 00:00:35.335 8807 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 1 END: Error GetResourceErrorStatus: Res ource <Server: s_rally_56376f9e_gOBBgQNG> has ERROR status. Fault: {u'message': u'Exceeded maximum number of retries. Exhausted all hosts available for retrying build failures for instance 20125c00-0a6c-42 d8-87b5-65ac4eccbc8e.', u'code': 500, u'created': u'2020-02-07T16:00:30Z'} 2020-02-08 00:00:35.342 8807 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 3 START 2020-02-08 00:00:39.982 8808 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 2 END: OK 2020-02-08 00:00:40.028 8808 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 4 START 2020-02-08 00:01:22.134 8808 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 4 END: Error GetResourceErrorStatus: Res ource <Server: s_rally_56376f9e_tXyRUXeZ> has ERROR status. Fault: {u'message': u'Exceeded maximum number of retries. Exhausted all hosts available for retrying build failures for instance 515c3457-6a9b-44 69-889b-6b5e625c701e.', u'code': 500, u'created': u'2020-02-07T16:01:18Z'} 2020-02-08 00:01:22.159 8808 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 5 START 2020-02-08 00:01:24.890 8807 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 3 END: OK 2020-02-08 00:01:24.905 8807 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 6 START 2020-02-08 00:02:06.807 8807 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 6 END: Error GetResourceErrorStatus: Res urce <Server: s_rally_56376f9e_54wjuIFm> has ERROR status. Fault: {u'message': u'Exceeded maximum number of retries. Exhausted all hosts available for retrying build failures for instance bee53a0b-c017-4a df-afe1-879296c47800.', u'code': 500, u'created': u'2020-02-07T16:02:00Z'} 2020-02-08 00:02:06.835 8807 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 7 START 2020-02-08 00:02:10.624 8808 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 5 END: OK 2020-02-08 00:02:10.690 8808 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 8 START 2020-02-08 00:02:49.679 8808 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 8 END: Error GetResourceErrorStatus: Res ource <Server: s_rally_56376f9e_7o9FyqLA> has ERROR status. Fault: {u'message': u'Exceeded maximum number of retries. Exhausted all hosts available for retrying build failures for instance 9afd1129-39c0-4f 6d-80d1-41ec4572526f.', u'code': 500, u'created': u'2020-02-07T16:02:44Z'} 2020-02-08 00:02:49.755 8808 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 9 START 2020-02-08 00:02:56.161 8807 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 7 END: OK 2020-02-08 00:02:56.170 8807 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 10 START 2020-02-08 00:03:32.791 8807 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 10 END: Error GetResourceErrorStatus: Re source <Server: s_rally_56376f9e_AeANfG41> has ERROR status. Fault: {u'message': u'Exceeded maximum number of retries. Exhausted all hosts available for retrying build failures for instance 20509ed3-9eeb-48 ed-bee1-7b77efefc008.', u'code': 500, u'created': u'2020-02-07T16:03:28Z'} 2020-02-08 00:03:36.136 8808 INFO rally.task.runner [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | ITER: 9 END: OK 2020-02-08 00:03:36.161 8765 INFO rally.task.context [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | Context cleanup@openstack cleanup() started 2020-02-08 00:04:01.334 8765 INFO rally.task.context [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | Context cleanup@openstack cleanup() finished in 25.17 sec 2020-02-08 00:04:01.335 8765 INFO rally.task.context [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | Context users@openstack cleanup() started 2020-02-08 00:04:01.336 8765 INFO rally.task.context [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | Context users@openstack cleanup() finished in 0.65 msec 2020-02-08 00:04:01.630 8765 INFO rally.task.engine [-] Load duration is: 238.765382 2020-02-08 00:04:01.631 8765 INFO rally.task.engine [-] Full runner duration is: 239.81765 2020-02-08 00:04:01.632 8765 INFO rally.task.engine [-] Full duration is: 268.625978 2020-02-08 00:04:01.938 8765 INFO rally.task.engine [-] Task cf5d9f09-4345-4518-8f02-7cd2e1903303 | Completed: Running task.
‌-------------------------------------------------------------------------------- Task cf5d9f09-4345-4518-8f02-7cd2e1903303: finished ‌--------------------------------------------------------------------------------
test scenario NovaServers.boot_and_delete_server args position 0 args values: { "runner": { "times": 10, "concurrency": 2 }, "contexts": {}, "args": { "flavor": { "name": "m1.small" }, "image": { "name": "c77" }, "force_delete": false }, "sla": { "failure_rate": { "max": 0 } }, "hooks": [] }
...... .......
+------------------------------------------------------------------------------------------- | Response Times (sec) +--------------------+-----------+--------------+--------------+--------------+-----------+- | Action | Min (sec) | Median (sec) | 90%ile (sec) | 95%ile (sec) | Max (sec) +--------------------+-----------+--------------+--------------+--------------+-----------+- | nova.boot_server | 36.619 | 39.066 | 53.828 | 56.395 | 58.962 | | nova.delete_server | 8.169 | 10.352 | 11.26 | 11.441 | 11.623 | | total | 36.619 | 47.422 | 59.427 | 61.519 | 63.61 | | -> duration | 35.619 | 46.422 | 58.427 | 60.519 | 62.61 | | -> idle_duration | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | +--------------------+-----------+--------------+--------------+--------------+-----------+-- ----------------------------+ | ----------+---------+-------+ | Avg(sec) | Success | Count | -----------+---------+-------+ 42.572 | 50.0% | 10 | 10.036 | 100.0% | 5 | 47.59 | 50.0% | 10 | 46.59 | 50.0% | 10 | 1.0 | 50.0% | 10 | -----------+---------+-------+
Load duration: 238.765 Full duration: 268.626
HINTS: * To plot HTML graphics with this data, run: rally task report cf5d9f09-4345-4518-8f02-7cd2e1903303 --out output.html
* To generate a JUnit report, run: rally task export cf5d9f09-4345-4518-8f02-7cd2e1903303 --type junit --to output.xml
* To get raw JSON output of task results, run: rally task report cf5d9f09-4345-4518-8f02-7cd2e1903303 --json --out output.json
At least one workload did not pass SLA criteria.
3.2 生成报表
1) 根据测试结果的提示,可以生成hml/xml/json格式的文件
(1) 修改report.html文件
# 原生态的Rally报告模板angular js框架是从Google下载的,需要翻墙才能看到测试报告,可以使用如下方法修改,替换为可以访问的bootcss静态库的libs网址
[root@node1 task(keystone)]# cd /usr/lib/python2.7/site-packages/rally/ui/templates/task
[root@node1 task(keystone)]# vim report.html
# 注释掉18-21行信息
<!--  <ink 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> -->
# 于22-26行增加如下信息 22行: <link rel="stylesheet"href="http://cdn.bootcss.com/nvd3/1.1.15-beta/nv.d3.css">
23行: <script type="text/javascript"src="http://cdn.bootcss.com/angular.js/1.3.3/angular.min.js"></script>
24行: <script type="text/javascript"src="http://cdn.bootcss.com/d3/3.4.13/d3.min.js"></script>
25行: <script type="text/javascript"src="http://cdn.bootcss.com/nvd3/1.1.15-beta/nv.d3.min.js"></script>

(2) 生成report文件 [root@node1 ~(keystone)]# rally task report cf5d9f09-4345-4518-8f02-7cd2e1903303 --out output.html 2020-02-08 00:35:38.213 21216 INFO rally.api [-] Building 'html' report for the following task(s): 'cf5d9f09-4345-4518-8f02-7cd2e1903303'. 2020-02-08 00:35:38.285 21216 INFO rally.api [-] The report has been successfully built.
[root@node1 ~(keystone)]# ll output.html -rw-r--r-- 1 root root 59202 Feb 8 00:35 output.html
(2) 打开查看

 

如对您有帮助,请随缘打个赏。^-^

gold