Add docs for stable-compute-uuid behaviors

This adds some admin guide documentation about the stable compute_id
file. It covers upgrade, greenfield generation, and greenfield
pre-provisioning by deployment tools.

Related to blueprint stable-compute-uuid

Change-Id: I078b3f9e1919f2008628dc7b889e8696f1f6159a
This commit is contained in:
Dan Smith 2023-02-07 07:44:51 -08:00
parent 49aa40394a
commit a296441782
3 changed files with 86 additions and 0 deletions

View File

@ -0,0 +1,83 @@
===========================
Compute Node Identification
===========================
Nova requires that compute nodes maintain a constant and consistent identity
during their lifecycle. With the exception of the ironic driver, starting in
the 2023.1 release, this is achieved by use of a file containing the node
unique identifier that is persisted on disk. Prior to 2023.1, a combination of
the compute node's hostname and the :oslo.config:option:`host` value in the
configuration file were used.
The 2023.1 and later compute node identification file must remain unchanged
during the lifecycle of the compute node. Changing the value or removing the
file will result in a failure to start and may require advanced techniques
for recovery. The file is read once at `nova-compute`` startup, at which point
it is validated for formatting and the corresponding node is located or
created in the database.
.. note::
Even after 2023.1, the compute node's hostname may not be changed after
the initial registration with the controller nodes, it is just not used
as the primary method for identification.
The behavior of ``nova-compute`` is different when using the ironic driver,
as the (UUID-based) identity and mapping of compute nodes to compute manager
service hosts is dynamic. In that case, no single node identity is maintained
by the compute host and thus no identity file is read or written. Thus none
of the sections below apply to hosts with :oslo.config:option:`compute_driver`
set to `ironic`.
Self-provisioning of the node identity
--------------------------------------
By default, ``nova-compute`` will automatically generate and write a UUID to
disk the first time it starts up, and will use that going forward as its
stable identity. Using the :oslo.config:option:`state_path`
(which is ``/var/lib/nova`` on most systems), a ``compute_id`` file will be
created with a generated UUID.
Since this file (and it's parent directory) is writable by nova, it may be
desirable to move this to one of the other locations that nova looks for the
identification file.
Deployment provisioning of the node identity
--------------------------------------------
In addition to the location mentioned above, nova will also search the parent
directories of any config file in use (either the defaults or provided on
the command line) for a ``compute_id`` file. Thus, a deployment tool may, on
most systems, pre-provision the node's UUID by writing one to
``/etc/nova/compute_id``.
The contents of the file should be a single UUID in canonical textual
representation with no additional whitespace or other characters. The following
should work on most Linux systems:
.. code-block:: shell
$ uuidgen > /etc/nova/compute_id
.. note::
**Do not** execute the above command blindly in every run of a deployment
tool, as that will result in overwriting the ``compute_id`` file each time,
which *will* prevent nova from working properly.
Upgrading from pre-2023.1
-------------------------
Before release 2023.1, ``nova-compute`` only used the hostname (combined with
:oslo.config:option:`host`, if set) to identify its compute node objects in
the database. When upgrading from a prior release, the compute node will
perform a one-time migration of the hostname-matched compute node UUID to the
``compute_id`` file in the :oslo.config:option:`state_path` location.
.. note::
It is imperative that you allow the above migration to run and complete on
compute nodes that are being upgraded. Skipping this step by
pre-provisioning a ``compute_id`` file before the upgrade will **not** work
and will be equivalent to changing the compute node UUID after it has
already been created once.

View File

@ -206,6 +206,7 @@ instance for these kind of workloads.
secure-boot
sev
managing-resource-providers
compute-node-identification
resource-limits
cpu-models
libvirt-misc

View File

@ -41,6 +41,8 @@ Files
* ``/etc/nova/policy.d/``
* ``/etc/nova/rootwrap.conf``
* ``/etc/nova/rootwrap.d/``
* ``/etc/nova/compute_id``
* ``/var/lib/nova/compute_id``
See Also
========