Миграция объектов сетевого узла перед его перезагрузкой
Чтобы выполнить миграцию объектов (роутеры, ВМ, DBaaS, кластеры Kubernetes) с сетевого узла перед его перезагрузкой:
-
Получите список всех L3 агентов:
# openstack network agent list --agent-type l3Пример ожидаемого результата+--------------------------------------+------------+--------+-------------------+-------+-------+------------------+| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |+--------------------------------------+------------+--------+-------------------+-------+-------+------------------+| fbce1819-9e94-4550-b694-da14e00cf6f3 | L3 agent | cpn001 | nova | :-) | UP | neutron-l3-agent || 7604e0c3-9ca9-484e-82a8-94930252f82e | L3 agent | cpn002 | nova | :-) | UP | neutron-l3-agent || ed72b979-bc2d-490f-b059-60cd753346ef | L3 agent | cpn003 | nova | :-) | UP | neutron-l3-agent || eb3577de-736a-42c5-adc5-f02b33429f07 | L3 agent | kcn001 | nova | :-) | UP | neutron-l3-agent || 5a26f82b-967a-4b08-a1d1-e6c07d489127 | L3 agent | kcn002 | nova | :-) | UP | neutron-l3-agent |+--------------------------------------+------------+--------+-------------------+-------+-------+------------------+ -
Проверьте, что узлы, с которого и на который выполняется миграция, имеют режим
agent_mode=dvr_snat:# openstack network agent show <ИСХОДНЫЙ_L3># openstack network agent show <ЦЕЛЕВОЙ_L3>Здесь:
<ИСХОДНЫЙ_L3>— идентификатор L3 агента, с которого выполняется миграция.<ЦЕЛЕВОЙ_L3>— идентификатор L3 агента, на который выполняется миграция.
Пример команды и ожидаемого результата# openstack network agent show ed72b979-bc2d-490f-b059-60cd753346ef+-------------------+-----------------------------------------------------------------------------------------------------------+| Field | Value |+-------------------+-----------------------------------------------------------------------------------------------------------+| admin_state_up | UP || agent_type | L3 agent || alive | :-) || availability_zone | nova || binary | neutron-l3-agent || configuration | {'agent_mode': 'dvr_snat', 'handle_internal_only_routers': True, 'external_network_bridge': '', || | 'gateway_external_network_id': '', 'interface_driver': 'neutron.agent.linux.interface.OVSInterfaceDriver',|| | 'log_agent_heartbeats': False, 'routers': 1, 'ex_gw_ports': 1, 'interfaces': 1, 'floating_ips': 0} || created_at | 2024-07-26 16:01:42 || description | None || ha_state | None || host | cpn003 || id | ed72b979-bc2d-490f-b059-60cd753346ef || last_heartbeat_at | 2024-07-29 11:23:25 || name | None || resources_synced | None || started_at | 2024-07-26 16:01:42 || topic | l3_agent |+-------------------+-----------------------------------------------------------------------------------------------------------+ -
Получите список роутеров на L3 агенте, с которого выполняется миграция:
# openstack router list --agent <ИСХОДНЫЙ_L3>Здесь
<ИСХОДНЫЙ_L3>— идентификатор L3 агента, с которого выполняется миграция.Пример команды и ожидаемого результата# openstack router list --agent fbce1819-9e94-4550-b694-da14e00cf6f3+--------------------------------------+--------+--------+-------+----------------------------------+-------------+-------+| ID | Name | Status | State | Project | Distributed | HA |+--------------------------------------+--------+--------+-------+----------------------------------+-------------+-------+| f0620d62-ab42-4ff7-bbec-5e5440446517 | router | ACTIVE | UP | ec5bd160e5ea4d8fb7ed07a099118437 | True | False |+--------------------------------------+--------+--------+-------+----------------------------------+-------------+-------+ -
Выполните миграцию роутеров:
-
Проверьте, что роутер размещен на агенте, с которого будет выполняться миграция:
# openstack network agent list --router <РОУТЕР>Здесь
<РОУТЕР>— идентификатор роутера.Пример команды и ожидаемого результата# openstack network agent list --router f0620d62-ab42-4ff7-bbec-5e5440446517+--------------------------------------+------------+--------+-------------------+-------+-------+------------------+| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |+--------------------------------------+------------+--------+-------------------+-------+-------+------------------+| fbce1819-9e94-4550-b694-da14e00cf6f3 | L3 agent | cpn001 | nova | :-) | UP | neutron-l3-agent |+--------------------------------------+------------+--------+-------------------+-------+-------+------------------+ -
Удалите роутер с агента, на котором он расположен, и добавьте его на агент, выбранный ранее для миграции.
# openstack network agent remove router <ИСХОДНЫЙ_L3> <РОУТЕР> --l3# openstack network agent add router <ЦЕЛЕВОЙ_L3> <РОУТЕР> --l3Здесь:
<ИСХОДНЫЙ_L3>— идентификатор L3 агента, с которого выполняется миграция.<ЦЕЛЕВОЙ_L3>— идентификатор L3 агента, на который выполняется миграция.<РОУТЕР>— идентификатор роутера, который нужно перенести.
Пример команд# openstack network agent remove router fbce1819-9e94-4550-b694-da14e00cf6f3 f0620d62-ab42-4ff7-bbec-5e5440446517 --l3# openstack network agent add router 7604e0c3-9ca9-484e-82a8-94930252f82e f0620d62-ab42-4ff7-bbec-5e5440446517 --l3
-
-
Проверьте, что роутер запустился на агенте после миграции:
# openstack network agent list --router <РОУТЕР>Здесь
<РОУТЕР>— идентификатор роутера.Пример команды и ожидаемого результата# openstack network agent list --router f0620d62-ab42-4ff7-bbec-5e5440446517+--------------------------------------+------------+--------+-------------------+-------+-------+------------------+| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |+--------------------------------------+------------+--------+-------------------+-------+-------+------------------+| 7604e0c3-9ca9-484e-82a8-94930252f82e | L3 agent | cpn002 | nova | :-) | UP | neutron-l3-agent |+--------------------------------------+------------+--------+-------------------+-------+-------+------------------+ -
Проверьте доступность роутера с помощью команды
ping. -
Проверьте, что пространство имен (namespace) роутера есть на узле, на который он был перенесен:
$ sudo ip netns | grep <РОУТЕР>Здесь
<РОУТЕР>— идентификатор перенесенного роутера.Пример команды и ожидаемого результата# ip netns | grep f0620d62-ab42-4ff7-bbec-5e5440446517snat-f0620d62-ab42-4ff7-bbec-5e5440446517 (id: 123)qrouter-f0620d62-ab42-4ff7-bbec-5e5440446517 (id: 122)