Модуль "Интеграция с IPmanager 6"
IPmanager 6 — плагин для управления адресным пространством, используемый в платформах DCImanager 6 и VMmanager. С помощью модуля "Интеграция с IPmanager 6" вы можете объединить адресные пространства из нескольких экземпляров платформ.
Логика работы
При интеграции нескольких платформ одна из них является мастером. На мастере никаких настроек выполнять не требуется, на остальных платформах нужно установить модуль интеграции и указать в его настройках данные мастера.
В базу данных мастера передаётся информация обо всех сетях, пулах и блоках IP-адресов, созданных в остальных платформах. Платформы, у которых настроена интеграция, при операциях с адресным пространством используют базу данных мастера.
Информация, переданная в базу данных мастера, удаляется из локальной базы данных платформы. При удалении модуля нужно будет заново добавить необходимые сети, пулы и блоки IP-адресов.
При интеграции не передаётся информация:
- о связи IP-адресов с выделенными серверами и виртуальными машинами (ВМ). IP-адреса, выделенные для серверов или ВМ, будут отображены в платформах со статусом "Занят" без указания имени сервера или ВМ;
- о списках DNSBL.
Чтобы избежать конфликтов при объединении адресных пространств, рекомендуем настраивать интеграцию с мастером только "чистых" платформ — без созданных ВМ и добавленных серверов.
Особенности интеграции DCImanager 6
После настройки интеграции в интерфейсах платформ отображается информация о сетях и пулах, доступных во всех локациях. Информация о сетях и пулах, доступных только в определённых локациях, будет записана в базу данных мастера, но не отобразится в интерфейсе.
Подготовка к интеграции
Создание пользователя для интеграции
Для настройки интеграции понадобятся данные первого пользователя с ролью "Администратор" на мастере. Если эти данные недоступны, подготовьте пользователя для интеграции:
- Создайте на мастере учётную запись с ролью "Администратор".
- Подключитесь к серверу с мастером по SSH.
Откройте консоль базы данных:
если мастером является VMmanager:
В связи с поэтапным переходом платформы на использование СУБД 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"
CODEPostgreSQL
docker exec -it pgsql bash -c "psql -d isp"
CODEесли мастером является DCImanager 6:
docker exec -it mysql bash -c "mysql auth -p\$MYSQL_ROOT_PASSWORD"
CODE
Измените роль пользователя:
update auth_user set roles='["@admin"]' where email='admin@example.com';
CODEПояснения к командеadmin@example.com — email созданной учётной записи
Удаление используемого адресного пространства
Интеграция подразумевает, что к мастеру должны подключаться платформы с пустым адресным пространством. Если в мастере и подключаемой платформе созданы одинаковые сети, после интеграции может возникнуть конфликт адресных пространств. Чтобы избежать конфликтов, удалите информацию об элементах адресного пространства из подключаемых платформ:
- Создайте резервную копию подключаемой платформы.
- Подключитесь к серверу с платформой по SSH.
Откройте консоль базы данных:
если подключаемой платформой является VMmanager:
В связи с поэтапным переходом платформы на использование СУБД 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"
CODEPostgreSQL
docker exec -it pgsql bash -c "psql -d isp"
CODEесли подключаемой платформой является DCImanager 6:
docker exec -it mysql bash -c "mysql auth -p\$MYSQL_ROOT_PASSWORD"
CODE
Выполните запросы:
Удаление IP-адресов
DELETE FROM ip ;
SQLУдаление блоков IP-адресов
DELETE FROM ippool_range ;
SQLУдаление пулов
DELETE FROM ippool ;
SQLУдаление сетей
DELETE FROM ipnet ;
SQL
Настройка интеграции
Не устанавливайте и не настраивайте модуль на мастере. Это приведёт к удалению адресного пространства.
- На платформах, подключаемых к мастеру:
Установите модуль "Интеграция с IPmanager 6":
→ Модули → Интеграция с IPmanager 6 → Установить.
Если плагин установлен и не настроен, управление адресным пространством в платформе будет невозможным.
Нажмите Настроить и укажите настройки подключения к мастеру:
URL платформы. Если вы указали доменное имя сервера, убедитесь, что этому имени соответствует IP-адрес сервера с мастером. Модуль не сможет настроить подключение, если для доменного имени применяются какие-либо перенаправления. Например, через CNAME-записи DNS.
E-mail первого пользователя с ролью "Администратор".
Пароль пользователя.
Нажмите Применить.
- Если в одной из интегрируемых платформ используется модуль "Интеграция с DNSmanager 6", установите модуль с аналогичными настройками на всех остальных платформах.
Диагностика
Информация о работе модуля сохраняется в логах докер-контейнеров:
- dci_impgr_1 — на сервере с DCImanager 6;
- vm_ipmgr_1 — на сервере с VMmanager.
Чтобы просмотреть логи:
- Подключитесь к серверу с платформой по SSH.
Выполните команды:
docker logs <container>
CODEdocker exec -it <container> less -R /var/log/ipmgr_proxy_service.log
CODEПояснения к командам<container> — имя контейнера