mirror of
https://github.com/clearlinux/clear-linux-documentation.git
synced 2026-09-06 13:51:40 +00:00
Add OpenStack compute (nova) documentation
This commit is contained in:
@@ -0,0 +1,589 @@
|
||||
OpenStack Compute
|
||||
#################
|
||||
|
||||
Use OpenStack Compute to host and manage cloud computing systems.
|
||||
OpenStack Compute interacts with OpenStack Identity for authentication,
|
||||
OpenStack Image Service for disk and server images, and OpenStack
|
||||
dashboard for the user and administrative interface. Image access is
|
||||
limited by projects, and by users; quotas are limited per project (the
|
||||
number of instances, for example). OpenStack Compute can scale
|
||||
horizontally on standard hardware, and download images to launch
|
||||
instances.
|
||||
|
||||
Install and configure controller node
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This section describes how to install and configure the
|
||||
Compute service, code-named nova, on the controller node.
|
||||
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
Before you install and configure the Compute service, you must
|
||||
create a database, service credentials, and API endpoints.
|
||||
|
||||
#. To create the database, complete these steps:
|
||||
|
||||
#. Use the database access client to connect to the database server
|
||||
as the root user:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ mysql -u root -p
|
||||
|
||||
#. Create the ``nova`` database:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
CREATE DATABASE nova;
|
||||
|
||||
#. Grant proper access to the nova database. Replace ``NOVA_DBPASS``
|
||||
with a suitable password.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
|
||||
IDENTIFIED BY 'NOVA_DBPASS';
|
||||
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
|
||||
IDENTIFIED BY 'NOVA_DBPASS';
|
||||
|
||||
#. Exit the database access client.
|
||||
|
||||
#. Source the admin credentials to gain access to admin-only CLI
|
||||
commands:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ source admin-openrc.sh
|
||||
|
||||
#. To create the service credentials, complete these steps:
|
||||
|
||||
* Create the ``nova`` user. Replace ``NOVA_PASS`` with a suitable
|
||||
password.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack user create --domain default --password NOVA_PASS nova
|
||||
+-----------+----------------------------------+
|
||||
| Field | Value |
|
||||
+-----------+----------------------------------+
|
||||
| domain_id | default |
|
||||
| enabled | True |
|
||||
| id | 8c46e4760902464b889293a74a0c90a8 |
|
||||
| name | nova |
|
||||
+-----------+----------------------------------+
|
||||
|
||||
* Add the ``admin`` role to the ``nova`` user:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack role add --project service --user nova admin
|
||||
|
||||
#. Create the ``nova`` service entity:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack service create --name nova \
|
||||
--description "OpenStack Compute" compute
|
||||
+-------------+----------------------------------+
|
||||
| Field | Value |
|
||||
+-------------+----------------------------------+
|
||||
| description | OpenStack Compute |
|
||||
| enabled | True |
|
||||
| id | 060d59eac51b4594815603d75a00aba2 |
|
||||
| name | nova |
|
||||
| type | compute |
|
||||
+-------------+----------------------------------+
|
||||
|
||||
#. Create the Compute service API endpoints:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ openstack endpoint create --region RegionOne \
|
||||
compute public http://controller:8774/v2/%\(tenant_id\)s
|
||||
+--------------+-----------------------------------------+
|
||||
| Field | Value |
|
||||
+--------------+-----------------------------------------+
|
||||
| enabled | True |
|
||||
| id | 3c1caa473bfe4390a11e7177894bcc7b |
|
||||
| interface | public |
|
||||
| region | RegionOne |
|
||||
| region_id | RegionOne |
|
||||
| service_id | e702f6f497ed42e6a8ae3ba2e5871c78 |
|
||||
| service_name | nova |
|
||||
| service_type | compute |
|
||||
| url | http://controller:8774/v2/%(tenant_id)s |
|
||||
+--------------+-----------------------------------------+
|
||||
|
||||
$ openstack endpoint create --region RegionOne \
|
||||
compute internal http://controller:8774/v2/%\(tenant_id\)s
|
||||
+--------------+-----------------------------------------+
|
||||
| Field | Value |
|
||||
+--------------+-----------------------------------------+
|
||||
| enabled | True |
|
||||
| id | e3c918de680746a586eac1f2d9bc10ab |
|
||||
| interface | internal |
|
||||
| region | RegionOne |
|
||||
| region_id | RegionOne |
|
||||
| service_id | e702f6f497ed42e6a8ae3ba2e5871c78 |
|
||||
| service_name | nova |
|
||||
| service_type | compute |
|
||||
| url | http://controller:8774/v2/%(tenant_id)s |
|
||||
+--------------+-----------------------------------------+
|
||||
|
||||
$ openstack endpoint create --region RegionOne \
|
||||
compute admin http://controller:8774/v2/%\(tenant_id\)s
|
||||
+--------------+-----------------------------------------+
|
||||
| Field | Value |
|
||||
+--------------+-----------------------------------------+
|
||||
| enabled | True |
|
||||
| id | 38f7af91666a47cfb97b4dc790b94424 |
|
||||
| interface | admin |
|
||||
| region | RegionOne |
|
||||
| region_id | RegionOne |
|
||||
| service_id | e702f6f497ed42e6a8ae3ba2e5871c78 |
|
||||
| service_name | nova |
|
||||
| service_type | compute |
|
||||
| url | http://controller:8774/v2/%(tenant_id)s |
|
||||
+--------------+-----------------------------------------+
|
||||
|
||||
Installing and configuring the Compute controller components
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
To install and configure the Compute controller components:
|
||||
|
||||
#. Install OpenStack Compute Controller bundle:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# clr_bundle_add openstack-compute-controller
|
||||
|
||||
#. Custom configurations will be located at ``/etc/nova``.
|
||||
|
||||
* Create ``/etc/nova directory``.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# mkdir /etc/nova
|
||||
|
||||
* Create empty nova configuration file ``/etc/nova/nova.conf``.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# touch /etc/nova/nova.conf
|
||||
|
||||
#. Edit the ``/etc/nova/nova.conf`` file and complete the following
|
||||
actions:
|
||||
|
||||
* In the ``[database]`` section, configure database access. Replace
|
||||
``NOVA_DBPASS`` with the password you chose for the Compute
|
||||
database.
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[database]
|
||||
...
|
||||
connection=mysql://nova:NOVA_DBPASS@controller/nova
|
||||
|
||||
* In the ``[DEFAULT]`` and ``[oslo_messaging_rabbit]`` sections,
|
||||
configure ``RabbitMQ`` message queue access. Replace ``RABBIT_PASS``
|
||||
with the password you chose for the guest account in RabbitMQ.
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[DEFAULT]
|
||||
...
|
||||
rpc_backend = rabbit
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
[oslo_messaging_rabbit]
|
||||
...
|
||||
rabbit_host = controller
|
||||
rabbit_userid = openstack
|
||||
rabbit_password = RABBIT_PASS
|
||||
|
||||
* In the ``[DEFAULT]`` and ``[keystone_authtoken]`` sections,
|
||||
configure Identity service access. Replace ``NOVA_PASS`` with the
|
||||
password you chose for the nova user in the Identity service.
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[DEFAULT]
|
||||
...
|
||||
auth_strategy = keystone
|
||||
|
||||
[keystone_authtoken]
|
||||
...
|
||||
auth_uri = http://controller:5000
|
||||
auth_url = http://controller:35357
|
||||
auth_plugin = password
|
||||
project_domain_id = default
|
||||
user_domain_id = default
|
||||
project_name = service
|
||||
username = nova
|
||||
password = NOVA_PASS
|
||||
|
||||
|
||||
* In the ``[DEFAULT]`` section, configure the ``my_ip`` option to
|
||||
use the management interface IP address of the controller node:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[DEFAULT]
|
||||
...
|
||||
my_ip = 10.0.0.11
|
||||
|
||||
* In the ``[DEFAULT]`` section, enable support for the Networking service:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[DEFAULT]
|
||||
...
|
||||
network_api_class = nova.network.neutronv2.api.API
|
||||
security_group_api = neutron
|
||||
linuxnet_interface_driver = nova.network.linux_net.NeutronLinuxBridgeInterfaceDriver
|
||||
firewall_driver = nova.virt.firewall.NoopFirewallDriver
|
||||
|
||||
* In the ``[vnc]`` section, configure the VNC proxy to use the
|
||||
management interface IP address of the controller node:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[vnc]
|
||||
...
|
||||
vncserver_listen = 10.0.0.11
|
||||
vncserver_proxyclient_address = 10.0.0.11
|
||||
|
||||
* In the ``[glance]`` section, configure the location of the
|
||||
Image Service:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[glance]
|
||||
...
|
||||
host = controller
|
||||
|
||||
#. Let systemd set the correct permissions for files in ``/etc/nova``.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# systemctl restart update-triggers.target
|
||||
|
||||
#. Populate the Compute database:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
su -s /bin/sh -c "nova-manage db sync" nova
|
||||
|
||||
Finalizing Compute installation
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Complete the following steps to finalize Compute installation:
|
||||
|
||||
#. Start the Compute Service services and configure them to start
|
||||
when the system boots:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# systemctl enable uwsgi@nova-api.socket \
|
||||
nova-cert.service nova-consoleauth.service \
|
||||
nova-scheduler.service nova-conductor.service \
|
||||
nova-novncproxy.service
|
||||
# systemctl start uwsgi@nova-api.socket \
|
||||
nova-cert.service nova-consoleauth.service \
|
||||
nova-scheduler.service nova-conductor.service \
|
||||
nova-novncproxy.service
|
||||
|
||||
Install and configure a compute note
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This section describes how to install and configure the Compute service
|
||||
on a compute node. This configuration uses the QEMU hypervisor with the
|
||||
KVM extension on compute nodes that support hardware acceleration for
|
||||
virtual machines.
|
||||
|
||||
Install and configure components
|
||||
--------------------------------
|
||||
|
||||
#. Install OpenStack Compute bundle:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# clr_bundle_add openstack-compute
|
||||
|
||||
#. Custom configurations will be located at ``/etc/nova``.
|
||||
|
||||
* Create ``/etc/nova`` directory.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# mkdir /etc/nova
|
||||
|
||||
* Create empty nova configuration file ``/etc/nova/nova.conf``.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# touch /etc/nova/nova.conf
|
||||
|
||||
#. Edit the ``/etc/nova/nova.conf`` file and complete the following
|
||||
actions:
|
||||
|
||||
* In the ``[DEFAULT]`` and ``[oslo_messaging_rabbit]`` sections,
|
||||
configure RabbitMQ message broker access. Replace ``RABBIT_PASS``
|
||||
with the password you chose for the ``openstack`` account in ``RabbitMQ``.
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[DEFAULT]
|
||||
...
|
||||
rpc_backend = rabbit
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[oslo_messaging_rabbit]
|
||||
...
|
||||
rabbit_host = controller
|
||||
rabbit_userid = openstack
|
||||
rabbit_password = RABBIT_PASS
|
||||
|
||||
* In the ``[DEFAULT]`` and ``[keystone_authtoken]`` sections,
|
||||
configure Identity service access. Replace ``NOVA_PASS`` with the
|
||||
password you chose for the nova user in the Identity service.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
[DEFAULT]
|
||||
...
|
||||
auth_strategy = keystone
|
||||
|
||||
[keystone_authtoken]
|
||||
...
|
||||
auth_uri = http://controller:5000
|
||||
auth_url = http://controller:35357
|
||||
auth_plugin = password
|
||||
project_domain_id = default
|
||||
user_domain_id = default
|
||||
project_name = service
|
||||
username = nova
|
||||
password = NOVA_PASS
|
||||
|
||||
* In the ``[DEFAULT]`` section, configure the ``my_ip`` option.
|
||||
Replace ``MANAGEMENT_INTERFACE_IP_ADDRESS`` with the IP address of
|
||||
the management network interface on your compute node, typically
|
||||
``10.0.0.31`` for the first node in the example architecture.
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[DEFAULT]
|
||||
...
|
||||
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
|
||||
|
||||
* In the ``[DEFAULT]`` section, enable support for the Networking service:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[DEFAULT]
|
||||
...
|
||||
network_api_class = nova.network.neutronv2.api.API
|
||||
security_group_api = neutron
|
||||
linuxnet_interface_driver = nova.network.linux_net.NeutronLinuxBridgeInterfaceDriver
|
||||
firewall_driver = nova.virt.firewall.NoopFirewallDriver
|
||||
|
||||
* In the ``[vnc]`` section, enable and configure remote console access:
|
||||
.. code-block:: ini
|
||||
|
||||
[vnc]
|
||||
...
|
||||
enabled = True
|
||||
vncserver_listen = 0.0.0.0
|
||||
vncserver_proxyclient_address = MANAGEMENT_INTERFACE_IP_ADDRESS
|
||||
novncproxy_base_url = http://controller:6080/vnc_auto.html
|
||||
|
||||
The server component listens on all IP addresses and the proxy
|
||||
component only listens on the management interface IP address of
|
||||
the compute node. The base URL indicates the location where you
|
||||
can use a web browser to access remote consoles of instances on
|
||||
this compute node.
|
||||
|
||||
* In the ``[glance]`` section, configure the location of the
|
||||
Image Service:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[glance]
|
||||
...
|
||||
host = controller
|
||||
|
||||
Finalize compute node installation
|
||||
----------------------------------
|
||||
|
||||
#. Determine whether your compute node supports hardware acceleration
|
||||
for virtual machines:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ egrep -c '(vmx|svm)' /proc/cpuinfo
|
||||
|
||||
If this command returns a value of ``one or greater``, your compute
|
||||
node supports hardware acceleration which typically requires no
|
||||
additional configuration.
|
||||
|
||||
If this command returns a value of ``zero`` , your compute node does
|
||||
not support hardware acceleration and you must configure ``libvirt``
|
||||
to use QEMU instead of KVM.
|
||||
|
||||
* Edit the ``[libvirt]`` section in the ``/etc/nova/nova.conf`` file
|
||||
as follows:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[libvirt]
|
||||
...
|
||||
virt_type = qemu
|
||||
|
||||
#. Start the Compute service including its dependencies and configure
|
||||
them to start automatically when the system boots:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# systemctl enable libvirtd.service \
|
||||
nova-compute.service
|
||||
# systemctl start libvirtd.service \
|
||||
nova-compute.service
|
||||
|
||||
Verify operation
|
||||
~~~~~~~~~~~~~~~~
|
||||
Verify operation of the Compute service.
|
||||
|
||||
.. note::
|
||||
|
||||
Perform these commands on the controller node.
|
||||
|
||||
#. Source the ``admin`` credentials to gain access to
|
||||
admin-only CLI commands:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ source admin-openrc.sh
|
||||
|
||||
#. List service components to verify successful launch and
|
||||
registration of each process:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ nova service-list
|
||||
+----+------------------+------------+----------+---------+-------+--------------+-----------------+
|
||||
| Id | Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
|
||||
+----+------------------+------------+----------+---------+-------+--------------+-----------------+
|
||||
| 1 | nova-conductor | controller | internal | enabled | up | 2014-09-16.. | - |
|
||||
| 2 | nova-consoleauth | controller | internal | enabled | up | 2014-09-16.. | - |
|
||||
| 3 | nova-scheduler | controller | internal | enabled | up | 2014-09-16.. | - |
|
||||
| 4 | nova-cert | controller | internal | enabled | up | 2014-09-16.. | - |
|
||||
| 5 | nova-compute | compute1 | nova | enabled | up | 2014-09-16.. | - |
|
||||
+----+------------------+------------+----------+---------+-------+--------------+-----------------+
|
||||
#. List API endpoints in the Identity service to verify connectivity
|
||||
with the Identity service:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ nova endpoints
|
||||
+-----------+------------------------------------------------------------+
|
||||
| nova | Value |
|
||||
+-----------+------------------------------------------------------------+
|
||||
| id | 1fb997666b79463fb68db4ccfe4e6a71 |
|
||||
| interface | public |
|
||||
| region | RegionOne |
|
||||
| region_id | RegionOne |
|
||||
| url | http://controller:8774/v2/ae7a98326b9c455588edd2656d723b9d |
|
||||
+-----------+------------------------------------------------------------+
|
||||
+-----------+------------------------------------------------------------+
|
||||
| nova | Value |
|
||||
+-----------+------------------------------------------------------------+
|
||||
| id | bac365db1ff34f08a31d4ae98b056924 |
|
||||
| interface | admin |
|
||||
| region | RegionOne |
|
||||
| region_id | RegionOne |
|
||||
| url | http://controller:8774/v2/ae7a98326b9c455588edd2656d723b9d |
|
||||
+-----------+------------------------------------------------------------+
|
||||
+-----------+------------------------------------------------------------+
|
||||
| nova | Value |
|
||||
+-----------+------------------------------------------------------------+
|
||||
| id | e37186d38b8e4b81a54de34e73b43f34 |
|
||||
| interface | internal |
|
||||
| region | RegionOne |
|
||||
| region_id | RegionOne |
|
||||
| url | http://controller:8774/v2/ae7a98326b9c455588edd2656d723b9d |
|
||||
+-----------+------------------------------------------------------------+
|
||||
|
||||
+-----------+----------------------------------+
|
||||
| glance | Value |
|
||||
+-----------+----------------------------------+
|
||||
| id | 41ad39f6c6444b7d8fd8318c18ae0043 |
|
||||
| interface | admin |
|
||||
| region | RegionOne |
|
||||
| region_id | RegionOne |
|
||||
| url | http://controller:9292 |
|
||||
+-----------+----------------------------------+
|
||||
+-----------+----------------------------------+
|
||||
| glance | Value |
|
||||
+-----------+----------------------------------+
|
||||
| id | 50ecc4ce62724e319f4fae3861e50f7d |
|
||||
| interface | internal |
|
||||
| region | RegionOne |
|
||||
| region_id | RegionOne |
|
||||
| url | http://controller:9292 |
|
||||
+-----------+----------------------------------+
|
||||
+-----------+----------------------------------+
|
||||
| glance | Value |
|
||||
+-----------+----------------------------------+
|
||||
| id | 7d3df077a20b4461a372269f603b7516 |
|
||||
| interface | public |
|
||||
| region | RegionOne |
|
||||
| region_id | RegionOne |
|
||||
| url | http://controller:9292 |
|
||||
+-----------+----------------------------------+
|
||||
|
||||
+-----------+----------------------------------+
|
||||
| keystone | Value |
|
||||
+-----------+----------------------------------+
|
||||
| id | 88150c2fdc9d406c9b25113701248192 |
|
||||
| interface | internal |
|
||||
| region | RegionOne |
|
||||
| region_id | RegionOne |
|
||||
| url | http://controller:5000/v2.0 |
|
||||
+-----------+----------------------------------+
|
||||
+-----------+----------------------------------+
|
||||
| keystone | Value |
|
||||
+-----------+----------------------------------+
|
||||
| id | cecab58c0f024d95b36a4ffa3e8d81e1 |
|
||||
| interface | public |
|
||||
| region | RegionOne |
|
||||
| region_id | RegionOne |
|
||||
| url | http://controller:5000/v2.0 |
|
||||
+-----------+----------------------------------+
|
||||
+-----------+----------------------------------+
|
||||
| keystone | Value |
|
||||
+-----------+----------------------------------+
|
||||
| id | fc90391ae7cd4216aca070042654e424 |
|
||||
| interface | admin |
|
||||
| region | RegionOne |
|
||||
| region_id | RegionOne |
|
||||
| url | http://controller:35357/v2.0 |
|
||||
+-----------+----------------------------------+
|
||||
|
||||
.. note::
|
||||
|
||||
Ignore any warnings in this output.
|
||||
|
||||
#. List images in the Image service catalog to verify connectivity
|
||||
with the Image service:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
$ nova image-list
|
||||
+--------------------------------------+--------+--------+--------+
|
||||
| ID | Name | Status | Server |
|
||||
+--------------------------------------+--------+--------+--------+
|
||||
| 38047887-61a7-41ea-9b49-27987d5e8bb9 | cirros | ACTIVE | |
|
||||
+--------------------------------------+--------+--------+--------+
|
||||
Reference in New Issue
Block a user