Возможны следующие варианты импортирования виртуальных машин средствами панели управления:

  • импорт из сервера с VMmanager OVZ;
  • импорт из сервера со сторонней панелью управления.

Импорт удалённых машин из сервера с VMmanager OVZ


Алгоритм импорта контейнера:

  1. Для переноса контейнера нужны два сервера с установленными и настроенными для корректной работы VMmanager OVZ. На сервер с панелью-приёмником положите публичный ключ сервера-источника. Для этого На сервере источнике выполните команды:

    ssh-keygen -t rsa
    ssh-copy-id -i /root/.ssh/id_rsa.pub root@<IP-адрес сервера>
    BASH
    <IP-адрес сервера> — адрес сервера-приёмника
  2. Создайте в базе VMmanager запись о контейнере. Для этого перейдите в панель-приёмник под учётной записью root-пользователя и выполните API-запрос:

    https:/ip:1500/vemgr?admdown=off&chratein=1000&chrateout=1000&comments=&cpu=1&cpufreq=1000&domain=domain.com&func=vm.create&hdd=4000&hostnode=1&ip=xxx.xx.xx.x&layout=ploop&mem=512&name=example&numfile=16536&numproc=5000&ostemplate=template&password=*&swapratio=0&user_id=yy&vmnote
    BASH

    В качестве значений параметров запроса укажите значения импортируемого контейнера:

    chratein и chrateout — ограничения по входящему и исходящему трафику соответственно.

    cpu — количество процессоров.

    cpufreq — частота процессора.

    domain — доменное имя контейнера.

    hdd — объём жёсткого диска.

    hostnode — идентификатор узла кластера, на котором будет находиться контейнер.

    ip — IP-адрес контейнера.

    layout — файловая система контейнера.

    mem — объём оперативной памяти.

    numfile — ограничение на файловые дескрипторы.

    numproc — ограничение на количество процессов.

    ostemplate — шаблон операционной системы.

    password — пароль.

    swapratio — соотношение Swap/Ram.

    user_id — идентификатор пользователя, которому будет принадлежать контейнер.

  3. После запуска запроса в браузере появится окно для подтверждения. В этом окне в конце запроса добавьте &out=xml и нажмите OK. В результате будет создан фиктивный контейнер, который на самом деле не существует на жёстком диске.
  4. Остановите контейнер на сервер-источнике.
  5. Перенесите конфигурационный файл контейнера. По умолчанию они содержатся в директории /etc/vz/conf. Для переноса выполните на сервере-источнике команду:

    rsync -avz /etc/vz/conf/<id.conf> root@<IP-адрес узла кластера>:/etc/vz/conf/<id.conf>
    BASH

    <IP-адрес узла кластера> — адрес узла кластера, на который будет импортироваться контейнер.
    <id.conf> — идентификатор фиктивного контейнера в панели управления (можно посмотреть в интерфейсе).

  6. Перенесите контейнер. Для переноса выполните на сервере-источнике команду:

    rsync -avz /var/lib/vz/private/<id-old>/ root@<IP-адрес узла кластера>:/var/lib/vz/private/<id>
    BASH

    <IP-адрес узла кластера> — адрес узла кластера, на который будет импортироваться контейнер.

    <id-old> — идентификатор контейнера на сервере-источнике.
    <id> — идентификатор фиктивного контейнера.
  7. Измените IP-адрес на сетевом интерфейсе контейнера.

Импорт контейнеров из сервера со сторонней панелью управления


2 варианта импорта контейнеров из серверов со сторонними панелями управления:

  • установить VMmanager OVZ локально на сервер-источник;
  • установить VMmanager OVZ на отдельный сервер, а сервер-источник подключить в качестве узла кластера.

Алгоритм импорта контейнера:

  1. Установите VMmanager OVZ локально либо на отдельный сервер.
  2. Деактивируйте стороннюю панель управления либо деинсталлируйте её.
  3. Создайте в Vmmanager OVZ объекты:
    1. Узлы кластера. Подключите все серверы, с которых нужно выполнить импорт.
    2. Пользователь. Чтобы сделать его владельцем импортируемых виртуальных машин. Иначе для каждого контейнера будет создан свой пользователь.
    3. Сети. В модуле управления IP-адресами или в IPmanager создайте сети, соответствующие IP-адресам импортируемых контейнеров. Тип сетей — "public".
  4. Запустите импорт локальных контейнеров на узле-приёмнике. При импорте происходит смена идентификаторов контейнеров (CTID):

    /usr/local/mgr5/sbin/mgrctl -m vemgr import.local user=user_id elid=CTID hostnode=id|all
    BASH

    Параметры функции import.local:

    • user [не обязателен] — идентификатор существующего пользователя, который будет являться владельцем всех импортированных контейнеров. Если не задан, то для каждого импортируемого контейнера будет создан свой пользователь. Идентификатор пользователя можно посмотреть в списке пользователей;
    • elid [не обязателен] — идентификатор контейнера (CTID). Если задан, будет импортирован только один контейнер. Если не задан — импортируются все контейнеры;
    • hostnode [не обязателен] — идентификатор узла кластера (можно посмотреть в списке узлов кластера), с которого необходимо импортировать контейнеры, либо all, если необходимо произвести импорт со всех узлов кластера. Если параметр не указан, то контейнеры импортируются только с локального узла кластера.
  5. Вывод команды должен быть пуст. Также убедитесь в отсутствии ошибок в логе импорта. Результат команды должен быть пуст:

    grep "WARNING Skip" /usr/local/mgr5/var/vemgr.log
    BASH