← Назад к «Руководства»

Межрелизные патчи и обращение в поддержку

Это руководство описывает полный цикл работы с исправлениями сервера LSUS между релизами: как собрать диагностические логи при возникновении проблемы, куда направить обращение, как получить и применить патч через веб-админку, и что делать, если веб-админка недоступна — применение через терминал.

infoРедакции и межрелизные патчи

Межрелизные патчи (hotfix .lsuspatch) входят в сопровождение Enterprise. Для Professional исправления приходят со следующим релизом продукта, если иное не согласовано отдельно. Уровни, время реакции и юридические условия — в Положении о технической поддержке.

infoО чём эта страница

Межрелизные патчи (hotfix) — это механизм оперативной доставки исправлений сервера LSUS между основными релизами. Патч предназначен в первую очередь для решения проблем функционала сервера, обнаруженных в эксплуатации: ошибок, регрессий производительности, некорректного поведения. Патч представляет собой подписанный архив .lsuspatch, который загружается и применяется администратором.


Когда нужен патч

Типовые ситуации, когда вендор выпускает межрелизный патч:

  • После обновления сервера до нового релиза проявилась регрессия (медленнее работает вкладка, ошибки, зависания).
  • Обнаружена ошибка в текущей версии, исправление которой не дождётся следующего релиза.
  • Требуется оперативное устранение проблемы производительности или доступности сервера.

В таких случаях вендор готовит патч .lsuspatch под конкретную версию сервера и передаёт его через портал поддержки.


Шаг 1. Собрать диагностические логи

При обращении в поддержку обычно требуются логи сервера. LSUS умеет собирать их в один архив.

Через веб-админку

  1. Откройте Администрирование → Поддержка.
  2. Найдите блок «Диагностика и логи».
  3. Нажмите кнопку «Скачать логи за сутки».

Раздел «Поддержка»: патчи сервера, диагностика и логи

Сервер соберёт ZIP-архив с логами за последние 24 часа, и скачивание начнётся автоматически. Имя файла — вида lsus-master-diagnostics-<дата>-<время>.zip.

Что входит в архив:

  • логи приложения (lsus-server.log, lsus-server-errors.log);
  • access-логи админки и клиентских запросов;
  • логи фонового worker-процесса и репликации;
  • логи nginx (access и error);
  • сводка переменных окружения LSUS_* (значения ключей, содержащих PASSWORD/SECRET/TOKEN, замаскированы — конфиденциальные данные не попадают в архив);
  • метаданные: роль сервера, время сбора, настройки логирования.

lightbulbДостаточно ли суток

По умолчанию собираются логи за 24 часа. Если проблема проявилась раньше — соберите архив позже, когда инцидент ещё «свежий» в логах. Для более глубокой диагностики поддержка может запросить конкретные файлы логов — их можно скачать отдельно в разделе Администрирование → Логи системы.

Через терминал (если веб-админка недоступна)

Если веб-админка не отвечает, соберите логи вручную. Логи сервера хранятся в /var/log/lsus-server/ внутри контейнера, что на хосте Docker соответствует /opt/lsus-docker/data/master/log/.

# Архив логов сервера (на хосте Docker)
sudo tar -czf /tmp/lsus-logs-$(date +%Y%m%d).tar.gz \
    -C /opt/lsus-docker/data/master/log .

# Логи контейнеров (stdout/stderr) за последние сутки
sudo docker logs --since 24h lsus-master > /tmp/lsus-master-stdout.log 2>&1
sudo docker logs --since 24h lsus-master-worker > /tmp/lsus-worker-stdout.log 2>&1

# Дополнительно: версия сервера и состояние контейнеров
sudo docker ps --format '{{.Names}}\t{{.Status}}' > /tmp/lsus-containers.txt
curl -sk https://localhost/api/v1/health >> /tmp/lsus-containers.txt

Затем упакуйте всё вместе и передайте в поддержку.


Шаг 2. Обратиться в поддержку

Обращения обрабатываются через портал поддержки LSUS.

  1. Перейдите на портал: https://portal.lsus.ru.
  2. Создайте обращение, описав проблему: что произошло, при каких действиях, версия сервера (видна в шапке админки LSUS или по запросу /api/v1/health).
  3. Прикрепите диагностический архив, собранный на шаге 1.

lightbulbВерсия сервера

Версия сервера LSUS отображается в правой части верхней панели дашборда (например, v1.0.77). Её же возвращает health-эндпоинт: curl -k https://<сервер>/api/v1/health. Указывайте точную версию в обращении — патч привязан к диапазону версий сервера.

Поддержка проанализирует логи, воспроизведёт проблему и подготовит патч .lsuspatch под вашу версию сервера. Файл патча вернётся через тот же портал.

infoАктивация поддержки

Для полноценного взаимодействия с поддержкой на сервере должен быть активирован ключ поддержки (раздел Администрирование → Поддержка → Ключи активации). Ключ выдаётся на портале. Если срок поддержки истёк, в шапке админки появится предупреждающий баннер.


Шаг 3. Применить патч через веб-админку

Получив файл .lsuspatch от поддержки, примените его. Основной способ — через веб-админку.

Загрузка патча

  1. Откройте Администрирование → Поддержка.
  2. В блоке «Патчи сервера» нажмите «Обзор» и выберите файл .lsuspatch.
  3. Нажмите «Загрузить».

Сервер проверит подпись патча, манифест и соответствие версии. Если патч подходит — он появится в таблице ниже со статусом «загружен». Если патч не подходит для текущей версии сервера — загрузка будет отклонена с понятным сообщением об ошибке.

Применение патча

  1. В таблице патчей найдите загруженный патч.
  2. Нажмите кнопку «Применить».
  3. Подтвердите применение и перезапуск сервера.

Сервер применит патч (заменит файлы приложения, при необходимости выполнит SQL-миграции) и перезапустит стек. После перезапуска исправление вступит в силу.

warningПерезапуск сервера

Применение патча вызывает перезапуск сервера LSUS. На время перезапуска (обычно 1–3 минуты) веб-админка и API будут недоступны, а клиенты не смогут отправить heartbeat. Планируйте применение в окно обслуживания.

Проверка

После перезапуска откройте Администрирование → Поддержка → Патчи сервера — применённый патч должен иметь статус «применён». Проверьте, что проблема устранена.

Откат патча (если исправление не помогло)

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

  1. В таблице патчей найдите применённый патч.
  2. Нажмите кнопку «Отключить».
  3. Подтвердите отключение и перезапуск.

Сервер восстановит оригинальные файлы из резервной копии (созданной при применении) и перезапустит стек. Система вернётся к состоянию до патча.

Удаление патча

Чтобы удалить патч из списка — сначала отключите его, затем нажмите «Удалить». Удалить можно только отключённый (неприменённый) патч.


Шаг 4. Применить патч через терминал

Если веб-админка недоступна (сервер не отвечает, ошибка 500, контейнер не поднимается), патч можно применить из терминала на хосте сервера LSUS.

Основной способ — скрипт patch-offline-apply.sh

LSUS поставляется со скриптом офлайн-применения. Скачайте файл .lsuspatch от поддержки на хост сервера и выполните:

sudo bash /opt/lsus/scripts/patches/patch-offline-apply.sh /path/to/патч.lsuspatch

Что скрипт делает автоматически:

  1. Кладёт архив в общий каталог данных (staged/, виден из всех контейнеров мастера).
  2. В каждом контейнере стека (lsus-master, lsus-master-worker, lsus-master-replication) проверяет подпись, версию и накладывает файлы патча.
  3. Перезапускает контейнеры — при старте применится SQL-часть патча и загрузится новый код.
  4. Выводит состояние всех патчей.

Если нужно применить патч без перезапуска (например, чтобы перезапустить позже вручную):

sudo bash /opt/lsus/scripts/patches/patch-offline-apply.sh /path/to/патч.lsuspatch --no-restart

lightbulbЧто в выводе

Скрипт показывает ход выполнения по каждому контейнеру. В конце — список применённых патчей. Если всё прошло успешно, вы увидите статус enabled для вашего патча в каждом контейнере.

Если контейнеры остановлены

Если стек вообще не поднимается, скрипт запустит остановленные контейнеры, дождётся их инициализации и затем применит патч.

Если стек не поднимается даже после этого — положите архив .lsuspatch вручную в каталог staged/ на хосте (/opt/lsus-docker/data/master/patches/staged/) и поднимите стек с переменной LSUS_PATCH_OFFLINE_ENABLE=1 в файле .env. Активация патча произойдёт автоматически при старте контейнеров.

# 1. Положить архив в staged
sudo cp патч.lsuspatch /opt/lsus-docker/data/master/patches/staged/

# 2. Включить офлайн-активацию в .env
#    (добавьте или раскомментируйте строку)
#    LSUS_PATCH_OFFLINE_ENABLE=1

# 3. Поднять стек
cd /opt/lsus-docker
sudo docker compose -f docker-compose.yml --env-file .env --profile master up -d

Прямые команды в контейнере (для диагностики)

Для проверки содержимого патча без применения или ручного управления:

# Проверить патч (подпись, версию, состав) без изменений
sudo docker exec lsus-master python3 /app/patch_apply.py inspect /path/to/патч.lsuspatch

# Список всех патчей на сервере
sudo docker exec lsus-master python3 /app/patch_apply.py list
Команда Действие
inspect <файл> Проверить патч без применения: подпись, версию, состав
list Показать загруженные, применённые и резервные патчи
enable <файл> Активировать и наложить патч
disable <patch_id> Отключить патч (откат файлов из резерва)

infoОткат через терминал

Отключение патча через терминал выполняется отдельно в каждом контейнере стека:

wzxhzdk:5

Затем перезапустите стек. Хост-скрипт patch-offline-apply.sh автоматизирует только применение; для отката используйте прямые команды выше.


Как работает патч при применении

Чтобы понимать, что произойдёт с сервером, полезно знать механику:

  1. Проверка безопасности. Перед применением проверяется цифровая подпись патча (Ed25519), корректность манифеста и соответствие версии сервера. Патч от стороннего источника или для другой версии применён не будет.
  2. Замена файлов. Файлы из патча копируются поверх файлов приложения (например, модули Python, шаблоны, статика). Оригиналы сохраняются в резервную копию — для возможности отката.
  3. SQL-миграции (если есть в патче) — выполняются однократно, под блокировкой, с защитой от повторного наката.
  4. Перезапуск. Контейнеры/сервис перезапускаются, подхватывая новый код и миграции.

Применение идемпотентно: повторное применение уже активного патча ничего не ломает.


Где хранятся патчи

На хосте Docker-развёртывания патчи находятся в каталоге данных мастера:

/opt/lsus-docker/data/master/patches/
├── staged/      # загруженные, но ещё не применённые (.lsuspatch)
├── enabled/     # активированные патчи (накатываются при старте)
├── backup/      # резервные копии оригинальных файлов (для отката)
└── disabled/    # архивы отключённых патчей

Этот каталог примонтирован во все контейнеры мастера, поэтому патч, загруженный через веб-админку или скрипт, виден из каждого контейнера.


Журнал действий

Все операции с патчами фиксируются в журнале аудита сервера: загрузка, применение, отключение, удаление. Журнал доступен в разделе Администрирование → Журнал. Это позволяет отследить, кто и когда применил или откатил патч.


Частые вопросы

infoМожно ли применять несколько патчей?

Да. Патчи можно применять последовательно. Каждый патч имеет свой идентификатор и порядок применения. При наложении нескольких патчей они применяются независимо, каждый со своим резервом для отката.

infoЧто будет с патчами при обновлении до нового релиза?

При обновлении сервера до нового релиза (через пакеты ОС) межрелизные патчи, чьи исправления вошли в релиз, становятся неактуальными. Рекомендуется после обновления проверить раздел «Патчи сервера» и отключить/удалить устаревшие патчи. Если исправление ещё не вошло в релиз — патч нужно применить заново после обновления.

infoПатч не загружается — ошибка версии

Это означает, что патч предназначен для другой версии сервера. Проверьте версию сервера (в шапке админки или /api/v1/health) и свяжитесь с поддержкой — будет выдан патч под вашу версию.

infoВеб-админка не отвечает после применения патча

Если после применения патча сервер не поднялся, примените откат через терминал:

wzxhzdk:7

После отката соберите логи (см. Шаг 1) и передайте в поддержку.


Связанные страницы