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> | ||
− | + | 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 | + | 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 | ||
<pre><nowiki> | <pre><nowiki> | ||
Line 83: | Line 82: | ||
− | ---- | + | 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