Merge "FUP for docs nits in cross-cell-resize series"

This commit is contained in:
Zuul 2020-01-07 16:29:48 +00:00 committed by Gerrit Code Review
commit 0e81260415
5 changed files with 62 additions and 32 deletions

View File

@ -2,6 +2,10 @@
Cross-cell resize Cross-cell resize
================= =================
This document describes how to configure nova for cross-cell resize.
For information on :term:`same-cell resize <Same-Cell Resize>`, refer to
:doc:`/admin/configuration/resize`.
Historically resizing and cold migrating a server has been explicitly Historically resizing and cold migrating a server has been explicitly
`restricted`_ to within the same cell in which the server already exists. `restricted`_ to within the same cell in which the server already exists.
The cross-cell resize feature allows configuring nova to allow resizing The cross-cell resize feature allows configuring nova to allow resizing
@ -15,7 +19,7 @@ a summit talk with a high-level overview.
.. _video: https://www.openstack.org/videos/summits/denver-2019/whats-new-in-nova-cellsv2 .. _video: https://www.openstack.org/videos/summits/denver-2019/whats-new-in-nova-cellsv2
Use case Use case
~~~~~~~~ --------
There are many reasons to use multiple cells in a nova deployment beyond just There are many reasons to use multiple cells in a nova deployment beyond just
scaling the database and message queue. Cells can also be used to shard a scaling the database and message queue. Cells can also be used to shard a
@ -29,18 +33,19 @@ could also just cold migrate the servers during a maintenance window to the
new cell. new cell.
Requirements Requirements
~~~~~~~~~~~~ ------------
To enable cross-cell resize functionality the following conditions must be met. To enable cross-cell resize functionality the following conditions must be met.
Minimum compute versions Minimum compute versions
------------------------ ~~~~~~~~~~~~~~~~~~~~~~~~
All compute services must be upgraded to Ussuri or later and not be pinned All compute services must be upgraded to 21.0.0 (Ussuri) or later and not be
to older RPC API versions in :oslo.config:option:`upgrade_levels.compute`. pinned to older RPC API versions in
:oslo.config:option:`upgrade_levels.compute`.
Policy configuration Policy configuration
-------------------- ~~~~~~~~~~~~~~~~~~~~
The policy rule ``compute:servers:resize:cross_cell`` controls who can perform The policy rule ``compute:servers:resize:cross_cell`` controls who can perform
a cross-cell resize or cold migrate operation. By default the policy disables a cross-cell resize or cold migrate operation. By default the policy disables
@ -52,7 +57,7 @@ some other rule for test teams but not normal users until you are comfortable
supporting the feature. supporting the feature.
Compute driver Compute driver
-------------- ~~~~~~~~~~~~~~
There are no special compute driver implementations required to support the There are no special compute driver implementations required to support the
feature, it is built on existing driver interfaces used during resize and feature, it is built on existing driver interfaces used during resize and
@ -60,13 +65,13 @@ shelve/unshelve. However, only the libvirt compute driver has integration
testing in the ``nova-multi-cell`` CI job. testing in the ``nova-multi-cell`` CI job.
Networking Networking
---------- ~~~~~~~~~~
The networking API must expose the ``Port Bindings Extended`` API extension The networking API must expose the ``Port Bindings Extended`` API extension
which was added in the 13.0.0 (Rocky) release for Neutron. which was added in the 13.0.0 (Rocky) release for Neutron.
Notifications Notifications
~~~~~~~~~~~~~ -------------
The types of events and their payloads remain unchanged. The major difference The types of events and their payloads remain unchanged. The major difference
from same-cell resize is the *publisher_id* may be different in some cases from same-cell resize is the *publisher_id* may be different in some cases
@ -82,7 +87,7 @@ for the source and target cells assuming they use separate transports.
.. _finish_revert_resize: https://opendev.org/openstack/nova/src/tag/20.0.0/nova/compute/manager.py#L4326 .. _finish_revert_resize: https://opendev.org/openstack/nova/src/tag/20.0.0/nova/compute/manager.py#L4326
Instance actions Instance actions
~~~~~~~~~~~~~~~~ ----------------
The overall instance actions named ``resize``, ``confirmResize`` and The overall instance actions named ``resize``, ``confirmResize`` and
``revertResize`` are the same as same-cell resize. However, the *events* which ``revertResize`` are the same as same-cell resize. However, the *events* which
@ -92,19 +97,18 @@ operation and there are different methods involved in a cross-cell resize.
This is important for triage when a cross-cell resize operation fails. This is important for triage when a cross-cell resize operation fails.
Scheduling Scheduling
~~~~~~~~~~ ----------
.. TODO: link to CrossCellWeigher docs when published. The :ref:`CrossCellWeigher <cross-cell-weigher>` is enabled by default. When a
scheduling request allows selecting compute nodes from another cell the weigher
A ``CrossCellWeigher`` is enabled by default. When a scheduling request will by default *prefer* hosts within the source cell over hosts from another
allows selecting compute nodes from another cell the weigher will by default cell. However, this behavior is configurable using the
*prefer* hosts within the source cell over hosts from another cell. However, :oslo.config:option:`filter_scheduler.cross_cell_move_weight_multiplier`
this behavior is configurable using the configuration option if, for example, you want to drain old cells when resizing
``[filter_scheduler]/cross_cell_move_weight_multiplier`` configuration option or cold migrating.
if, for example, you want to drain old cells when resizing or cold migrating.
Code flow Code flow
~~~~~~~~~ ---------
The end user experience is meant to not change, i.e. status transitions. A The end user experience is meant to not change, i.e. status transitions. A
successfully cross-cell resized server will go to ``VERIFY_RESIZE`` status successfully cross-cell resized server will go to ``VERIFY_RESIZE`` status
@ -136,7 +140,7 @@ resize:
.. _shelveOffload: https://docs.openstack.org/api-ref/compute/#shelf-offload-remove-server-shelveoffload-action .. _shelveOffload: https://docs.openstack.org/api-ref/compute/#shelf-offload-remove-server-shelveoffload-action
Sequence diagram Sequence diagram
~~~~~~~~~~~~~~~~ ----------------
The following diagrams are current as of the 21.0.0 (Ussuri) release. The following diagrams are current as of the 21.0.0 (Ussuri) release.
@ -148,7 +152,7 @@ The following diagrams are current as of the 21.0.0 (Ussuri) release.
diagrams I would suggest putting those into separate focused diagrams. diagrams I would suggest putting those into separate focused diagrams.
Resize Resize
------ ~~~~~~
This is the sequence of calls to get the server to ``VERIFY_RESIZE`` status. This is the sequence of calls to get the server to ``VERIFY_RESIZE`` status.
@ -171,7 +175,7 @@ This is the sequence of calls to get the server to ``VERIFY_RESIZE`` status.
} }
Confirm resize Confirm resize
-------------- ~~~~~~~~~~~~~~
This is the sequence of calls when confirming `or deleting`_ a server in This is the sequence of calls when confirming `or deleting`_ a server in
``VERIFY_RESIZE`` status. ``VERIFY_RESIZE`` status.
@ -199,7 +203,7 @@ This is the sequence of calls when confirming `or deleting`_ a server in
.. _or deleting: https://opendev.org/openstack/nova/src/tag/20.0.0/nova/compute/api.py#L2171 .. _or deleting: https://opendev.org/openstack/nova/src/tag/20.0.0/nova/compute/api.py#L2171
Revert resize Revert resize
------------- ~~~~~~~~~~~~~
This is the sequence of calls when reverting a server in ``VERIFY_RESIZE`` This is the sequence of calls when reverting a server in ``VERIFY_RESIZE``
status. status.
@ -227,7 +231,7 @@ status.
} }
Limitations Limitations
~~~~~~~~~~~ -----------
These are known to not yet be supported in the code: These are known to not yet be supported in the code:
@ -261,10 +265,10 @@ Other limitations:
.. _evacuating: https://docs.openstack.org/api-ref/compute/#evacuate-server-evacuate-action .. _evacuating: https://docs.openstack.org/api-ref/compute/#evacuate-server-evacuate-action
Troubleshooting Troubleshooting
~~~~~~~~~~~~~~~ ---------------
Timeouts Timeouts
-------- ~~~~~~~~
Configure a :ref:`service user <user_token_timeout>` in case the user token Configure a :ref:`service user <user_token_timeout>` in case the user token
times out, e.g. during the snapshot and download of a large server image. times out, e.g. during the snapshot and download of a large server image.
@ -274,7 +278,7 @@ check the :oslo.config:option:`long_rpc_timeout` option to see if it is high
enough though the default value (30 minutes) should be sufficient. enough though the default value (30 minutes) should be sufficient.
Recovering from failure Recovering from failure
----------------------- ~~~~~~~~~~~~~~~~~~~~~~~
The orchestration tasks in conductor that drive the operation are built with The orchestration tasks in conductor that drive the operation are built with
rollbacks so each part of the operation can be rolled back in order if a rollbacks so each part of the operation can be rolled back in order if a

View File

@ -1,12 +1,14 @@
================ ======
Configure resize Resize
================ ======
Resize (or Server resize) is the ability to change the flavor of a server, thus Resize (or Server resize) is the ability to change the flavor of a server, thus
allowing it to upscale or downscale according to user needs. For this feature allowing it to upscale or downscale according to user needs. For this feature
to work properly, you might need to configure some underlying virt layers. to work properly, you might need to configure some underlying virt layers.
For cross-cell resize, refer to :doc:`/admin/configuration/cross-cell-resize`. This document describes how to configure hosts for standard resize.
For information on :term:`cross-cell resize <Cross-Cell Resize>`, refer to
:doc:`/admin/configuration/cross-cell-resize`.
Virt drivers Virt drivers
------------ ------------

View File

@ -7,6 +7,11 @@ the internal `API code`_, `conductor code`_ and `compute code`_ use the same
methods. This document explains some of the differences in what methods. This document explains some of the differences in what
happens between a resize and cold migrate operation. happens between a resize and cold migrate operation.
For the most part this document describes
:term:`same-cell resize <Same-Cell Resize>`.
For details on :term:`cross-cell resize <Cross-Cell Resize>`, refer to
:doc:`/admin/configuration/cross-cell-resize`.
High level High level
~~~~~~~~~~ ~~~~~~~~~~

View File

@ -13,6 +13,14 @@ Glossary
For more information, refer to :doc:`/admin/aggregates`. For more information, refer to :doc:`/admin/aggregates`.
Cross-Cell Resize
A resize (or cold migrate) operation where the source and destination
compute hosts are mapped to different cells. By default, resize and
cold migrate operations occur within the same cell.
For more information, refer to
:doc:`/admin/configuration/cross-cell-resize`.
Host Aggregate Host Aggregate
Host aggregates can be regarded as a mechanism to further partition an Host aggregates can be regarded as a mechanism to further partition an
:term:`availability zone`; while availability zones are visible to :term:`availability zone`; while availability zones are visible to
@ -23,3 +31,12 @@ Glossary
same key-value pair can be assigned to multiple aggregates. same key-value pair can be assigned to multiple aggregates.
For more information, refer to :doc:`/admin/aggregates`. For more information, refer to :doc:`/admin/aggregates`.
Same-Cell Resize
A resize (or cold migrate) operation where the source and destination
compute hosts are mapped to the same cell. Also commonly referred to
as "standard resize" or simply "resize". By default, resize and
cold migrate operations occur within the same cell.
For more information, refer to
:doc:`/contributor/resize-and-cold-migrate`.

View File

@ -529,6 +529,8 @@ The Filter Scheduler weighs hosts based on the config option
If more than one value is found for a host in aggregate metadata, the If more than one value is found for a host in aggregate metadata, the
minimum value will be used. minimum value will be used.
.. _cross-cell-weigher:
* |CrossCellWeigher| Weighs hosts based on which cell they are in. "Local" * |CrossCellWeigher| Weighs hosts based on which cell they are in. "Local"
cells are preferred when moving an instance. Use configuration option cells are preferred when moving an instance. Use configuration option
:oslo.config:option:`filter_scheduler.cross_cell_move_weight_multiplier` to :oslo.config:option:`filter_scheduler.cross_cell_move_weight_multiplier` to