[Install] Document Nova cells and placement API

With the Ocata release, Nova requires a basic cell_v2
setup and the Placement API service.

Change-Id: I3ad1a53ea072f79cbc356248b0b800ddaabd5038
Closes-Bug: #1663485
Closes-Bug: #1669163
This commit is contained in:
Brian Moss 2017-02-21 16:05:31 +10:00
parent ae04134649
commit d6a9c10445
5 changed files with 287 additions and 35 deletions

View File

@ -44,6 +44,10 @@ OpenStack Compute consists of the following areas and their components:
from the queue and performs a series of system commands such as from the queue and performs a series of system commands such as
launching a KVM instance and updating its state in the database. launching a KVM instance and updating its state in the database.
``nova-placement-api`` service
Tracks the inventory and usage of each provider. For details, see
`Placement API <https://docs.openstack.org/developer/nova/placement.html>`__.
``nova-scheduler`` service ``nova-scheduler`` service
Takes a virtual machine instance request from the queue and Takes a virtual machine instance request from the queue and
determines on which compute server host it runs. determines on which compute server host it runs.

View File

@ -58,6 +58,8 @@ and their associated references in the guide.
- Database password for Compute service - Database password for Compute service
* - ``NOVA_PASS`` * - ``NOVA_PASS``
- Password of Compute service user ``nova`` - Password of Compute service user ``nova``
* - ``PLACEMENT_PASS``
- Password of the Placement service user ``placement``
* - ``RABBIT_PASS`` * - ``RABBIT_PASS``
- Password of user guest of RabbitMQ - Password of user guest of RabbitMQ

View File

@ -296,6 +296,27 @@ Install and configure components
.. endonly .. endonly
* In the ``[placement]`` section, configure the Placement API:
.. path /etc/nova/nova.conf
.. code-block:: ini
[placement]
# ...
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:35357/v3
username = placement
password = PLACEMENT_PASS
Replace ``PLACEMENT_PASS`` with the password you choose for the
``placement`` user in the Identity service. Comment out any other options
in the ``[placement]`` section.
.. only:: obs or debian .. only:: obs or debian
3. Ensure the kernel module ``nbd`` is loaded. 3. Ensure the kernel module ``nbd`` is loaded.
@ -411,3 +432,43 @@ Finalize installation
the firewall on the controller node is preventing access to port 5672. the firewall on the controller node is preventing access to port 5672.
Configure the firewall to open port 5672 on the controller node and Configure the firewall to open port 5672 on the controller node and
restart ``nova-compute`` service on the compute node. restart ``nova-compute`` service on the compute node.
Add the compute node to the cell database
-----------------------------------------
.. important::
Run the following commands on the **controller** node.
#. Source the admin credentials to enable admin-only CLI commands, then
confirm there are compute hosts in the database:
.. code-block:: console
$ . admin-openrc
$ openstack hypervisor list
+----+---------------------+-----------------+-----------+-------+
| ID | Hypervisor Hostname | Hypervisor Type | Host IP | State |
+----+---------------------+-----------------+-----------+-------+
| 1 | compute1 | QEMU | 10.0.0.31 | up |
+----+---------------------+-----------------+-----------+-------+
#. Discover compute hosts:
.. code-block:: console
# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova
Found 2 cell mappings.
Skipping cell0 since it does not contain hosts.
Getting compute nodes from cell 'cell1': ad5a5985-a719-4567-98d8-8d148aaae4bc
Found 1 computes in cell: ad5a5985-a719-4567-98d8-8d148aaae4bc
Checking host mapping for compute host 'compute': fe58ddc1-1d65-4f87-9456-bc040dc106b3
Creating host mapping for compute host 'compute': fe58ddc1-1d65-4f87-9456-bc040dc106b3
.. note::
When you add new compute nodes, you must run ``nova-manage cell_v2
discover_hosts`` on the controller node to register those new compute
nodes.

View File

@ -44,6 +44,7 @@ create databases, service credentials, and API endpoints.
MariaDB [(none)]> CREATE DATABASE nova_api; MariaDB [(none)]> CREATE DATABASE nova_api;
MariaDB [(none)]> CREATE DATABASE nova; MariaDB [(none)]> CREATE DATABASE nova;
MariaDB [(none)]> CREATE DATABASE nova_cell0;
.. end .. end
@ -55,11 +56,17 @@ create databases, service credentials, and API endpoints.
IDENTIFIED BY 'NOVA_DBPASS'; IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \ MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS'; IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \ MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS'; IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \ MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS'; IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
.. end .. end
Replace ``NOVA_DBPASS`` with a suitable password. Replace ``NOVA_DBPASS`` with a suitable password.
@ -75,14 +82,13 @@ create databases, service credentials, and API endpoints.
.. end .. end
#. To create the service credentials, complete these steps: #. Create the Compute service credentials:
* Create the ``nova`` user: * Create the ``nova`` user:
.. code-block:: console .. code-block:: console
$ openstack user create --domain default \ $ openstack user create --domain default --password-prompt nova
--password-prompt nova
User Password: User Password:
Repeat User Password: Repeat User Password:
@ -130,7 +136,7 @@ create databases, service credentials, and API endpoints.
.. end .. end
#. Create the Compute service API endpoints: #. Create the Compute API service endpoints:
.. code-block:: console .. code-block:: console
@ -187,6 +193,99 @@ create databases, service credentials, and API endpoints.
.. end .. end
#. Create a Placement service user using your chosen ``PLACEMENT_PASS``:
.. code-block:: console
$ openstack user create --domain default --password-prompt placement
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | fa742015a6494a949f67629884fc7ec8 |
| name | placement |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
#. Add the Placement user to the service project with the admin role:
.. code-block:: console
$ openstack role add --project service --user placement admin
.. note::
This command provides no output.
#. Create the Placement API entry in the service catalog:
.. code-block:: console
$ openstack service create --name placement --description "Placement API" placement
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Placement API |
| enabled | True |
| id | 2d1a27022e6e4185b86adac4444c495f |
| name | placement |
| type | placement |
+-------------+----------------------------------+
#. Create the Placement API service endpoints:
.. code-block:: console
$ openstack endpoint create --region RegionOne placement public http://controller:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 2b1b2637908b4137a9c2e0470487cbc0 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 2d1a27022e6e4185b86adac4444c495f |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+
$ openstack endpoint create --region RegionOne placement internal http://controller:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 02bcda9a150a4bd7993ff4879df971ab |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 2d1a27022e6e4185b86adac4444c495f |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+
$ openstack endpoint create --region RegionOne placement admin http://controller:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 3d71177b9e0f406f98cbff198d74b182 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 2d1a27022e6e4185b86adac4444c495f |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+
Install and configure components Install and configure components
-------------------------------- --------------------------------
@ -200,7 +299,8 @@ Install and configure components
# zypper install openstack-nova-api openstack-nova-scheduler \ # zypper install openstack-nova-api openstack-nova-scheduler \
openstack-nova-conductor openstack-nova-consoleauth \ openstack-nova-conductor openstack-nova-consoleauth \
openstack-nova-novncproxy iptables openstack-nova-novncproxy openstack-nova-placement-api \
iptables
.. end .. end
@ -214,7 +314,7 @@ Install and configure components
# yum install openstack-nova-api openstack-nova-conductor \ # yum install openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \ openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler openstack-nova-scheduler openstack-nova-placement-api
.. end .. end
@ -227,7 +327,7 @@ Install and configure components
.. code-block:: console .. code-block:: console
# apt install nova-api nova-conductor nova-consoleauth \ # apt install nova-api nova-conductor nova-consoleauth \
nova-novncproxy nova-scheduler nova-novncproxy nova-scheduler nova-placement-api
.. end .. end
@ -476,14 +576,55 @@ Install and configure components
.. endonly .. endonly
.. only:: rdo or ubuntu or debian * In the ``[placement]`` section, configure the Placement API:
3. Populate the Compute databases: .. path /etc/nova/nova.conf
.. code-block:: ini
[placement]
# ...
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:35357/v3
username = placement
password = PLACEMENT_PASS
Replace ``PLACEMENT_PASS`` with the password you choose for the
``placement`` user in the Identity service. Comment out any other options in
the ``[placement]`` section.
.. only:: rdo
* Due to a `packaging bug
<https://bugzilla.redhat.com/show_bug.cgi?id=1430540>`_, you must enable
access to the Placement API by adding the following configuration to
``/etc/httpd/conf.d/00-nova-placement-api.conf``:
.. path /etc/httpd/conf.d/00-nova-placement-api.conf
.. code-block:: ini
<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
.. endonly
.. only:: rdo or ubuntu or debian or obs
3. Populate the nova-api database:
.. code-block:: console .. code-block:: console
# su -s /bin/sh -c "nova-manage api_db sync" nova # su -s /bin/sh -c "nova-manage api_db sync" nova
# su -s /bin/sh -c "nova-manage db sync" nova
.. end .. end
@ -491,6 +632,43 @@ Install and configure components
Ignore any deprecation messages in this output. Ignore any deprecation messages in this output.
4. Register the ``cell0`` database:
.. code-block:: console
# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
.. end
5. Create the ``cell1`` cell:
.. code-block:: console
# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
109e1d4b-536a-40d0-83c6-5f121b82b650
.. end
6. Populate the nova database:
.. code-block:: console
# su -s /bin/sh -c "nova-manage db sync" nova
7. Verify nova cell0 and cell1 are registered correctly:
.. code-block:: console
# nova-manage cell_v2 list_cells
+-------+--------------------------------------+
| Name | UUID |
+-------+--------------------------------------+
| cell1 | 109e1d4b-536a-40d0-83c6-5f121b82b650 |
| cell0 | 00000000-0000-0000-0000-000000000000 |
+-------+--------------------------------------+
.. end
.. endonly .. endonly
Finalize installation Finalize installation

View File

@ -51,31 +51,38 @@ Verify operation of the Compute service.
$ openstack catalog list $ openstack catalog list
+----------+----------+-----------------------------------------+ +-----------+-----------+-----------------------------------------+
| Name | Type | Endpoints | | Name | Type | Endpoints |
+----------+----------+-----------------------------------------+ +-----------+-----------+-----------------------------------------+
| keystone | identity | RegionOne | | keystone | identity | RegionOne |
| | | public: http://controller:5000/v3/ | | | | public: http://controller:5000/v3/ |
| | | RegionOne | | | | RegionOne |
| | | internal: http://controller:5000/v3/ | | | | internal: http://controller:5000/v3/ |
| | | RegionOne | | | | RegionOne |
| | | admin: http://controller:35357/v3/ | | | | admin: http://controller:35357/v3/ |
| | | | | | | |
| glance | image | RegionOne | | glance | image | RegionOne |
| | | admin: http://controller:9292 | | | | admin: http://controller:9292 |
| | | RegionOne | | | | RegionOne |
| | | public: http://controller:9292 | | | | public: http://controller:9292 |
| | | RegionOne | | | | RegionOne |
| | | internal: http://controller:9292 | | | | internal: http://controller:9292 |
| | | | | | | |
| nova | compute | RegionOne | | nova | compute | RegionOne |
| | | admin: http://controller:8774/v2.1 | | | | admin: http://controller:8774/v2.1 |
| | | RegionOne | | | | RegionOne |
| | | internal: http://controller:8774/v2.1 | | | | internal: http://controller:8774/v2.1 |
| | | RegionOne | | | | RegionOne |
| | | public: http://controller:8774/v2.1 | | | | public: http://controller:8774/v2.1 |
| | | | | | | |
+----------+----------+-----------------------------------------+ | placement | placement | RegionOne |
| | | public: http://controller:8778 |
| | | RegionOne |
| | | admin: http://controller:8778 |
| | | RegionOne |
| | | internal: http://controller:8778 |
| | | |
+-----------+-----------+-----------------------------------------+
.. note:: .. note::