From df3867a2cb1acd54838056aed88dbb6babac1a9f Mon Sep 17 00:00:00 2001 From: "Simental Magana, Marcos" Date: Thu, 29 Oct 2015 17:34:50 -0600 Subject: [PATCH] Add OpenStack compute (nova) documentation --- source/openstack_compute.rst | 589 +++++++++++++++++++++++++++++++++++ 1 file changed, 589 insertions(+) create mode 100644 source/openstack_compute.rst diff --git a/source/openstack_compute.rst b/source/openstack_compute.rst new file mode 100644 index 00000000..bf83aa25 --- /dev/null +++ b/source/openstack_compute.rst @@ -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 | | + +--------------------------------------+--------+--------+--------+