Jump to: navigation, search

Difference between revisions of "NeutronDevstack"

Line 19: Line 19:
 
== Quantum V2 API ==
 
== Quantum V2 API ==
  
If you are interested in running quantum using the V2 api apply the following patch to your devstack repo: https://review.openstack.org/#/c/9161
+
If you are interested in running quantum using the V2 api apply the following patch to your devstack repo: https://review.openstack.org/#/c/9161 .
Then set NOVA_USE_QUANTUM_API=v2 in your localrc.  
+
Then, set NOVA_USE_QUANTUM_API=v2 in your localrc.  
  
 
Next, your'll need the following patch: https://review.openstack.org/#/c/9160/ in order to acquire the openvswitch v2 changes.  
 
Next, your'll need the following patch: https://review.openstack.org/#/c/9160/ in order to acquire the openvswitch v2 changes.  
Line 33: Line 33:
 
</nowiki></pre>
 
</nowiki></pre>
  
Then run the following in order to determine the tenant-id
+
Run the following in order to determine the tenant-id:
  
 
<pre><nowiki>
 
<pre><nowiki>
Line 48: Line 48:
  
  
Using the id for the demo user we create a network
+
Using the id for the demo user create a network:
  
 
<pre><nowiki>
 
<pre><nowiki>
Line 65: Line 65:
 
</nowiki></pre>
 
</nowiki></pre>
  
 
+
Now associate a subnet with this network:
Now we associate a subnet with this network:
 
  
 
<pre><nowiki>
 
<pre><nowiki>
Line 83: Line 82:
  
  
---- /!\ '''End of edit conflict''' ----
+
Now lets boot a VM using this network:
 +
 
 +
<pre><nowiki>
 +
$ nova boot --image $IMG_ID --flavor 1 --nic net-id=335b9d39-f803-4e38-9236-cc7fd047baab test1
 +
+------------------------+--------------------------------------+
 +
| Property              | Value                                |
 +
+------------------------+--------------------------------------+
 +
| OS-DCF:diskConfig      | MANUAL                              |
 +
| OS-EXT-STS:power_state | 0                                    |
 +
| OS-EXT-STS:task_state  | scheduling                          |
 +
| OS-EXT-STS:vm_state    | building                            |
 +
| accessIPv4            |                                      |
 +
| accessIPv6            |                                      |
 +
| adminPass              | 4X6a5z55WFxT                        |
 +
| config_drive          |                                      |
 +
| created                | 2012-06-30T02:25:12Z                |
 +
| flavor                | m1.tiny                              |
 +
| hostId                |                                      |
 +
| id                    | 7ee202a1-f6e6-4e68-b6c3-dc7489ddb433 |
 +
| image                  | cirros-0.3.0-x86_64-uec              |
 +
| key_name              |                                      |
 +
| metadata              | {}                                  |
 +
| name                  | test1                                |
 +
| progress              | 0                                    |
 +
| status                | BUILD                                |
 +
| tenant_id              | 9b234056142543949c95601d7bb77b9b    |
 +
| updated                | 2012-06-30T02:25:12Z                |
 +
| user_id                | 0c23bf7f644a404896d1387e2bb97540    |
 +
+------------------------+--------------------------------------+
 +
 
 +
 
 +
$ nova list
 +
+--------------------------------------+-------+--------+----------------+
 +
| ID                                  | Name  | Status | Networks      |
 +
+--------------------------------------+-------+--------+----------------+
 +
| 7ee202a1-f6e6-4e68-b6c3-dc7489ddb433 | test1 | ACTIVE | mynet=10.2.2.2 |
 +
+--------------------------------------+-------+--------+----------------+
 +
</nowiki></pre>
 +
 
 +
 
 
== Multi-Node Setup ==
 
== Multi-Node Setup ==
  

Revision as of 02:26, 30 June 2012

Basic Setup

In order to use Quantum with devstack (http://devstack.org) you'll need to add "quantum" and "q-svc" to ENABLED_SERVICES in your localrc. See this page for more details on localrc settings: http://devstack.org/stack.sh.html.

If you want to enable the openvswitch plugin, you'll have to set Q_PLUGIN to "openvswitch" and also add "q-agt" to ENABLED_SERVICES in order to start the openvswitch quantum agent (also in your localrc).

For example:

ENABLED_SERVICES="g-api,g-reg,key,n-api,n-cpu,n-net,n-sch,n-vnc,horizon,mysql,rabbit,openstackx,q-svc,quantum,q-agt"
Q_PLUGIN=openvswitch
LIBVIRT_FIREWALL_DRIVER=nova.virt.firewall.NoopFirewallDriver


Then run stack.sh as normal.

Quantum V2 API

If you are interested in running quantum using the V2 api apply the following patch to your devstack repo: https://review.openstack.org/#/c/9161 . Then, set NOVA_USE_QUANTUM_API=v2 in your localrc.

Next, your'll need the following patch: https://review.openstack.org/#/c/9160/ in order to acquire the openvswitch v2 changes.

Then run stack.sh as normal.

At this point lets create a network using Quantumv2:

export SERVICE_ENDPOINT=http://localhost:35357/v2.0
export SERVICE_TOKEN=tokentoken

Run the following in order to determine the tenant-id:

$ keystone tenant-list
+----------------------------------+--------------------+---------+
|                id                |        name        | enabled |
+----------------------------------+--------------------+---------+
| 0331b94a864a46f9b5ce7e188c115c29 | invisible_to_admin |   True  |
| 118c80482f8e4bbc83661399e93ab020 |      service       |   True  |
| 7c46d68545ca49e4b52e5bc0be9e2a2a |       admin        |   True  |
| 9b234056142543949c95601d7bb77b9b |        demo        |   True  |
+----------------------------------+--------------------+---------+


Using the id for the demo user create a network:

$quantumv2 --os-token ADMIN --os-url http://localhost:9696/ create_net --tenant-id 9b234056142543949c95601d7bb77b9b mynet
Created a new network:
+----------------+--------------------------------------+
| Field          | Value                                |
+----------------+--------------------------------------+
| admin_state_up | True                                 |
| id             | 335b9d39-f803-4e38-9236-cc7fd047baab |
| name           | mynet                                |
| status         | ACTIVE                               |
| subnets        |                                      |
| tenant_id      | 9b234056142543949c95601d7bb77b9b     |
+----------------+--------------------------------------+

Now associate a subnet with this network:

$quantumv2 --os-token ADMIN --os-url http://localhost:9696/ create_subnet --tenant-id 9b234056142543949c95601d7bb77b9b --ip-version 4 --gateway 10.2.2.1  335b9d39-f803-4e38-9236-cc7fd047baab 10.2.2.0/24
Created a new subnet:
+------------+--------------------------------------+
| Field      | Value                                |
+------------+--------------------------------------+
| cidr       | 10.2.2.0/24                          |
| gateway_ip | 10.2.2.1                             |
| id         | badb639d-8191-47d2-a6fa-6bc81beae97f |
| ip_version | 4                                    |
| network_id | 335b9d39-f803-4e38-9236-cc7fd047baab |
+------------+--------------------------------------+


Now lets boot a VM using this network:

$ nova boot --image $IMG_ID --flavor 1 --nic net-id=335b9d39-f803-4e38-9236-cc7fd047baab test1
+------------------------+--------------------------------------+
| Property               | Value                                |
+------------------------+--------------------------------------+
| OS-DCF:diskConfig      | MANUAL                               |
| OS-EXT-STS:power_state | 0                                    |
| OS-EXT-STS:task_state  | scheduling                           |
| OS-EXT-STS:vm_state    | building                             |
| accessIPv4             |                                      |
| accessIPv6             |                                      |
| adminPass              | 4X6a5z55WFxT                         |
| config_drive           |                                      |
| created                | 2012-06-30T02:25:12Z                 |
| flavor                 | m1.tiny                              |
| hostId                 |                                      |
| id                     | 7ee202a1-f6e6-4e68-b6c3-dc7489ddb433 |
| image                  | cirros-0.3.0-x86_64-uec              |
| key_name               |                                      |
| metadata               | {}                                   |
| name                   | test1                                |
| progress               | 0                                    |
| status                 | BUILD                                |
| tenant_id              | 9b234056142543949c95601d7bb77b9b     |
| updated                | 2012-06-30T02:25:12Z                 |
| user_id                | 0c23bf7f644a404896d1387e2bb97540     |
+------------------------+--------------------------------------+


$ nova list
+--------------------------------------+-------+--------+----------------+
| ID                                   | Name  | Status | Networks       |
+--------------------------------------+-------+--------+----------------+
| 7ee202a1-f6e6-4e68-b6c3-dc7489ddb433 | test1 | ACTIVE | mynet=10.2.2.2 |
+--------------------------------------+-------+--------+----------------+


Multi-Node Setup

A more interesting setup involves running multiple compute nodes, with Quantum networks connecting VMs on different compute nodes. This is now possible with the latest (5/26/12) version of devstack.

You should run at least one "controller node", which should have a stackrc that includes at least:


ENABLED_SERVICES="g-api,g-reg,key,n-api,n-cpu,n-net,n-sch,n-vnc,horizon,mysql,rabbit,openstackx,q-svc,quantum,q-agt"
Q_PLUGIN=openvswitch


You likely want to change your localrc to run a scheduler that will balance VMs across hosts:


SCHEDULER=nova.scheduler.simple.SimpleScheduler


You can then run many compute nodes, each of which should have a stackrc which includes:


ENABLED_SERVICES="quantum,q-agt,n-cpu,g-api,rabbit"
Q_PLUGIN=openvswitch


Each compute node also needs to have a modified localrc to point to the "controller" for services that are only run once per deployment:


SERVICE_HOST=[IP of controller node]
MYSQL_HOST=$SERVICE_HOST
RABBIT_HOST=$SERVICE_HOST


Note: the need to include 'g-api' and 'rabbit' here seems to be a bug. Without it, nova-compute dies because it can't import the glance.common library. This process does not actually need to be running on this host, we just need a way to make sure the glance.common library is installed. If 'rabbit' is not specified, nova-compute also will try to connect to rabbit on localhost, not the "controller host". See the following link for info on both issues: https://answers.launchpad.net/devstack/+question/197749

Running with Melange

To enable melange in devstack add "melange" and "m-svc" to the ENABLED_SERVICES (melange requires quantum to be enabled as well).

For example:

ENABLED_SERVICES=g-api,g-reg,key,n-api,n-cpu,n-net,n-sch,n-novnc,n-xvnc,n-cauth,horizon,mysql,rabbit,openstackx,q-svc,q-agt,m-svc,quantum,melange