Миграция позволяет перенести настройки и оборудование из панели управления DCImanager 5 в платформу DCImanager 6. Миграция выполняется в полуавтоматическом режиме из консоли сервера с DCImanager 6. Возможна миграция из одной или нескольких панелей управления DCImanager 5.
Если у DCImanager 5 настроена интеграция с BILLmanager, тарифы и услуги выделенных серверов будут автоматически переведены на обработчик DCImanager 6.
Этапы миграции:
- Подготовка ПО — DCImanager 5, DCImanager 6, IPmanager 5, BILLmanager.
- Перенос адресного пространства — используемых IP-адресов, пулов и сетей.
- Перенос объектов DCImanager 5 — пользователей, оборудования, настроек подключения, VLAN, складов.
- Изменение настроек BILLmanager.
При миграции не будут перенесены:
- тестовые коммутаторы и PDU с типом Dummy;
- коммутаторы и PDU с пользовательскими обработчиками;
- пользователи с ролью "Оператор".
Подготовка ПО
DCImanager 5
- В настройках всех серверов, коммутаторов и PDU укажите стойки и юниты, в которых эти устройства расположены.
- В настройках всех блейд-серверов укажите юниты шасси, в которых эти серверы расположены.
- Создайте временного пользователя для интеграции. При создании укажите:
- Уровень доступа — Администратор.
- Количество записей — не меньше, чем количество оборудования на складе каждого типа. Например, если на складе 5600 дисков, то значение должно быть не менее 5600.
- Сформируйте одноразовый ключ для авторизации:
- Подключитесь к серверу с DCImanager 5 по SSH с правами суперпользователя.
-
Выполните команду:
/usr/local/mgr5/sbin/mgrctl -m dcimgr session.newkey username=<integration_user> key=<secret_key>
Пояснения к команде -
Сохраните значение ключа.
Обратите внимание!По этому ключу можно авторизоваться только один раз. Для повторной миграции ключ нужно сформировать заново.
-
Создайте временного пользователя БД и разрешите ему доступ к таблице пользователей:
-
Откройте доступ к MySQL.
Команды для ОС CentOS 7:firewall-cmd --new-zone=migration-mysql --permanent
firewall-cmd --reload
firewall-cmd --zone=migration-mysql --add-source=<IP address> --permanent
firewall-cmd --zone=migration-mysql --add-port=3306/tcp --permanent
firewall-cmd --reload
Пояснения к командам -
Создайте временного пользователя с доступом только для чтения:
-
Зайдите в консоль базы данных:
mysql
-
Выполните команды:
CREATE USER '<user>'@'localhost' IDENTIFIED BY '<password>';
CREATE USER '<user>'@'%' IDENTIFIED BY '<password>';
GRANT SELECT, SHOW VIEW ON dcimgr.users TO '<user>'@'localhost';
GRANT SELECT, SHOW VIEW ON dcimgr.users TO '<user>'@'%';
FLUSH PRIVILEGES;
Пояснения к командам
-
-
DCImanager 6
- Создайте резервную копию платформы.
- Создайте и настройте локацию.
- Загрузите необходимые шаблоны ОС.
- Установите и настройте необходимые модули.
- Если в платформе установлен, но не настроен модуль "Интеграция с IPmanager 6", удалите его.
IPmanager 5
-
Убедитесь, что IPmanager 5 использует СУБД MySQL или MariaDB. Если IPmanager 5 использует СУБД SQLite, перейдите на использование СУБД MySQL. Подробнее см. в статье Использование MySQL в качестве СУБД документации IPmanager.
Обратите внимание!Рекомендуемая версия MySQL/MariaDB – не ниже 5.5.x. Для более ранних версий успешный импорт ВМ не гарантируется. - Откройте доступ к серверу MySQL со стороны DCImanager 6. Для этого разрешите подключения на порты 3306/TCP, 3306/UDP и удалённое подключение к БД:
- Подключитесь к серверу IPmanager 5 по SSH с правами суперпользователя.
-
Проверьте текущие настройки файрвола:
firewall-cmd --list-all
-
Откройте порты 3306/TCP, 3306/UDP:
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=3306/udp
-
Перезапустите сервис файрвола:
service firewalld restart
- Откройте конфигурационный файл MySQL /etc/my.cnf. В раздел [mysqld] добавьте параметр bind-address=<IP-адрес сервера с IPmanager 5> и закомментируйте строку с параметром skip-networking.
-
Подключитесь к сервису mysql:
mysql -u root
use mysql;
-
Разрешите пользователю удалённое подключение к MySQL:
GRANT ALL PRIVILEGES ON <db_name> . * TO '<db_user>'@'<remote_ip>' IDENTIFIED BY '<db_password>';
ПоясненияFLUSH PRIVILEGES;
BILLmanager
- Создайте обработчик услуг DCImanager 6.
-
Создайте временного пользователя для настройки интеграции. При создании включите опцию Полный доступ.
Обратите внимание!Не используйте для настройки интеграции учётную запись root. - Сформируйте одноразовый ключ для авторизации:
- Подключитесь к серверу с BILLmanager по SSH с правами суперпользователя.
-
Выполните команду:
/usr/local/mgr5/sbin/mgrctl -m billmgr session.newkey user=<integration_user> key=<secret_key>
Пояснения к команде -
Сохраните значение ключа.
Обратите внимание!По этому ключу можно авторизоваться только один раз. Для повторной миграции ключ нужно сформировать заново.
- Создайте резервную копию BILLmanager.
- Если в BILLmanager есть услуги с опцией По типу сервера, их нужно отключить. Для этого:
- Подключитесь к серверу с BILLmanager по SSH с правами суперпользователя.
-
Зайдите в консоль базы данных:
mysql
-
Выберите базу данных billmgr:
USE billmgr;
-
Определите id обработчика DCImanager 5:
SELECT id FROM processingmodule WHERE name='<DCI5_processing_module_name>';
Пояснения -
Определите, есть ли у модуля обработки услуги с опцией По типу сервера:
SELECT id FROM processingparam pp WHERE pp.processingmodule=<DCI5_processing_module_id> AND pp.intname='use_configuration' AND pp.value='on';
Пояснения -
Если ответ на предыдущую команду содержит id услуг, отключите опцию:
UPDATE processingparam pp SET pp.value='off' WHERE pp.processingmodule=<DCI5_processing_module_id> AND pp.intname='use_configuration' AND pp.value='on';
Пояснения
Перенос адресного пространства
Для управления адресным пространством DCImanager 5 и DCImanager 6 используют разное ПО:
- DCImanager 5 — панель управления IPmanager 5;
- DCImanager 6 — встроенный модуль IPmanager 6.
Для проведения миграции нужно импортировать адресное пространство из IPmanager 5 в IPmanager 6.
IPmanager 6 поддерживает режим эмуляции API IPmanager 5. Если вы используете другие программные продукты, которым требуется интеграция с IPmanager 5 (например, BILLmanager, VMmanager 5, ISPmanager), вы сможете перенастроить их на работу с IPmanager 6.
Пример управления адресным пространством
Если у DCImanager 6 настроена интеграция с внешним IPmanager 6, то данные нужно импортировать в платформу, выполняющую роль мастера. Подробнее см. в статье Модуль "Интеграция с IPmanager 6".
Если роль мастера выполняет VMmanager 6, импортируйте данные по инструкции из документации VMmanager 6. Если в VMmanager 6 используется модуль "Интеграция с DNSmanager 6", устанавливать аналогичный модуль в DCImanager 6 не требуется.
Импорт данных
Чтобы импортировать данные об адресном пространстве:
- Создайте на сервере с IPmanager 5 пользователя для интеграции. Пользователю должны быть доступны все типы адресов, которые нужно перенести. Подробнее о типах адресов см. в статье Управление группами IP-адресов.
- Подключитесь к серверу с DCImanager 6 по SSH с правами суперпользователя.
-
Выполните команду:
docker exec -it dci_ipmgr_1 /opt/ispsystem/ipmgr/bin/mgr5import --dbhost <db_ip> --dbname <db_name> --dbuser <db_user> --dbpassword <db_pass> --user <ipmgr_user>
Пояснения к командеНеобязательные параметры командыПример вывода команды
Имена контейнеров могут отличаться в зависимости от используемой версии Docker Compose. Вместо символа подчёркивания в именах контейнеров может использоваться дефис.
Логи команды записываются в файл /var/log/ipmgr5_import.log в контейнере dci_ipmgr_1 на сервере с DCImanager 6.
Интеграция панелей управления с IPmanager 6
Чтобы панели управления, которые были интегрированы с IPmanager 5, переключились на работу с IPmanager 6:
-
Создайте в DCImanager 6 учётную запись администратора с именем ipmgr5@example.com.
Обратите внимание!ipmgr5@example.com — не пример, а точное имя, которое нужно указать при создании учётной записи. - Если подключаемая панель управления должна иметь доступ только к определённому пулу IP-адресов, создайте в DCImanager 6 пул с суффиксом public. Например, DCI5_public.
- В подключаемой панели управления:
- Перейдите в Интеграция → IPmanager.
- Укажите настройки для интеграции:
-
URL — https://domain.com/api/ipmgr5/v3/ipmgr.
Пояснения к URL -
Имя пользователя:
-
чтобы панель управления имела доступ только к определённому пулу IP-адресов, укажите pool_XXX;
Пояснения - чтобы панель управления имела доступ ко всему адресному пространству, укажите произвольное имя пользователя.
-
- Пароль — пароль пользователя ipmgr5@example.com.
-
- Нажмите Ok.
Синхронизация PTR-записей
Если у DCImanager 6 настроена интеграция с DNSmanager 6, то после создания адресного пространства необходимо синхронизировать PTR-записи с DNS-сервером. Для этого:
- Удалите модуль "Интеграция с DNSmanager 6": Настройки → Модули → Интеграция с DNSmanager 6 → Удалить модуль → Удалить модуль.
- Повторно установите и настройте модуль интеграции. Подробнее см. в статье Модуль "Интеграция с DNSmanager 6".
Логи синхронизации записываются в файл /var/log/dns_proxy_integration.log в контейнере dci_dns_proxy_1 на сервере с DCImanager 6.
Перенос объектов DCImanager 5
Логика работы
Перенос состоит из двух этапов:
- Экспорт данных из DCImanager 5 в файл формата json.
- Импорт данных из файла в платформу DCImanager 6.
Вы можете перенести все объекты DCImanager 5 вместе или каждый тип по отдельности. Для каждого типа объектов при миграции создаётся отдельный файл. Например, для серверов создаётся файл server.json. Это позволяет в случае каких-либо проблем исправить данные в файле вручную и повторить миграцию.
Если вы переносите каждый тип объектов по отдельности, выполняйте миграцию в следующем порядке:
- Пользователи.
- Оборудование:
- Стойки и платформы.
- Коммутаторы, PDU, UPS.
- Шасси.
- Серверы.
- Пользовательские VLAN.
- Склады:
- Поставщики и поставки.
- Коммутаторы, PDU, UPS, типы оборудования, серверы.
- Комплектующие.
Имена пользователей
Имена пользователей при миграции будут изменены:
- если у DCImanager 5 настроена интеграция с BILLmanager, имя пользователя будет заменено на email владельца сервера;
- если интеграция с BILLmanager не настроена, к имени пользователя будет добавлено @dci5.imported. Это изменение связано с ограничениями платформы DCImanager 6. В качестве ID пользователя обязателен формат адреса электронной почты.
Модели жёстких дисков
На основе модели жёсткого диска из DCImanager 5 будет создана модель накопителей с аналогичным названием в справочнике DCImanager 6. На основе поля "Тип" будут сформированы поля "Псевдоним для конфигурации" и "Объём, GB". Если название модели в DCImanager 5 не указано, то в качестве названия будет использоваться значение из поля "Тип".
Модели RAM
На основе модели RAM из DCImanager 5 будет создана модель оперативной памяти с аналогичным названием в справочнике DCImanager 6. На основе поля "Тип" будут сформированы поля "Объём памяти" и "Частота". Единица измерения объёма памяти будет изменена из мебибайта в гигабайт. Если название модели в DCImanager 5 не указано, то в качестве названия будет использоваться значение из поля "Тип".
id оборудования
Чтобы перенести id оборудования из DCImanager 5, добавьте к нужным типам оборудования в DCImanager 6 собственный параметр с именем old_id. При миграции id оборудования будут записаны в созданный параметр. Подробнее о создании параметра см. в статье Собственные параметры оборудования.
Запуск миграции
Чтобы запустить миграцию:
- Подключитесь к серверу с DCImanager 6 по SSH с правами суперпользователя.
-
Зайдите в контейнер migrator:
docker exec -it migrator bash
-
Перейдите в директорию сервиса:
cd /opt/ispsystem/migrate
-
Создайте конфигурационные файлы для миграции на основе шаблонов export_settings.example.yaml и import_settings.example.yaml.
Пример файла для экспортаaction: export platform: dci5 data: - user - rack - platform - switch - server transport: - type: dci5_http address: https://10.1.1.1:1500 key: my_secret_key - type: dci5_db host: 10.1.1.1 port: 3306 user: migrator password: migrator_password db: dcimgr location: 1 format: json debug: false log_file: /var/log/migrate.log report_file: export_report_{datetime}.txt report_view: plain
Пример файла для импортаaction: import platform: dci6 data: - all transport: - type: dci6_http - type: dci6_auth_http location: 1 format: json debug: false log_file: /var/log/migrate.log report_file: import_report_{datetime}.txt report_view: plain
Пояснения -
Запустите скрипт для экспорта данных:
python3 migrator.py -p export_settings.yaml
Пояснения -
Если данные были экспортированы успешно, запустите скрипт для импорта данных:
python3 migrator.py -p import_settings.yaml
Пояснения
Логи миграции записываются в файл /var/log/migrate.log в контейнере migrator на сервере с DCImanager 6. Отчёт по миграции сохраняется в файл, указанный в параметре report_file конфигурационного файла миграции.
Повторная миграция
Если миграция завершилась с ошибкой или за время переноса конфигурация DCImanager 5 изменилась, вы можете выполнить миграцию повторно:
- Восстановите DCImanager 6 из резервной копии.
- Создайте одноразовый ключ для авторизации в DCImanager 5.
- Исправьте конфигурационные файлы экспорта и импорта.
- Запустите скрипт миграции.
Действия после миграции
- Изучите отчёт и убедитесь, что миграция прошла успешно.
- Откройте интерфейс платформы и проверьте корректность:
- Переноса всех объектов платформы.
- Выделения IP-адресов серверам.
- Взаимодействия с коммутаторами и PDU.
- Настроек подключений к коммутаторам и PDU.
Изменение настроек BILLmanager
Если у DCImanager 5 настроена интеграция с BILLmanager, вы можете перенести услуги на обработчик DCImanager 6. Во время миграции:
- Для всех тарифных планов, которые работают на выбранном обработчике DCImanager 5, будет включён обработчик DCImanager 6 и изменена внутренняя конфигурация для заказа.
-
Для каждого пользователя DCImanager 5 будет создана учётная запись в DCImanager 6:
- имя пользователя — email, указанный в BILLmanager;
-
пароль — пароль, указанный в услуге выделенного сервера.
Обратите внимание!Если пользователь после заказа сервера изменил пароль в DCImanager 5, то пароль восстановится на исходный. Пользователю останется доступен переход в DCImanager 6 через интерфейс BILLmanager. В дальнейшем пользователь сможет восстановить пароль через электронную почту.
- Во всех открытых и остановленных услугах выделенных серверов будут изменены:
- имя пользователя — на email пользователя из DCImanager 6;
- id сервера — на id из DCImanager 6;
- обработчик услуги — на DCImanager 6.
Если в BILLmanager есть услуги размещения серверов (colocation), то при миграции:
- К тарифным планам размещения серверов будет подключён обработчик DCImanager 6.
- Во всех открытых и остановленных услугах размещения серверов будут изменены:
- имя пользователя — на email пользователя из BILLmanager;
-
id сервера и стойки — на id из DCImanager 6;
Поиск сервера в DCImanager 6 будет выполняться по его имени из услуги в BILLmanager, а не по id. - обработчик услуги — на DCImanager 6.
- имя пользователя — на email пользователя из BILLmanager;
- Владельцем сервера в DCImanager 6 станет пользователь, у которого email совпадает с email пользователя из BILLmanager. Если такого пользователя нет, он будет создан автоматически со случайным паролем.
- У тарифных планов размещения серверов будет отключён обработчик DCImanager 5.
Запуск миграции
Чтобы запустить миграцию:
- Подключитесь к серверу с DCImanager 6 по SSH с правами суперпользоваеля.
-
Зайдите в контейнер migrator:
docker exec -it migrator bash
-
Перейдите в директорию сервиса:
cd /opt/ispsystem/migrate
-
Создайте конфигурационный файл для миграции на основе шаблона bill_migrate.example.yaml.
Пример конфигурационного файлаfrom_modules: - dci5_processing_module_1 - dci5_processing_module_2 to_module: dci6_processing_module admin_name: temp_admin transport: - type: dci6_http - type: dci6_auth_http - type: bill_http address: https://10.1.1.2:1500 key: my_secret_key debug: false log_file: /var/log/bill_migrate.log report_file: bill_migrate_report_{datetime}.txt report_view: plain
Пояснения -
Чтобы проверить возможность миграции, запустите скрипт в режиме "только чтение":
python3 bill_migrator.py -p bill_migrate.yaml -r
ПоясненияВ этом режиме скрипт не выполняет реальных действий, а только проверяет возможность миграции.
-
Если отчёт не содержит ошибок, повторно сгенерируйте одноразовый ключ в BILLmanager и запустите реальную миграцию:
python3 bill_migrator.py -p bill_migrate.yaml
Пояснения
Логи миграции записываются в файл /var/log/bill_migrate.log в контейнере migrator на сервере с DCImanager 6. Отчёт по миграции сохраняется в файл, указанный в параметре report_file конфигурационного файла миграции.
Повторная миграция
Если миграция завершилась с ошибкой или за время переноса конфигурация BILLmanager изменилась, вы можете выполнить миграцию повторно:
- Создайте одноразовый ключ для авторизации в BILLmanager.
- Исправьте конфигурационный файл.
- Запустите скрипт миграции.
Действия после миграции
- Изучите отчёт и убедитесь, что миграция прошла успешно.
- Проверьте корректность конфигурации тарифов. Например, выполните тестовый заказ сервера.
- Проверьте, есть ли в DCImanager 6 шаблоны ОС, используемые в тарифах.
- Удалите из DCImanager 6 всех временных пользователей с суффиксом @dci5.imported. Перед удалением убедитесь, что эти пользователи не являются владельцами серверов.
- Удалите обработчик DCImanager 5:
- Подключитесь к серверу с BILLmanager по SSH с правами суперпользоваеля.
-
Зайдите в консоль базы данных:
mysql
-
Выберите базу данных billmgr:
USE billmgr;
-
Определите id обработчика DCImanager 5:
SELECT id FROM processingmodule WHERE name='<DCI5_processing_module_name>';
Пояснения -
Удалите привязку IP-адресов к IPmanager и обработчику DCImanager 5:
UPDATE ip SET ipmgr=NULL, processingmodule=NULL WHERE processingmodule=<DCI5_processing_module_id>;
Пояснения - Удалите обработчик в интерфейсе BILLmanager.