Jump to: navigation, search

Difference between revisions of "Rally/HowTo"

m (Benchmarking: Update the path of the boot-and-delete.json file.)
(Run It!: Rewritten)
Line 1: Line 1:
  
== Run It!  ==
+
== Usage demo ==
  
The easiest way to learn how Rally works is to use already existing OpenStack deployed by DevStack.  
+
'''''Note:''''' Throughout this demo, we assume that you have a configured [[Rally/installation|Rally installation]] and an already existing OpenStack deployment available at ''192.168.1.3''.
So let assume that we have 2 VMs:
 
  
  Vm1 - 192.168.1.2 (with Rally)
 
  Vm2 - 192.168.1.3 (with OpenStack deployed by DevStack)
 
  
=== Preparing ===
+
=== Step 1. Deployment initialization ===
 +
First, you have to provide Rally with an Openstack deployment it is going to benchmark. This is done through deployment configuration files. The actual deployment can be either created by Rally (see ''/doc/samples'' for configuration examples) or, as in our example, an already existing one. The configuration file (let's call it '''dummy_deployment.json''') should contain the deployment strategy (in our case, the deployment will be performed by the so called ''"DummyEngine"'', since the deployment is ready to use) and some specific parameters (for the ''DummyEngine'', an endpoint with administrator permissions):
  
1) Installing Rally  on Vm1
+
<pre>
To install Rally on Vm1 use this [[Rally/installation|instruction]]
+
{
 +
    "name": "DummyEngine",
 +
    "endpoint": {
 +
        "auth_url": "http://192.168.1.3:5000/v2.0/",
 +
        "username": "admin",
 +
        "password": "password",
 +
        "tenant_name": "demo"
 +
    }
 +
}
 +
</pre>
  
2) Installing OpenStack using DevStack on Vm2
+
To register this deployment in Rally, use the '''deployment create''' command:
  
  ssh root@192.168.1.3
+
<pre>
  git clone https://github.com/openstack-dev/devstack.git
+
$ rally deployment create --filename=dummy_deployment.json --name=dummy
  cd devstack && ./stack.sh
+
+--------------------------------------+----------------------------+-------+------------------+
 +
|                uuid                |        created_at        |  name |      status      |
 +
+--------------------------------------+----------------------------+-------+------------------+
 +
| e17557f4-1ba5-402f-80cc-36adc45d3f5e | 2014-02-15 22:00:28.270941 | dummy | deploy->finished |
 +
+--------------------------------------+----------------------------+-------+------------------+
 +
Using deployment : e17557f4-1ba5-402f-80cc-36adc45d3f5e
 +
</pre>
  
=== Action! ===
+
Note the last line in the output. It says that the just created deployment is now used by Rally; that means that all the benchmarking operations from now on are going to be performed on this deployment. In case you want to switch to another deployment, execute the '''use deployment''' command:
  
==== Prepare your config file ====
 
Requires two configuration files to describe a deployment and a benchmarking task. That allows to register an installation and then perform tasks of benchmarking.
 
 
===== Deployment =====
 
In our case we already have got an installation of OpenStack. Follow to sample '''doc/samples/deployments/dummy.json''' and fill all appropriate parameters. The configuration file stored in a separate file '''dummy.json''':
 
 
<pre>
 
<pre>
{
+
$ rally use deployment --deploy_id=''<Deployment UUID>''
  "name": "DummyEngine",
+
Using deployment : ''<Deployment UUID>''
  "endpoint": {
 
    "auth_url": "http://192.168.1.3:5000/v2.0/",
 
    "username": "admin",
 
    "password": "admin",
 
    "tenant_name": "admin"
 
  }
 
}
 
 
</pre>
 
</pre>
  
DevStack deploys all OpenStack component on Vm2.
+
Finally, you can check whether your current deployment is healthy and ready to be benchmarked:
  
'''NOTE''' that endpoints (username, password, tenant_name have to belong to admin)
+
<pre>
 +
$ rally deployment check
 +
+----------+-----------+-----------+
 +
| services |    type  |  status  |
 +
+----------+-----------+-----------+
 +
|  nova  |  compute  | Available |
 +
| cinderv2 |  volumev2 | Available |
 +
|  novav3  | computev3 | Available |
 +
|    s3    |    s3    | Available |
 +
|  glance  |  image  | Available |
 +
|  cinder  |  volume  | Available |
 +
|  ec2    |    ec2    | Available |
 +
| keystone |  identity | Available |
 +
+----------+-----------+-----------+
 +
</pre>
  
===== Benchmarking =====
+
=== Step 2. Benchmarking ===
 
A sample of a task configuration also a good point to start. Take copy of '''doc/samples/tasks/nova/boot-and-delete.json''', specify a proper image_id and store to a separate file '''boot-and-delete.json''':
 
A sample of a task configuration also a good point to start. Take copy of '''doc/samples/tasks/nova/boot-and-delete.json''', specify a proper image_id and store to a separate file '''boot-and-delete.json''':
 
<pre>
 
<pre>
Line 120: Line 135:
 
     | 19.802423954 | 16.9980401595 | 16.3908159733 |  1.0  |
 
     | 19.802423954 | 16.9980401595 | 16.3908159733 |  1.0  |
 
     +--------------+---------------+---------------+-------+
 
     +--------------+---------------+---------------+-------+
 
===== Tips & Tricks =====
 
 
In order to facilitate command line usage, the 'rally use' command is available
 
 
To use a deployment id as default for next commands :
 
 
    $ rally use deployment 7712c8de-1539-4f4e-8a77-0a54c64499e8
 
 
Another way to make a deployment default for next command is to set the 'RALLY_DEPLOYMENT' environment variable
 
 
    $ export RALLY_DEPLOYMENT=7712c8de-1539-4f4e-8a77-0a54c64499e8
 
 
Now, you can just called any command that needs a deploy-id param, without actually adding this param. The default deployment id will be picked
 
 
    $ rally --verbose task start --task boot-and-delete.json
 
  
 
== Available Rally facilities ==
 
== Available Rally facilities ==

Revision as of 22:20, 15 February 2014

Usage demo

Note: Throughout this demo, we assume that you have a configured Rally installation and an already existing OpenStack deployment available at 192.168.1.3.


Step 1. Deployment initialization

First, you have to provide Rally with an Openstack deployment it is going to benchmark. This is done through deployment configuration files. The actual deployment can be either created by Rally (see /doc/samples for configuration examples) or, as in our example, an already existing one. The configuration file (let's call it dummy_deployment.json) should contain the deployment strategy (in our case, the deployment will be performed by the so called "DummyEngine", since the deployment is ready to use) and some specific parameters (for the DummyEngine, an endpoint with administrator permissions):

{
    "name": "DummyEngine",
    "endpoint": {
        "auth_url": "http://192.168.1.3:5000/v2.0/",
        "username": "admin",
        "password": "password",
        "tenant_name": "demo"
    }
}

To register this deployment in Rally, use the deployment create command:

$ rally deployment create --filename=dummy_deployment.json --name=dummy
+--------------------------------------+----------------------------+-------+------------------+
|                 uuid                 |         created_at         |  name |      status      |
+--------------------------------------+----------------------------+-------+------------------+
| e17557f4-1ba5-402f-80cc-36adc45d3f5e | 2014-02-15 22:00:28.270941 | dummy | deploy->finished |
+--------------------------------------+----------------------------+-------+------------------+
Using deployment : e17557f4-1ba5-402f-80cc-36adc45d3f5e

Note the last line in the output. It says that the just created deployment is now used by Rally; that means that all the benchmarking operations from now on are going to be performed on this deployment. In case you want to switch to another deployment, execute the use deployment command:

$ rally use deployment --deploy_id=''<Deployment UUID>''
Using deployment :  ''<Deployment UUID>''

Finally, you can check whether your current deployment is healthy and ready to be benchmarked:

$ rally deployment check
+----------+-----------+-----------+
| services |    type   |   status  |
+----------+-----------+-----------+
|   nova   |  compute  | Available |
| cinderv2 |  volumev2 | Available |
|  novav3  | computev3 | Available |
|    s3    |     s3    | Available |
|  glance  |   image   | Available |
|  cinder  |   volume  | Available |
|   ec2    |    ec2    | Available |
| keystone |  identity | Available |
+----------+-----------+-----------+

Step 2. Benchmarking

A sample of a task configuration also a good point to start. Take copy of doc/samples/tasks/nova/boot-and-delete.json, specify a proper image_id and store to a separate file boot-and-delete.json:

{
  "NovaServers.boot_and_delete_server": [
    {"args": {"flavor_id": 1, "image_id": "0d7cfe07-f684-4afa-813d-ca2611373c59"},
     "config": {"times": 2, "active_users": 1}},
    {"args": {"flavor_id": 1, "image_id": "0d7cfe07-f684-4afa-813d-ca2611373c59"},
     "config": {"times": 4, "active_users": 2}}
  ]
}

Run Rally!

If you didn't create Rally DB you should run this command:

   $ rally-manage db recreate


First, the deployment should be added in Rally:

   $ rally deployment create --name=mydeploy --filename dummy.json

List all deployments to get its UUID:

   $ rally deployment list
   +--------------------------------------+----------------------------+----------+------------------+
   |                 uuid                 |         created_at         |   name   |      status      |
   +--------------------------------------+----------------------------+----------+------------------+
   | 7712c8de-1539-4f4e-8a77-0a54c64499e8 | 2013-11-25 14:58:20.310001 | mydeploy | deploy->finished |
   +--------------------------------------+----------------------------+----------+------------------+

Ok now we should run our rally with benchmark configuration:

   $ rally --verbose task start --deploy-id=7712c8de-1539-4f4e-8a77-0a54c64499e8 --task boot-and-delete.json

Now using another ssh connection to Rally VM. Run this command:

   $ rally task list 
   +--------------------------------------+----------------------------+-------------------------+--------+
   |                 uuid                 |         created_at         |          status         | failed |
   +--------------------------------------+----------------------------+-------------------------+--------+
   | 83d9e08c-4f2b-4c1d-9c83-f36bcc6b5a68 | 2013-09-16 05:28:57.241456 | test_tool->benchmarking | False  |
   +--------------------------------------+----------------------------+-------------------------+--------+

To get detailed results by task with uuid: 83d9e08c-4f2b-4c1d-9c83-f36bcc6b5a68 you should run:

   $ rally task detailed  8532319f-d093-47de-b9f3-2909c03c7e30
   ================================================================================
   Task 83d9e08c-4f2b-4c1d-9c83-f36bcc6b5a68 is finished.
   --------------------------------------------------------------------------------
   test scenario NovaServers.boot_and_delete_server
   args position 0
   args values:
  {u'args': {u'flavor_id': 2,
           u'image_id': u'0d7cfe07-f684-4afa-813d-ca2611373c59'},
   u'concurrent': 1,
   u'times': 2}
   +---------------+---------------+---------------+-------+
   |      max      |      avg      |      min      | ratio |
   +---------------+---------------+---------------+-------+
   | 13.4224121571 | 13.2850991488 | 13.1477861404 |  1.0  |
   +---------------+---------------+---------------+-------+
   --------------------------------------------------------------------------------
   test scenario NovaServers.boot_and_delete_server
   args position 1
   args values:
   {u'args': {u'flavor_id': 2,
            u'image_id': u'0d7cfe07-f684-4afa-813d-ca2611373c59'},
    u'concurrent': 2,
    u'times': 6}
   +--------------+---------------+---------------+-------+
   |     max      |      avg      |      min      | ratio |
   +--------------+---------------+---------------+-------+
   | 19.802423954 | 16.9980401595 | 16.3908159733 |  1.0  |
   +--------------+---------------+---------------+-------+

Available Rally facilities

List of available Deploy engines (including their description and usage examples): Deploy engines

List of available Server providers (including their description and usage examples): Server providers

List of available Benchmark scenarios (including their description and usage examples): Benchmark scenarios