Files
watcher/doc/source/strategies/zone_migration.rst
jgilaber 03073a1b0d Remove outdated zone migration documentation note
In a recent patch [1], a bug in the zone migration strategy was fixed,
which prevented audits using this strategy to create action plans
with both instance and volume migrations. We documented this limitation,
but forgot to remove the note when fixing this bug.

[1] https://review.opendev.org/c/openstack/watcher/+/952115

Change-Id: I2074f2b911dfcbf44716ff30d8ea35a5046b8520
Signed-off-by: jgilaber <jgilaber@redhat.com>
2025-10-01 17:02:40 +02:00

207 lines
7.8 KiB
ReStructuredText

==============
Zone migration
==============
Synopsis
--------
**display name**: ``Zone migration``
**goal**: ``hardware_maintenance``
.. watcher-term:: watcher.decision_engine.strategy.strategies.zone_migration.ZoneMigration
.. note::
The term ``Zone`` in the strategy name is not a reference to
`Openstack availability zones <https://docs.openstack.org/nova/latest/admin/availability-zones.html>`_
but rather a user-defined set of Compute nodes and storage pools.
Currently, migrations across actual availability zones is not fully tested
and might not work in all cluster configurations.
Requirements
------------
Metrics
*******
None
Cluster data model
******************
Default Watcher's Compute cluster data model:
.. watcher-term:: watcher.decision_engine.model.collector.nova.NovaClusterDataModelCollector
Storage cluster data model is also required:
.. watcher-term:: watcher.decision_engine.model.collector.cinder.CinderClusterDataModelCollector
Actions
*******
Default Watcher's actions:
.. list-table::
:widths: 30 30
:header-rows: 1
* - action
- description
* - ``migrate``
- .. watcher-term:: watcher.applier.actions.migration.Migrate
* - ``volume_migrate``
- .. watcher-term:: watcher.applier.actions.volume_migration.VolumeMigrate
Planner
*******
Default Watcher's planner:
.. watcher-term:: watcher.decision_engine.planner.weight.WeightPlanner
Configuration
-------------
Strategy parameters are:
======================== ======== ======== ========= ==========================
parameter type default required description
======================== ======== ======== ========= ==========================
``compute_nodes`` array None Optional Compute nodes to migrate.
``storage_pools`` array None Optional Storage pools to migrate.
``parallel_total`` integer 6 Optional The number of actions to
be run in parallel in
total.
``parallel_per_node`` integer 2 Optional The number of actions to
be run in parallel per
compute node in one
action plan.
``parallel_per_pool`` integer 2 Optional The number of actions to
be run in parallel per
storage pool.
``priority`` object None Optional List prioritizes instances
and volumes.
``with_attached_volume`` boolean False Optional False: Instances will
migrate after all volumes
migrate.
True: An instance will
migrate after the
attached volumes migrate.
======================== ======== ======== ========= ==========================
.. note::
* All parameters in the table above have defaults and therefore the
user can create an audit without specifying a value. However,
if **only** defaults parameters are used, there will be nothing
actionable for the audit.
* ``parallel_*`` parameters are not in reference to concurrency,
but rather on limiting the amount of actions to be added to the action
plan
* ``compute_nodes``, ``storage_pools``, and ``priority`` are optional
parameters, however, if they are passed they **require** the parameters
in the tables below:
The elements of compute_nodes array are:
============= ======= ======== ========= ========================
parameter type default required description
============= ======= ======== ========= ========================
``src_node`` string None Required Compute node from which
instances migrate.
``dst_node`` string None Optional Compute node to which
instances migrate.
If omitted, nova will
choose the destination
node automatically.
============= ======= ======== ========= ========================
The elements of storage_pools array are:
============= ======= ======== ========= ========================
parameter type default required description
============= ======= ======== ========= ========================
``src_pool`` string None Required Storage pool from which
volumes migrate.
``dst_pool`` string None Optional Storage pool to which
volumes migrate.
``src_type`` string None Optional Source volume type.
``dst_type`` string None Required Destination volume type
============= ======= ======== ========= ========================
The elements of priority object are:
================ ======= ======== ========= =====================
parameter type default Required description
================ ======= ======== ========= =====================
``project`` array None Optional Project names.
``compute_node`` array None Optional Compute node names.
``storage_pool`` array None Optional Storage pool names.
``compute`` enum None Optional Instance attributes.
|compute|
``storage`` enum None Optional Volume attributes.
|storage|
================ ======= ======== ========= =====================
.. |compute| replace:: ["vcpu_num", "mem_size", "disk_size", "created_at"]
.. |storage| replace:: ["size", "created_at"]
Efficacy Indicator
------------------
The efficacy indicators for action plans built from the command line
are:
.. watcher-func::
:format: literal_block
watcher.decision_engine.goal.efficacy.specs.HardwareMaintenance.get_global_efficacy_indicator
In **Horizon**, these indictors are shown with alternative text.
* ``live_migrate_instance_count`` is shown as
``The number of instances actually live migrated`` in Horizon
* ``planned_live_migrate_instance_count`` is shown as
``The number of instances planned to live migrate`` in Horizon
* ``planned_live_migration_instance_count`` refers to the instances planned
to live migrate in the action plan.
* ``live_migrate_instance_count`` tracks all the instances that could be
migrated according to the audit input.
Algorithm
---------
For more information on the zone migration strategy please refer
to: http://specs.openstack.org/openstack/watcher-specs/specs/queens/implemented/zone-migration-strategy.html
How to use it ?
---------------
.. code-block:: shell
$ openstack optimize audittemplate create \
at1 hardware_maintenance --strategy zone_migration
$ openstack optimize audit create -a at1 \
-p compute_nodes='[{"src_node": "s01", "dst_node": "d01"}]'
.. note::
* The Cinder model collector is not enabled by default.
If the Cinder model collector is not enabled while deploying Watcher,
the model will become outdated and cause errors eventually.
See the `Configuration option to enable the storage collector <https://docs.openstack.org/watcher/latest/configuration/watcher.html#collector.collector_plugins>`_ documentation.
Support caveats
---------------
This strategy offers the option to perform both Instance migrations and
Volume migrations. Currently, Instance migrations are ready for production
use while Volume migrations remain experimental.
External Links
--------------
None