Миграция позволяет перенести управление виртуальными машинами (ВМ) из панели VMmanager 5 KVM в платформу VMmanager 6. Миграция включает перенос:

  • адресного пространства — используемых IP-адресов, пулов и сетей;
  • учётных записей пользователей;
  • ограничений доступа к ВМ;
  • пользователей BILLmanager, если была настроена интеграция.

Для мигрируемых ВМ платформа создаст временный кластер с ограниченной функциональностью. После миграции вы можете перенести ВМ из этого кластера в другие кластеры платформы.

Обратите внимание!

В статье описана миграция из панели управления VMmanager 5 KVM. Если вы используете VMmanager 5 OVZ, ВМ можно перенести вручную по инструкции из статьи Перенос OVZ-контейнера в LXD-кластер

Ограничения миграции


Вы можете перенести в VMmanager 6 любой кластер из VMmanager 5. Дальнейшая миграция ВМ в кластеры VMmanager 6 имеет ограничения в текущей версии платформы:

ОграничениеВозможное решение
для узлов кластера с QEMU версии ниже 2.0.0 недоступна "живая" миграция ВМвыключить ВМ перед миграцией
изменение типа хранилища может привести к временной недоступности ВМне менять тип хранилища при миграции
у ВМ не должно быть сетевых интерфейсов, подключённых к NATизменить сетевую конфигурацию ВМ
к каждому сетевому мосту узла кластера должно быть подключено не более одного интерфейса ВМудалить интерфейс ВМ или подключить его к свободному сетевому мосту
у ВМ не должно быть созданных снимков (snapshot)удалить снимки перед миграцией
у ВМ не должно быть подключённых ISO-образовотключить ISO-образы перед миграцией
диск ВМ должен находиться в локальном хранилище — файловом или LVMвозможность миграции появится в следующих версиях платформы

Миграция ВМ возможна в кластеры с сетевой настройкой "Коммутация" или IP-fabric.

Для миграции лицензия на панель управления VMmanager 5 должна быть активной.

Tребования к сетевым настройкам


У каждого сервера должно быть уникальное имя хоста (hostname).

Разрешите подключения на порты:

  • между сервером с панелью управления VMmanager 5 и платформой VMmanager 6:
    • 22/tcp — SSH;
    • 5900-6900/tcp — QEMU VNC, SPICE;
    • 6514/tcp — сервис управления виртуальными машинами libvirt;
    • 49152-49261/tcp — сервисы миграции libvirt;
    • 443/tcp — HTTPS;
  • между узлами кластера VMmanager 5 и узлами кластера VMmanager 6:
    • 22/tcp — SSH;
    • 49152-49261/tcp — сервисы миграции libvirt;
    • 443/tcp — HTTPS;
  • между узлами кластера VMmanager 5 и платформой VMmanager 6:
    • 22/tcp — SSH;
    • 5900-6900/tcp — QEMU VNC, SPICE;
    • 6514/tcp — сервис управления виртуальными машинами libvirt;
    • 49152-49261/tcp — сервисы миграции libvirt;
    • 443/tcp — HTTPS.

Если у VMmanager 5 настроена интеграция с IPmanager 5 или BILLmanager, платформа VMmanager 6 должна иметь доступ к портам IPmanager5 или BILLmanager:

  • 22/tcp — SSH;
  • 443/tcp — HTTPS;
  • 3306/tcp, 3306/udp - cервер MySQL IPmanager или BILLmanager;

Если BILLmanager находится за сервисом защиты от DDoS, в настройках миграции необходимо указать IP-адрес сервера BILLmanager с открытыми портами 22/tcp и 443/tcp. При миграции в BILLmanager изменяются идентификаторы услуг и пользователей, и VMmanager 6 может создавать большое количество запросов в BILLmanager, что может привести к блокировке таких запросов защитой от DDoS.

Порт 22/tcp должен быть доступен для всех узлов кластера и при необходимости для публичной сети.

Если доступ к QEMU VNC, SPICE осуществляется только через сервер с VMmanager, диапазон портов 5900-6900/tcp должен быть открыт для сети, объединяющей узлы кластера.

Порядок миграции


Импорт адресного пространства

Для управления адресным пространством VMmanager 5 и VMmanager 6 используют разное ПО:

  • VMmanager 5 — панель управления IPmanager 5;
  • VMmanager 6 — встроенный модуль IPmanager 6.

При миграции вы можете импортировать адресное пространство из IPmanager 5 в IPmanager 6.

IPmanager 6 поддерживает режим эмуляции API IPmanager 5. Если вы используете другие программные продукты, которым требуется интеграция с IPmanager 5 (например, BILLmanager, DCImanager 5, ISPmanager), вы сможете перенастроить их на работу с IPmanager 6.

Пример управления адресным пространством

Импорт кластера VMmanager 5

Чтобы импортировать кластер VMmanager 5, сервис миграции:

  1. Подключается к VMmanager 5 и получает информацию о сущностях, созданных в панели управления — ВМ, пользователях, настройках кластера.
  2. Блокирует работу VMmanager 5.
  3. Создаёт резервную копию платформы VMmanager 6.
  4. Импортирует информацию о настройках VMmanager 5 в VMmanager 6.

  5. Если в VMmanager 5 была настроена интеграция с BILLmanager:
    1. Подключается к BILLmanager.
    2. Меняет тип обработчика услуг на VMmanager 6.
    3. Добавляет в VMmanager 6 пользователей BILLmanager с услугами VMmanager 5.

Перенос пользователей VMmanager 5

Если в настройках пользователя VMmanager 5 был указан e-mail, то в VMmanager 6 будет создана учётная запись с этим e-mail.

Если e-mail в настройках пользователя VMmanager 5 не указан, то в VMmanager 6 будет создана учётная запись вида username@vm5.imported, где username — имя пользователя VMmanager 5.

Подготовка к миграции


VMmanager 5

  1. Создайте резервную копию ВМ и панели управления. Подробнее см. в статье Управление планами резервного копирования документации VMmanager 5.
  2. Разрешите доступ к серверу по SSH-ключу:
    1. В файле /etc/ssh/sshd_config укажите параметр 

      PubkeyAuthentication yes
      CODE
    2. Перезапустите службу sshd: 

      systemctl restart sshd
      CODE
  3. Определите используемое количество ядер CPU на узлах кластера: 

    dmidecode --type processor | grep -i "core enabled"
    CODE

VMmanager 6

  1. Убедитесь, что лицензия VMmanager 6 содержит достаточное количество ядер CPU для подключения всех узлов кластера из VMmanager 5. При необходимости приобретите лицензию, поддерживающую большее количество ядер.
  2. Если платформа не установлена:
    1. Убедитесь, что сервер для VMmanager 6 удовлетворяет системным требованиям.
    2. Установите VMmanager 6 по инструкции.
    3. Выполните начальную настройку платформы.

BILLmanager

  1. Создайте сотрудника для настройки интеграции. При создании включите опцию Полный доступ. Подробнее см. в статье документации BILLmanager Сотрудники, отделы, права доступа.
  2. Создайте обработчик VMmanager 6 и тарифные планы для услуг виртуальных серверов.
  3. Создайте резервную копию BILLmanager. Подробнее см. в статье Резервное копирование документации BILLmanager.
  4. Сформируйте ключ для авторизации:
    1. Подключитесь к серверу с BILLmanager по SSH с правами суперпользователя. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
    2. Выполните команду:

      /usr/local/mgr5/sbin/mgrctl -m billmgr session.newkey username='<integration_user>' key='<secret_key>'
      CODE

      <integration_user> — имя пользователя для настройки интеграции

      <secret_key> — ключ для авторизации — случайная комбинация длиной не менее 16 символов

    3. Сохраните значение ключа.

IPmanager 5

  1. Убедитесь, что IPmanager 5 использует СУБД MySQL или MariaDB. Если IPmanager 5 использует СУБД SQLite, перейдите на использование СУБД MySQL. Подробнее см. в статье Использование MySQL в качестве СУБД документации IPmanager. 

    Обратите внимание!

    Рекомендуемая версия MySQL/MariaDB – не ниже 5.5.x. Для более ранних версий успешный импорт ВМ не гарантируется.

  2. Убедитесь, что cервер MySQL доступен со стороны VMmanager 6 — проверьте открыты ли в настройках файрвола порты 3306/TCP, 3306/UDP и возможно ли удалённое подключение к БД:
    1. Подключитесь к серверу IPmanager 5 по SSH.
    2. Проверьте текущие настройки файрволла:

      firewall-cmd --list-all
      CODE
    3. Откройте порты 3306/TCP, 3306/UDP:

      firewall-cmd --permanent --add-port=3306/tcp
      firewall-cmd --permanent --add-port=3306/udp
      CODE
    4. Перезапустите сервис файрволла:

      service firewalld restart
      CODE
    5. Откройте конфигурационный файл MySQL /etc/my.cnf. В раздел [mysqld] добавьте параметр bind-address=xxx.xxx.xx.x и закомментируйте строку с параметром skip-networking.

      xxx.xxx.xx.x — IP-адрес сервера с IPmanager 5

    6. Подключитесь к сервису mysql:

      mysql -u root
      CODE
      use mysql;
      CODE
    7. Разрешите пользователю удалённое подключение к MySQL:

      GRANT ALL PRIVILEGES ON <DB_NAME> . * TO '<DB_USER>'@'<REMOTE_IP>' IDENTIFIED BY '<DB_PASSWORD>';
      CODE

      <DB_NAME> — имя базы данных

      <DB_USER> — имя пользователя, которому разрешено удалённое подключение

      <REMOTE_IP> — IP-адрес сервера, с которого будет удалённое подключение

      <DB_PASSWORD> — пароль пользователя, которому разрешено удалённое подключение

      FLUSH PRIVILEGES;
      CODE

Миграция


Миграция IP-адресов

  1. Перейдите в Миграция Мигрировать IP-адреса из IPmanager 5 .
  2. Укажите настройки подключения к IPmanager 5:

    Обратите внимание!

    Настройки подключения указаны в конфигурационном файле IPmanager /usr/local/mgr5/etc/ipmgr.conf:

    • Адрес сервера с IPmanager — параметр DBHost;
    • Имя базы данных — параметр DBName;
    • Логин пользователя для интеграции — параметр DBUser;
    • Пароль — параметр DBPassword.


    1. Адрес сервера с IPmanager — IP-адрес БД IPmanager 5;
    2. Имя базы данных — имя БД IPmanager 5;
    3. Логин пользователя для интеграции — имя пользователя БД IPmanager 5;
    4. Пароль — пароль пользователя БД IPmanager 5.
  3. Нажмите Мигрировать IP.
  1. Создайте на сервере с IPmanager 5 пользователя для интеграции. Пользователю должны быть доступны все типы адресов, которые нужно перенести. Подробнее о типах адресов см. в статье Управление группами IP-адресов документации IPmanager.
  2. Подключитесь к серверу с VMmanager 6 по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.

  3. Перейдите в контейнер ipmgr:

    docker exec -it ipmgr bash
    BASH
  4. Перейдите в директорию /opt/ispsystem/ipmgr/:

    cd /opt/ispsystem/ipmgr/
    BASH
  5. Запустите импорт:

    bin/mgr5import --dbhost <db_ip> --dbname <db_name> --dbuser <db_user> --dbpassword <db_pass> --user <ipmgr_user>
    CODE

    <db_ip> — IP-адрес БД IPmanager 5

    <db_name> — имя БД IPmanager 5

    <db_user> — имя пользователя БД IPmanager 5

    <db_pass> — пароль пользователя БД IPmanager 5

    <ipmgr_user> — имя пользователя IPmanager 5, созданного для интеграции

    Обратите внимание!

    Вы можете не использовать параметр --user. В этом случае VMmanager 6 выполнит импорт всей БД IPmanager 5 и создаст пулы IP-адресов вида USERNAME_GROUPNAME, где USERNAME — имя пользователя IPmanager, GROUPNAME — имя группы адресов IPmanager.

    --noip — не конвертировать IP-адреса.

    --nohistory — не конвертировать историю IP-адресов.

    --debug — вывод лога команды в stdout.

    Вы можете проверить выполнение команды по лог-файлу /var/log/ipmgr5_import.log в контейнере ipmgr на сервере с VMmanager.

    Пример вывода команды

  6. Выйдите из контейнера: 

    exit
    BASH

Чтобы VMmanager 5 и BILLmanager могли работать с IPmanager 6:

  1. Если требуется доступ только к определённому пулу IP-адресов, создайте в VMmanager 6 пул с суффиксом public. Например, VM5_public.
  2. Создайте в VMmanager 6 учётную запись администратора с именем ipmgr5@example.com.

    Обратите внимание!

    ipmgr5@example.com — не пример, а точное имя, которое нужно указать при создании учётной записи.

  3. В VMmanager 5 и BILLmanager:
    1. Перейдите в ИнтеграцияIPmanager.
    2. Укажите настройки для интеграции:
      1. URLhttps://domain.com/api/ipmgr5/v3/ipmgr

        domain.com — доменное имя или IP-адрес сервера с VMmanager.

      2. Имя пользователя:

        • чтобы панель управления имела доступ только к определённому пулу IP-адресов, укажите pool_XXX;

          XXX — префикс пула в VMmanager. Например, для пула VM5_public укажите имя пользователя pool_VM5.

        • чтобы панель управления имела доступ ко всему адресному пространству, укажите произвольное имя пользователя.
      3. Пароль — пароль пользователя ipmgr5@example.com.
      4. В секции Синхронизация списка IP-адресов оставьте пустыми поля Логин администратора и Пароль администратора.
    3. Нажмите Ok.

Если у VMmanager 6 настроена интеграция с DNSmanager 6, то после создания адресного пространства необходимо синхронизировать PTR-записи с DNS-сервером. Для этого:

  1. Удалите модуль "Интеграция с DNSmanager 6": Настройки Модули Интеграция с DNSmanager 6 Удалить модуль Удалить модуль .
  2. Повторно установите и настройте модуль интеграции. Подробнее см. в статье Модуль "Интеграция с DNSmanager 6".

Проверить выполнение синхронизации вы можете по лог-файлу /var/log/dns_proxy_integration.log в контейнере vm_dns_proxy_1 на сервере с VMmanager.

Миграция виртуальных машин

Обратите внимание!

Вы можете перенести виртуальные машины из нескольких экземпляров VMmanager 5 в один экземпляр VMmanager 6. Для ВМ из каждого экземпляра VMmanager 5 будет создан отдельный временый кластер.

  1. Перейдите в Миграция Мигрировать виртуальные машины из VMmanager 5.
  2. Укажите настройки миграции:
    1. Название временного кластера, который будет создан в VMmanager 6.
    2. SSH-адрес сервера VMmanager 5.
    3. Имя пользователя SSH для подключения к серверу с VMmanager 5.
    4. SSH-порт.
  3. Скопируйте Публичный ssh-ключ и добавьте его в файл ~/.ssh/authorized_keys на сервере с VMmanager 5.

  4. Укажите настройки подключения к BILLmanager, если у VMmanager 5 настроена интеграция:
    1. Адрес сервера BILLmanager 5 — IP-адрес или доменное имя сервера.
    2. Логин администратора панели — введите имя сотрудника для интеграции, созданного при подготовке BILLmanager.

    3. Временный ключ, созданный при подготовке BILLmanager.
    4. Название обработчика VMmanager 5.
  5. Нажмите Мигрировать VMmanager 5.

Если миграция завершилась с ошибкой вида 

{
  "error": {
    "code": 1111,
    "msg": "Handler throw uncaught exception",
    "value": "vm/import/cluster Can not load a vm5_data file"
  }
}
YML

проверьте доступно ли SSH-подключение из контейнера vm_box сервера с VMmanager 6 на основной узел VMmanager 5.

IP-адрес основного узла VMmanager 5 указан в параметре MainIp конфигурационного файла /usr/local/mgr5/etc/vmmgr.conf на сервере с VMmanager 5.

Перенос ВМ из временного кластера

Для ВМ из VMmanager 5 создаётся временный кластер с типом VM5 KVM и сетевой настройкой "Коммутация". Доступные операции с ВМ во временном кластере:

  • запуск;
  • остановка;
  • перезагрузка;
  • подключение по VNC и SPICE;
  • удаление;
  • миграция на другой узел кластера;
  • миграция в другой кластер, если конфигурация ВМ соответствует требованиям.

Чтобы на мигрируемых ВМ были доступны все функции, перенесите их в другие кластеры платформы.

Если ВМ не удовлетворяет требованиям для переноса в кластер VMmanager 6, рядом с её названием отображается ссылка Миграция в кластер VM6 недоступна. Чтобы получить подробную информацию, нажмите на ссылку.

Если у ВМ есть сетевые интерфейсы, подключённые к NAT, измените сетевую конфигурацию ВМ:

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

  2. Выведите список виртуальных сетей на узле:

    virsh net-list
    BASH

    Пример ответа

     Name                 State      Autostart     Persistent
    
    ----------------------------------------------------------
     default              active     yes           yes
     DefaultBridge        active     yes           yes
     NAT_192.168.168.1    active     yes           yes
    CODE
  3. Определите какая сеть относится к NAT. Для этого для каждой сети выполните команду: 

    virsh net-dumpxml <network> | grep 'forward mode'
    BASH

    <network> — имя сети

    Примеры ответов: 

    Сеть типа NAT

    <forward mode='nat'>
    CODE

    Сеть типа bridge

    <forward mode='open'/>
    CODE
  4. Изучите файл конфигурации ВМ: 

    virsh dumpxml <VM_domain>
    BASH

    <VM_domain> — доменное имя ВМ

  5. Отредактируйте конфигурацию libvirt:

    virsh edit <VM_domain>
    BASH

    <VM_domain> — доменное имя ВМ

    В файле нужно заменить строку вида 

    <source network='<nat_network>' bridge='<virt_interface>'/>
    CODE

    <nat_network> — имя сети типа NAT

    <virt_interface> — имя виртуального интерфейса

    на строку вида 

    <source network='<bridge_network>'/>
    CODE

    <bridge_network> — имя сети типа bridge

  6. Подключитесь к серверу с платформой по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.

  7. Удалите записи об интерфейсах из БД: 

    В связи с поэтапным переходом платформы на использование СУБД PostgreSQL, разные экземпляры VMmanager могут использовать разные СУБД:

    • VMmanager Hosting — MySQL;
    • VMmanager Infrastructure:
      • для новых установок на ОС Astra Linux, начиная с версии VMmanager 2023.06.1 — PostgreSQL;
      • в остальных случаях — MySQL.

    Чтобы определить тип СУБД, выполните на сервере с платформой команду: 

    docker ps --filter name=pgsql
    BASH

    Пример ответа

    CONTAINER ID   IMAGE         COMMAND                  CREATED      STATUS      PORTS      NAMES
    3213c5dc94d0   postgres:12   "docker-entrypoint.s…"   5 days ago   Up 4 days   5432/tcp   pgsql
    CODE

    Если вывод команды содержит информацию о контейнере, платформа использует PostgreSQL, если ответ пустой — MySQL.

    MySQL

    docker exec -it mysql bash -c "mysql isp -p\$MYSQL_ROOT_PASSWORD" 
    BASH

    PostgreSQL

    docker exec -it pgsql bash -c "psql -d isp"
    BASH
    DELETE FROM vm_host_interfaces WHERE host = <VM_id> AND node_bridge IS NULL ;
    SQL

    <VM_id> — id ВМ

    Вмешательство в базу данных предполагает потенциальный риск. Мы не рекомендуем вносить ручные правки в базу, поскольку это может нарушить корректную работу платформы.

    Инструкции по внесению изменений в БД следует выполнять только после резервного копирования платформы. 

    \q
    SQL
  8. Перезапустите ВМ.

Если у ВМ есть снимки (snapshots), удалите их:

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

  2. Проверьте, что снимки подключены: 

    virsh snapshot-list <VM_domain>
    BASH

    <VM_domain> — доменное имя ВМ

  3. Подключитесь к серверу с платформой по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.

  4. Удалите записи о снимках из БД:

    В связи с поэтапным переходом платформы на использование СУБД PostgreSQL, разные экземпляры VMmanager могут использовать разные СУБД:

    • VMmanager Hosting — MySQL;
    • VMmanager Infrastructure:
      • для новых установок на ОС Astra Linux, начиная с версии VMmanager 2023.06.1 — PostgreSQL;
      • в остальных случаях — MySQL.

    Чтобы определить тип СУБД, выполните на сервере с платформой команду: 

    docker ps --filter name=pgsql
    BASH

    Пример ответа

    CONTAINER ID   IMAGE         COMMAND                  CREATED      STATUS      PORTS      NAMES
    3213c5dc94d0   postgres:12   "docker-entrypoint.s…"   5 days ago   Up 4 days   5432/tcp   pgsql
    CODE

    Если вывод команды содержит информацию о контейнере, платформа использует PostgreSQL, если ответ пустой — MySQL.

     

    MySQL

    docker exec -it mysql bash -c "mysql isp -p\$MYSQL_ROOT_PASSWORD" 
    BASH

    PostgreSQL

    docker exec -it pgsql bash -c "psql -d isp"
    BASH
    DELETE FROM vm_snapshot WHERE host = <VM_id> ;
    SQL
    UPDATE vm_host SET vm5_data=json_replace(vm5_data,'$.snapshot',json_array()) WHERE id= <VM_id> ;
    SQL

    <VM_id> — id ВМ

    Вмешательство в базу данных предполагает потенциальный риск. Мы не рекомендуем вносить ручные правки в базу, поскольку это может нарушить корректную работу платформы.

    Инструкции по внесению изменений в БД следует выполнять только после резервного копирования платформы. 

    \q
    SQL

Если к ВМ подключены ISO-образы, отключите их:

  1. Подключитесь к узлу временного кластера по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
  2. Изучите файл конфигурации ВМ: 

    virsh dumpxml <VM_domain>
    BASH

    <VM_domain> — доменное имя ВМ

    Раздел с описанием ISO-образа имеет вид: 

    Пример описания

    <disk type='file' device='cdrom'>
    <driver name='qemu' type='raw'/>
    <source file='/nfsshare/iso/tQVJGvq2bYQNWdvD2xB14xB1J111v11'/>
    <backingStore/>
    <target dev='hda' bus='ide'/>
    <readonly/>
    <boot order='2'/>
    <alias name='ide0-0-0'/>
    <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    CODE

    Сохраните имя устройства из параметра target dev. В примере выше это hda.

  3. Отредактируйте конфигурацию libvirt:

    virsh edit <VM_domain>
    BASH

    <VM_domain> — доменное имя ВМ

    Из файла нужно удалить разделы с описанием ISO-образов.

  4. Подключитесь к серверу с платформой по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.

  5. Удалите записи об ISO-образах из БД:

    Вмешательство в базу данных предполагает потенциальный риск. Мы не рекомендуем вносить ручные правки в базу, поскольку это может нарушить корректную работу платформы.

    Перед внесением изменений в БД создайте резервную копию платформы. 

    В связи с поэтапным переходом платформы на использование СУБД PostgreSQL, разные экземпляры VMmanager могут использовать разные СУБД:

    • VMmanager Hosting — MySQL;
    • VMmanager Infrastructure:
      • для новых установок на ОС Astra Linux, начиная с версии VMmanager 2023.06.1 — PostgreSQL;
      • в остальных случаях — MySQL.

    Чтобы определить тип СУБД, выполните на сервере с платформой команду: 

    docker ps --filter name=pgsql
    BASH

    Пример ответа

    CONTAINER ID   IMAGE         COMMAND                  CREATED      STATUS      PORTS      NAMES
    3213c5dc94d0   postgres:12   "docker-entrypoint.s…"   5 days ago   Up 4 days   5432/tcp   pgsql
    CODE

    Если вывод команды содержит информацию о контейнере, платформа использует PostgreSQL, если ответ пустой — MySQL.

     

    MySQL

    docker exec -it mysql bash -c "mysql isp -p\$MYSQL_ROOT_PASSWORD" 
    BASH

    PostgreSQL

    docker exec -it pgsql bash -c "psql -d isp"
    BASH
    DELETE FROM vm_disk WHERE host = <VM_id> AND target_dev = <device_name> ;
    SQL

    <VM_id> — id ВМ

    <device_name> — имя устройства

  6. Проверьте наличие основного диска у ВМ: 

    SELECT id,is_main FROM vm_disk WHERE host = <VM_id>;
    SQL

    Если ответ для всех дисков содержит NULL, укажите один из дисков как основной: 

    UPDATE vm_disk SET is_main = 1 WHERE host = <VM_id> AND id = <disk_id>;
    SQL

    <VM_id> — id ВМ

    <disk_id> — id диска

  7. Выйдите из консоли СУБД:

    \q
    SQL
  8. Перезапустите ВМ.

Если на узле VMmanager 5 установлена ОС CentOS 6, после миграции у узла будет статус "Недоступен", а статусы ВМ не будут отображаться. ВМ в таком состоянии невозможно перенести через интерфейс платформы.

Эта проблема связана с тем, что служба мониторинга gomon, используемая в платформе, не поддерживает установку на ОС CentOS 6. Чтобы перенести ВМ с такого узла:

  1. В интерфейсе платформы остановите все ВМ на этом узле.
  2. Подключитесь к узлу по SSH. 
  3. Проверьте статус ВМ: 

    virsh list --all
    BASH

    Пример вывода

     Id    Name                          State
    -----------------------------------------------
     606   2689_halloween_rubellite      running
     609   2690_shadow_almandite         running
     657   1776_olive_wascoite           running
     -     2112_minikube                 shut off
     -     2115_alabaster_siberite       shut off
    CODE
  4. Если вывод команды содержит ВМ со статусом, отличным от shut off, остановите эти ВМ:

    virsh shutdown <VM_domain>
    BASH

    <VM_domain> — имя ВМ в формате <id ВМ>_<название ВМ>. Например, 1776_olive_wascoite

  5. Подключитесь к серверу с платформой по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
  6. Измените статус всех ВМ на "Остановлена":
    1. Откройте консоль СУБД:

      В связи с поэтапным переходом платформы на использование СУБД PostgreSQL, разные экземпляры VMmanager могут использовать разные СУБД:

      • VMmanager Hosting — MySQL;
      • VMmanager Infrastructure:
        • для новых установок на ОС Astra Linux, начиная с версии VMmanager 2023.06.1 — PostgreSQL;
        • в остальных случаях — MySQL.

      Чтобы определить тип СУБД, выполните на сервере с платформой команду: 

      docker ps --filter name=pgsql
      BASH

      Пример ответа

      CONTAINER ID   IMAGE         COMMAND                  CREATED      STATUS      PORTS      NAMES
      3213c5dc94d0   postgres:12   "docker-entrypoint.s…"   5 days ago   Up 4 days   5432/tcp   pgsql
      CODE

      Если вывод команды содержит информацию о контейнере, платформа использует PostgreSQL, если ответ пустой — MySQL.

      MySQL

      docker exec -it mysql bash -c "mysql isp -p\$MYSQL_ROOT_PASSWORD"
      BASH

      PostgreSQL

      docker exec -it pgsql bash -c "psql -d isp"
      BASH
    2. Выполните команду: 

      UPDATE vm_host SET state='stopped' WHERE node=<node_id>;
      SQL

      <node_id> — id узла

    3. Выйдите из консоли СУБД: 

      \q
      CODE
  7. Выполните миграцию ВМ через интерфейс платформы. В параметрах миграции отключите опцию Сжимать диск VM перед миграцией.

Если при миграции в кластер с типом сетевых настроек "IP fabric" у ВМ выбрана модель добавления IP-адресов "Нет автоматизации", то ВМ будет недоступна по сети после переноса. Чтобы избежать этого, выполните перед миграцией настройку сети на ВМ:

  • для ОС на основе Red Hat:
    1. Измените сетевые настройки в файле /etc/sysconfig/network-scripts/ifcfg-<имя интерфейса>

      NETMASK="255.255.255.255"
      GATEWAY="<шлюз для IPv4-сессий>" 
      CODE
    2. Перезапустите сервис network: 

      systemctl restart network
      BASH
  • для ОС на основе Debian:
    1. Измените сетевые настройки в файле /etc/network/interfaces

      NETMASK="255.255.255.255"
      GATEWAY="<шлюз для IPv4-сессий>" 
      CODE

Чтобы узнать IP-адрес шлюза, перейдите в раздел Кластеры → выберите кластер → кнопка ПараметрыНастройки сетиНастройка IP-fabric.

Для корректного переноса ВМ с ОС Windows установите на узле временного кластера утилиту libguestfs-winsupport.

Платформа взаимодействует с ВМ через программу QEMU Guest Agent. Например, QEMU Guest Agent нужен, чтобы VMmanager мог изменить пароль или запустить скрипт на ВМ. Если QEMU Guest Agent на ВМ не установлен или не отвечает, в столбце Состояние у ВМ отображается сообщение Проблема с Guest Agent. Чтобы установить QEMU Guest Agent на ВМ, нажмите на Проблема с Guest AgentУстановить GA и перезапустить ВМ. Вы можете установить QEMU Guest Agent вручную. Подробнее см. в статье Как проверить и восстановить работу QEMU Guest Agent?

Если имя сетевого интерфейса ВМ не было определено, интерфейс будет сохранён с суффиксом no_name. Если таких интерфейсов больше одного, то для миграции в кластер VMmanager 6 на ВМ нужно установить QEMU Guest Agent. 

Перенос ВМ без отключения ("живая" миграция) возможен, если:

  • на узле кластера VMmanager 5 установлен QEMU версии 2.0.0 и выше;
  • версия libvirt на узле кластера VMmanager 6 не ниже версии libvirt на узле кластера VMmanager 5.

В остальных случаях ВМ необходимо отключить перед переносом.

Чтобы перенести ВМ из временного кластера:

  1. Выделите нужные ВМ → еще... → Мигрировать.
  2. Укажите параметры миграции:
    1. Отключите опцию Сжимать диск VM перед миграцией, если сжатие диска не требуется. Опция доступна только для выключенных ВМ.
    2. Отключите опцию Учитывать фильтры распределения, если использование фильтров не требуется. Подробнее о фильтрах распределения см. в статье Управление серверами кластера.
    3. Выберите кластер для миграции.
    4. Выберите узел для миграции.
    5. Выберите Доступные хранилища на узле, в которых будут размещены диски ВМ. Диски одной ВМ могут быть размещены в разных хранилищах.
    6. Изучите информацию в разделе Резюме по VM. Раздел содержит информацию о том, все ли диски распределены и требуется ли для ВМ перезагрузка.
  3. Нажмите Мигрировать (Мигрировать и перезагрузить).

Действия после миграции

После переноса ВМ временный кластер можно удалить. Свободные узлы из временного кластера могут быть подключены к другим кластерам платформы. Перед подключением рекомендуем переустановить ОС на этих узлах.

Перенос услуг в BILLmanager


Если у VMmanager 5 была настроена интеграция с BILLmanager, то сервис миграции:

  1. Изменит тип обработчика услуг с VMmanager 5 на VMmanager 6.
  2. Добавит к его названию префикс _imported.

Новый обработчик создаётся для управления ВМ во временном кластере. Заказ новых услуг через этот обработчик недоступен. После переноса ВМ в другие кластеры платформы переключите услуги на тарифные планы с другим обработчиком VMmanager 6.

Для ручного переноса услуг на новый обработчик:

  1. Подключите для тарифных планов VMmanager 5 обработчик услуг VMmanager 6. Для этого:
    1. Перейдите в ПродуктыТарифные планы → выберите тариф, с которого была продана услуга виртуального сервера для VMmanager 5 → кнопка Обработчики.
    2. Включите обработчик VMmanager 6.
  2. Отключите виртуальные машины из BILLmanager:
    1. Перейдите в Товары/УслугиВиртуальные серверы → выберите все услуги виртуальных серверов VMmanager 5 (зажмите CTRL) → кнопка Изменить.
    2. Нажмите кнопку Выкл.
    3. Подтвердите выключение при помощи кнопки Ok.
  3. Перенесите услуги виртуальных серверов на тарифные планы с обработчиком VMmanager 6:
    1. Перейдите в Товары/УслугиВиртуальные серверы → выберите все услуги виртуальных серверов VMmanager 5 (зажмите CTRL) → кнопка Изменить.
    2. Укажите в поле Модуль обработки обработчик услуг VMmanager 6.
    3. Нажмите Ok.
  4. Включите услуги в BILLmanager.
  5. Удалите сотрудника, созданного для интеграции.

Возможные проблемы


Возможные проблемы при миграции описаны в статье базы знаний Возможные проблемы при миграции с VMmanager 5.

Повторная миграция


Если первый запуск миграции завершился с ошибкой, вы можете выполнить миграцию повторно. Если при первой миграции было импортировано адресное пространство, для повторной миграции удалять его не нужно.

Для миграции услуг из BILLmanager повторно сформируйте ключ для авторизации.

Отмена миграции


Вы можете вернуть управление ВМ в VMmanager 5 после миграции. Отмена миграции возможна, только если ВМ после миграции не были удалены или перенесены в другие кластеры.

Чтобы отменить миграцию:

  1. Восстановите состояние VMmanager 6 из резервной копии. Подробнее см. в статье Резервное копирование платформы.
  2. Если вы изменяли настройки BILLmanager, восстановите состояние панели управления из резервной копии. Подробнее см. в статье Резервное копирование документации BILLmanager.
  3. Разблокируйте VMmanager 5:

    1. Подключитесь к серверу с VMmanager 5 по SSH.

    2. Выполните команду:

      /usr/local/mgr5/sbin/mgrctl -m vmmgr -u
      BASH