Проблема
После обновления платформы до версии 2026.02.2 и выше наблюдаются следующие симптомы:
- веб-интерфейс платформы не открывается;
- контейнер vm_box постоянно перезагружается.
Причина
Начиная с версии 2026.02.2 изменилась архитектура платформы — добавлен контейнер vm_back. Поэтому шаблоны конфигураций некоторых сервисов были перенесены из контейнера vm_box в новый контейнер vm_back. Например, шаблон настройки ip-fabric. Проблема возникает из-за кастомных патчей (YAML-файлов), которые ссылаются на файлы в контейнере vm_box. Это приводит к тому, что контейнер vm_box не может корректно запуститься и постоянно перезагружается. Подробнее о патчах см. в статье Модификация контейнеров через патчи.
Диагностика
Чтобы подтвердить причину проблемы:
- Подключитесь к серверу с платформой по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
- Проверьте состояние контейнера vm_box:
docker ps --format "table {{.Names}}\t{{.Status}}" | grep vm_boxПример выводаvm_box Restarting (2) 7 seconds agoПризнак проблемы: статус контейнера vm_box указывает на его постоянную перезагрузку (
Restarting). -
Проверьте логи контейнера vm_box:
docker logs -n 10 vm_boxПример выводаsed: can't read /opt/ispsystem/vm/scripts/kvm/etc/frr_routereflector_bgpd.tmpl: No such file or directoryПризнак проблемы: в логах контейнера присутствуют ошибки о недоступности файлов или директорий, которые были перенесены в контейнер vm_back.
- Проверьте наличие кастомных патчей:
- Откройте конфигурационный файл платформы:
cat /opt/ispsystem/vm/config.json -
Изучите секцию
Patches. В ней указаны все патчи, включая кастомные.Пример вывода"Patches":{"channelp":{"base64_compose":"c2VydmljZXM6CiAgdm1fYm94OgogICAgZVfVElNRU9VVDogMC4zCg=="}Примеры названий системных патчей:
- для модуля «Интеграция с DNSmanager 6» —
vmdnsmgr; - для модуля «Интеграция с IPmanager 6» —
vmipmgr.
Признак проблемы: в конфигурации присутствуют патчи с именами, не входящими в список системных патчей (например,
channelp,ip-fabriс). - для модуля «Интеграция с DNSmanager 6» —
- Откройте конфигурационный файл платформы:
-
Декодируйте содержимое кастомного патча:
echo <base64_код> | base64 -dПример командыecho c2VydmljZXM6CiAgdm1fYm94OgogICAgZVfVElNRU9VVDogMC4zCg== | base64 -dПример выводаservices: vm_box: command: - bash - -c - sed -i -E "s/(neighbor fabric capability extended-nexthop)/\1\n neighbor fabric ebgp-multihop 255/;s/(neighbor fabric route-map IPV4_EXPORT out)/\1\n neighbor fabric route-map IPV4_IMPORT in/;s/(neighbor fabric route-map IPV6_EXPORT out)/\1\n neighbor fabric route-map IPV6_IMPORT in/;s/(route-map IPV4_EXPORT permit 5)/route-map IPV4_IMPORT permit 5\n\!\n\1/;s/(route-map IPV6_EXPORT permit 5)/route-map IPV6_IMPORT permit 5\n\!\n\1/" /opt/ispsystem/vm/scripts/kvm/etc/frr_routereflector_bgpd.tmpl && /supervisor.shПризнак проблемы: в секции
servicesуказан контейнерvm_box. - Проверьте функциональность патча. Например, проблема подтверждается, если наблюдаются следующие события:
- патч редактирует файл в контейнере vm_box, но этого файла в контейнере больше нет;
- патч копирует файл в контейнер vm_box, но файл перестал копироваться.
Решение
Чтобы решить проблему, замените в кастомном патче контейнер vm_box на vm_back:
- Подключитесь к серверу с платформой по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
- Отключите целевой патч:
vm remove-patch -p=<patch_name>Пояснения к команде:
- <patch_name> — название патча из config.json.
- Отредактируйте файл патча:
- Откройте файл патча. Он находится в директории /opt/ispsystem/vm/ и имеет название вида
patch_*****.yaml. - В секции
servicesзамените контейнер vm_box на vm_back.
Пример патча после измененийversion: "3.5" services: vm_back: command: - bash - sed -i -E "s/(neighbor fabric capability extended-nexthop)/\1\n neighbor fabric ebgp-multihop 255/;s/(neighbor fabric route-map IPV4_EXPORT out)/\1\n neighbor fabric route-map IPV4_IMPORT in/;s/(neighbor fabric route-map IPV6_EXPORT out)/\1\n neighbor fabric route-map IPV6_IMPORT in/;s/(route-map IPV4_EXPORT permit 5)/route-map IPV4_IMPORT permit 5\n\!\n\1/;s/(route-map IPV6_EXPORT permit 5)/route-map IPV6_IMPORT permit 5\n\!\n\1/" /opt/ispsystem/vm/scripts/kvm/etc/frr_routereflector_bgpd.tmpl && /supervisor.sh
- Откройте файл патча. Он находится в директории /opt/ispsystem/vm/ и имеет название вида
- Подключите исправленный патч:
vm add-patch -p=<patch_name> -f=</path/to/patch.yaml>Пояснения к команде:
- <patch_name> — название патча из config.json;
- </path/to/patch.yaml> — путь к файлу с содержимым патча.
- Если кастомных патчей несколько, повторите инструкцию для каждого патча.
Связанные статьи: