VK Private Cloud logo
Помощь
Обновлена 10 сентября 2026 г. в 11:07

Миграция вычислительной нагрузки с конвергентных узлов

В редакции Light Cloud сервисы слоя управления расположены на вычислительных узлах. Такие объединенные узлы называются конвергентными. Пока конвергентные узлы совмещают роли слоя управления и compute, масштабирование инсталляции ограничено.

Чтобы снять это ограничение:

  1. Перенесите с узла вычислительную нагрузку:

    1. Мигрируйте ВМ.
    2. (Опционально) Мигрируйте диски High-IOPS.
  2. Снимите с узла роль compute:

    1. Измените конфигурацию Inventory.
    2. Остановите и удалите сервисы compute.
    3. Настройте мониторинг.
    4. (Опционально) Удалите агент NVMeBox.

После удаления роли compute узлы продолжают выполнять функции слоя управления. Дальнейшее масштабирование инсталляции выполняется по общим принципам.

Шаг 1. Перенос вычислительной нагрузки

Миграция ВМ

  1. Подготовьте OpenStack CLI к работе от имени администратора (подробнее — в разделе OpenStack CLI для администратора).

  2. Определите, на каких узлах размещены ВМ:

    # openstack server list --all-projects --long -c Host -c Name -c ID -c Status
  3. Выполните живую миграцию ВМ, размещенных на конвергентных узлах, на выделенные вычислительные узлы:

    # openstack --os-compute-api-version 2.30 server migrate --live-migration --host <ВЫЧИСЛИТЕЛЬНЫЙ_УЗЕЛ> <ВМ>

    Здесь:

    • <ВЫЧИСЛИТЕЛЬНЫЙ_УЗЕЛ> — имя целевого выделенного вычислительного узла.
    • <ВМ> — идентификатор ВМ.

    Подробнее о живой миграции ВМ — в разделе Миграция ВМ между гипервизорами.

  4. Проверьте статус миграции:

    # openstack server migration list
  5. Убедитесь, что на конвергентных узлах не осталось ВМ:

    # openstack server list --host <УЗЕЛ> --all-projects

    Здесь <УЗЕЛ> — имя конвергентного узла. Пример: cpn001.

Миграция дисков High-IOPS

Если на конвергентном узле размещены диски High-IOPS, измените тип диска.

  1. Найдите диски High-IOPS, расположенные на конвергентном узле. Пример для узла cpn002:

    # host=cpn002for i in $(openstack volume list -f value --all-projects --long -c ID -c Type | grep high-iops | cut -d ' ' -f1);doopenstack volume show $i | grep ${host}@high-iops >> /dev/null && echo Volume ID to migration: $i;done
  2. Измените тип диска:

    # cinder retype --migration-policy on-demand --availability-zone <ЗОНА_ДОСТУПНОСТИ> <ДИСК> ceph

    Здесь:

    • <ЗОНА_ДОСТУПНОСТИ> — зона доступности диска. Пример: AZ1.
    • <ДИСК> — идентификатор диска.

Шаг 2. Удаление роли compute

Изменение конфигурации Inventory

  1. Подключитесь к деплой-ноде по SSH (подробнее — в разделе Подключение к деплой-ноде).

  2. Если в инсталляции есть компонент NVMeBox, в файле vkcloud.yml удалите агенты NVMeBox с конвергентных узлов из секции vkcloud_nvmebox_agent:

    vkcloud_nvmebox_agent:  hosts:#      cpn001:#        sanlock_host_id: 301#      cpn002:#        sanlock_host_id: 302#      cpn003:#        sanlock_host_id: 303    kcn001:      sanlock_host_id: 201    kcn002:      sanlock_host_id: 202
  3. В файле vkcloud.yml удалите конвергентные узлы из группы vkcloud_compute:

    vkcloud_compute:  vars: null  children:    vkcloud_compute_common:      children:        vkcloud_compute_common_az1:          vars:            az: '{{ availability_zones["az1"] | upper }}'          hosts:            kcn001: {}            kcn002: {}#            cpn001: null#            cpn002: null#            cpn003: null
  4. В шаблоне Zabbix удалите группу Hybrid Compute из секции zabbix_groups_map_tmp:

    zabbix_groups_map_tmp:...# Hybrid Compute:#   meta:#    - hybrid_compute#   templates:#     - Openstack Hybrid Compute Processes#     - prod_hyper_arp#     - Iptables and nw_filter#     - Linux by Zabbix agent#     - rsyslog-audit#     - Evacuation Controller#     - Openstack OVS monitoring#     - conntrack#     - Openstack Agents Monitoring#     - Openstack Network Entities Monitoring...
  5. В файле group_vars/vkcloud_compute/vars.yml задайте параметру nova_use_shared_hosts значение false:

    nova_use_shared_hosts: false

Остановка и удаление сервисов compute

Для каждого конвергентного узла:

  1. Удалите сервисы Nova:

    1. Подготовьте OpenStack CLI к работе от имени администратора (подробнее — в разделе OpenStack CLI для администратора).

    2. Определите идентификаторы сервисов Nova для узла:

      # openstack compute service list --service nova-compute --host <УЗЕЛ>

      Здесь <УЗЕЛ> — имя конвергентного узла.

    3. Удалите сервисы. Для каждого сервиса выполните команду:

      # nova service-delete <СЕРВИС>

      Здесь <СЕРВИС> — идентификатор сервиса, полученный на предыдущем шаге.

  2. Отключите сервис openstack-nova-compute:

    1. Подключитесь по SSH к конвергентному узлу:

      $ ssh <УЗЕЛ>$ sudo -i

      Здесь <УЗЕЛ> — имя конвергентного узла.

    2. Отключите сервис:

      # systemctl disable openstack-nova-compute.service --now
  3. Очистите очереди узла в RabbitMQ:

    1. На конвергентном узле подключитесь к одному из узлов кластера RabbitMQ для Nova:

      # kubectl -n rabbitmq exec -it rabbitmq-nova-0 -- bash
    2. Проверьте очереди конвергентного узла:

      # rabbitmqctl list_queues | grep <УЗЕЛ>

      Здесь <УЗЕЛ> — имя конвергентного узла.

      Очереди не должны содержать сообщений (параметр messages должен иметь значение 0).

    3. Очистите очереди, в которых есть сообщения. Для каждой очереди выполните команду:

      # rabbitmqctl purge_queue <ОЧЕРЕДЬ>

      Здесь <ОЧЕРЕДЬ> — название очереди, в которой есть сообщения.

  4. Удалите узел из Nova Placement:

    1. Получите токен аутентификации (подробнее — в разделе Получение токена аутентификации):

      # export TOKEN=$(openstack token issue -c id -f value)
    2. Получите эндпоинт Placement:

      # export PLACEMENT_ENDPOINT=$(openstack endpoint list -f value --column URL --service placement --interface internal)
    3. Получите идентификатор resource_provider конвергентного узла:

      # curl -s -H "Content-Type: application/json" -H "X-Auth-Token: $TOKEN" ${PLACEMENT_ENDPOINT}/resource_providers?name=<УЗЕЛ>

      Здесь <УЗЕЛ> — имя конвергентного узла.

      Формат ответа
      {"resource_providers": [{"uuid": "<RESOURCE_PROVIDER>", ...}]}
    4. Проверьте, есть ли на узле используемые ресурсы:

      # curl -s -H "Content-Type: application/json" -H "X-Auth-Token: $TOKEN" ${PLACEMENT_ENDPOINT}/resource_providers/<RESOURCE_PROVIDER>/allocations

      Здесь <RESOURCE_PROVIDER> — идентификатор resource_provider, полученный на предыдущем шаге.

    5. Если в результате выполнения команды получен пустой объект "allocations": {}, удалите resource_provider:

      # curl -v -X DELETE -H "Content-Type: application/json" -H "X-Auth-Token: $TOKEN" ${PLACEMENT_ENDPOINT}/resource_providers/<RESOURCE_PROVIDER>

      Здесь <RESOURCE_PROVIDER> — идентификатор resource_provider, полученный ранее.

  5. Восстановите конфигурацию сервисов Nova:

    1. Подключитесь по SSH к конвергентному узлу:

      $ ssh <УЗЕЛ>$ sudo -i

      Здесь <УЗЕЛ> — имя конвергентного узла.

    2. Сохраните параметры конфигурации nova-compute:

      # mkdir nova-compute.conf.d.bak# mv /etc/nova/nova-compute.conf.d ./nova-compute.conf.d.bak/
    3. Удалите пакет openstack-nova-compute и обновите конфигурацию systemd:

      # dnf remove openstack-nova-compute -y# systemctl daemon-reload

Настройка мониторинга

Для каждого конвергентного узла выполните действия:

  1. Выполните вход на Портал мониторинга с учетной записью администратора Платформы (подробнее — в разделе Портал мониторинга).
  2. Перейдите в раздел ConfigurationHosts.
  3. Нажмите на имя узла.
  4. В поле Groups удалите группу Hybrid Compute.
  5. Нажмите кнопку Update.

Удаление агента NVMeBox

Для каждого узла, с которого был удален агент NVMeBox при изменении конфигурации Inventory, выполните действия:

  1. Подключитесь по SSH к конвергентному узлу:

    $ ssh <УЗЕЛ>$ sudo -i

    Здесь <УЗЕЛ> — имя конвергентного узла.

  2. Отключите сервис:

    # systemctl disable --now nvmebox-agent.service
Была ли статья полезна?