Обновление системы LSUS
Процедура обновления уже развёрнутых компонентов LSUS: серверных ролей в Docker, агента lsus-client и (при необходимости) lsus-usb-control. Подход тот же, что при первичной установке — локальные пакеты .deb / .rpm, сохранение /opt/lsus-docker/.env и данных на диске.
Установка с нуля — Развёртывание серверов. Справочник переменных — Справочник. Клиент — Клиент LSUS.
Принципы обновления¶
| Принцип | Смысл |
|---|---|
| Пакеты с диска | apt install ./… или dnf install ./… из каталога поставки, как при установке; на Альт Сервере — apt-get install ./… от root (su -) |
| Порядок пакетов | Сначала образы (lsus-image-postgres, lsus-image-pgbouncer — только Master/Site, lsus-image-nginx, lsus-image-<роль>), затем ролевой пакет (lsus-master, lsus-site, lsus-edge). На практике достаточно одного ролевого пакета — остальные подтянутся по Depends/Requires. |
.env не затирается |
Если .env уже есть, пакет не перезаписывает его — сохраняются пароли, порты и пути. Добавляются только недостающие безопасные defaults PostgreSQL/пулов |
| Данные сохраняются | Каталог DATA_DIR и вынесенные диски остаются между обновлениями; меняются только образы и контейнеры |
| Контейнеры пересоздаются автоматически | Скрипт postinst ролевого пакета сам делает docker load образов и docker compose … up -d --force-recreate |
Перед обновлением¶
- Ознакомьтесь с описанием релиза и историей изменений на портале поставки.
- Запланируйте окно обслуживания: на время пересоздания контейнеров возможна краткая недоступность веб-интерфейса и API.
- Выполните резервное копирование по регламенту организации.
Обязательно сделайте резервную копию
Перед обновлением (особенно перед мажорным переходом) создайте резервную копию:
- базы PostgreSQL (DATA_DIR/postgres/);
- каталогов репозиториев (master/repos, site/repos);
- KB-кеша (master/kb-cache);
- хранилища Edge (edge/storage);
- моделей AI (data/ai/ollama);
- файла /opt/lsus-docker/.env и credentials-*.txt.
Без резервной копии откат после неудачного обновления затруднён или невозможен.
Резервное копирование PostgreSQL¶
# логический дамп (рекомендуется перед обновлением)
sudo docker exec lsus-postgres pg_dumpall -U postgres > /backup/lsus-$(date +%F).sql
# или физическая копия каталога (при остановленных контейнерах)
sudo docker compose -f /opt/lsus-docker/docker-compose.yml --env-file /opt/lsus-docker/.env --profile master stop
sudo cp -a /opt/lsus-docker/data/postgres /backup/postgres-$(date +%F)
sudo docker compose -f /opt/lsus-docker/docker-compose.yml --env-file /opt/lsus-docker/.env --profile master start
Проверка версии до обновления¶
Зафиксируйте текущую версию перед обновлением:
# версия в .env
grep LSUS_VERSION /opt/lsus-docker/.env
# версия сервера через API (порт 443 по умолчанию)
curl -sk https://master.example.com/api/v1/clients/health | grep server_version
Обновление сервера: Master, Site или Edge¶
Шаг 1. Получить пакеты новой версии¶
Скачайте с портала LSUS нужный набор .deb или .rpm для вашей ОС и роли в один каталог, например /opt/lsus-pkgs.
Шаг 2. Установить пакеты в правильном порядке¶
Пример для Master на Astra Linux (при установке из локального каталога):
cd /opt/lsus-pkgs
sudo apt update
sudo apt install ./lsus-image-postgres_<версия>_all.deb
sudo apt install ./lsus-image-pgbouncer_<версия>_all.deb
sudo apt install ./lsus-image-nginx_<версия>_all.deb
sudo apt install ./lsus-image-master_<версия>_all.deb
sudo apt install ./lsus-master_<версия>_astra.deb
Альтернатива — один пакет
При установке из репозитория ОС или одной командой из локального каталога достаточно поставить только ролевой пакет — пакетный менеджер сам обновит все пакеты образов по зависимостям:
wzxhzdk:3
Для Site замените lsus-image-master → lsus-image-site, ролевой пакет → lsus-site (PgBouncer нужен).
Для Edge пакет lsus-image-pgbouncer не нужен, ролевой пакет — lsus-edge.
Для РЕД ОС — те же имена пакетов с суффиксом -<версия>-1.noarch.rpm, команда sudo dnf install ./….
Для Альт Сервера — пакеты с суффиксом -alt1, от root (su -): # apt-get install ./lsus-master-<версия>-alt1.noarch.rpm; при подключённом репозитории LSUS — # apt-get update && # apt-get install lsus-master. Подробнее — Установка на Альт Сервер.
Что делает postinst
При установке поверх существующей версии ролевой пакет:
1. обновляет LSUS_VERSION в .env (порты и пароли не трогает);
2. добавляет отсутствующие ключи профиля PostgreSQL/пулов;
3. делает docker load образов из /usr/share/lsus-docker/images/;
4. пересоздаёт контейнеры профиля (docker compose … up -d --force-recreate).
Шаблон скрипта — docker/packaging/common/postinst.sh.tpl в исходниках поставки.
Шаг 3. Когда нужна ручная команда compose¶
В типовом сценарии ничего дополнительно делать не нужно — перезапуск выполняет postinst. Команду вручную имеет смысл выполнить, если:
- вы изменили
.envи не переустанавливали ролевой пакет; - postinst завершился с ошибкой (Docker не был доступен, сбой
docker load); - обновили только пакеты образов (
lsus-image-*) без ролевого пакета.
cd /opt/lsus-docker
sudo docker compose -f docker-compose.yml --env-file .env --profile master up -d --force-recreate
Для Site — --profile site, для Edge — --profile edge.
Обновление через update.sh
Если обновление выполняется вручную через /opt/lsus-docker/update.sh, используйте update.sh из нового комплекта поставки, а не только новые файлы images/*.tar.gz. Новый update.sh запускает миграцию Docker-конфигурации и .env перед пересозданием контейнеров.
Шаг 4. Проверить работоспособность¶
# health — ожидаемый ответ {"status":"ok","role":"master"} (порт 443 по умолчанию)
curl -k https://master.example.com/api/v1/health
# статус контейнеров — все Up (healthy)
cd /opt/lsus-docker && sudo docker compose -f docker-compose.yml --env-file .env --profile master ps
# параметры PostgreSQL после обновления
sudo bash /opt/lsus-docker/scripts/check-postgres-tuning.sh
# версия после обновления
curl -sk https://master.example.com/api/v1/clients/health | grep server_version
Откат на предыдущую версию¶
Если после обновления сервер работает некорректно и устранить проблему не удалось, выполните откат.
Совместимость версий¶
Проверяйте совместимость
- Минорные обновления (например, 1.0.66 → 1.0.67) — откат безопасен, схема БД не меняется.
- Мажорные переходы (например, 1.0.x → 1.1.x) — схема БД может измениться. После миграции откат возможен только через восстановление БД из резервной копии.
- Не прыгайте через несколько мажорных релизов без сверки с описанием релизов — миграции могут быть необратимыми.
Процедура отката¶
1. Остановите контейнеры:
cd /opt/lsus-docker
sudo docker compose -f docker-compose.yml --env-file .env --profile master down
2. Верните предыдущую версию пакетов (переустановите пакеты старой версии — пример для Master на Astra):
cd /opt/lsus-pkgs
sudo apt install ./lsus-image-postgres_<старая_версия>_all.deb
sudo apt install ./lsus-image-pgbouncer_<старая_версия>_all.deb
sudo apt install ./lsus-image-nginx_<старая_версия>_all.deb
sudo apt install ./lsus-image-master_<старая_версия>_all.deb
sudo apt install ./lsus-master_<старая_версия>_astra.deb
Примечание
Если LSUS_VERSION в .env обновился, отредактируйте его вручную, вернув старое значение, либо переустановите старый ролевой пакет — он вернёт версию в .env.
3. При мажорном переходе — восстановите БД из резервной копии:
# восстановить логический дамп
sudo docker exec -i lsus-postgres psql -U postgres < /backup/lsus-<дата>.sql
4. Запустите контейнеры и проверьте:
cd /opt/lsus-docker
sudo docker compose -f docker-compose.yml --env-file .env --profile master up -d --force-recreate
curl -k https://master.example.com/api/v1/health
Действия при падении миграции БД¶
Если миграция базы данных оборвалась посередине (контейнер Master не стартует, в логах ошибка миграции):
- Не перезапускайте контейнер бездумно — это может усугубить состояние БД.
- Изучите логи миграции:
bash
sudo docker logs lsus-master 2>&1 | grep -i -A20 "migrat\|alembic\|error"
- Восстановите БД из резервной копии (см. Резервное копирование), выполненной до обновления.
- Повторите обновление после восстановления чистого состояния БД.
Предупреждение
Никогда не оставляйте БД в частично мигрированном состоянии «на потом» — это источник трудно диагностируемых ошибок. Либо доведите миграцию до конца (устранив причину сбоя), либо откатитесь к чистой резервной копии.
Обновление клиента LSUS¶
Клиент обновляется отдельными пакетами с портала. Порядок: сначала lsus-client, затем lsus-client-gui (если установлен), затем lsus-usb-control (если обновляются все).
Автообновление через LSUS
Автообновление клиента через саму систему LSUS работает с установленным набором пакетов как с одним семейством: базовый lsus-client обновляется всегда, lsus-client-gui и lsus-usb-control подтягиваются только если они уже установлены. Это не ставит GUI/USB на серверы без этих компонентов.
Агент lsus-client¶
cd /opt/lsus-pkgs
# Astra / Debian / Ubuntu
sudo apt install ./lsus-client_<версия>_all.deb
sudo apt install ./lsus-client-gui_<версия>_all.deb # если установлен GUI
# РЕД ОС / ALT
sudo dnf install ./lsus-client-<версия>-1.noarch.rpm
sudo dnf install ./lsus-client-gui-<версия>-1.noarch.rpm # если установлен GUI
Перезапуск службы:
sudo systemctl restart lsus-client.service
Настройки в /etc/lsus-client/ сохраняются между обновлениями.
Агент lsus-usb-control¶
Только если в контуре используется контроль сменных носителей:
cd /opt/lsus-pkgs
# Astra / Debian / Ubuntu
sudo apt install ./lsus-usb-control_<версия>_astra.deb
# РЕД ОС / ALT
sudo dnf install ./lsus-usb-control-<версия>.rpm
sudo systemctl restart lsus-usb-control.service
Конфигурация в /etc/lsus-usb-control/ сохраняется. Подробнее — USB Control.
Агент lsus-config-agent¶
Агент управления конфигурациями (Ansible для Linux) обновляется отдельным пакетом:
cd /opt/lsus-pkgs
# Astra / Debian / Ubuntu
sudo apt install ./lsus-config-agent_<версия>_all.deb
# РЕД ОС / ALT
sudo dnf install ./lsus-config-agent-<версия>.rpm
sudo systemctl restart lsus-config-agent.service
Настройки в /etc/lsus-config-agent/ сохраняются. Подробнее — lsus-config-agent.
Windows-агенты¶
Windows-агенты (патч-служба LsusAgent и служба конфигураций LsusConfigAgent) обновляются автоматически с сервера — команда UPDATE_AGENT скачивает новый MSI/ZIP и переустанавливает службу. Ручное обновление не требуется. Хосты за сайт-сервером получают пакет из кэша сайта, без повторной перекачки с master на каждую машину.
Управление версиями — во вкладке Управление обновлениями → Версии агента на Master. Сервер различает пакеты по component (patch / config), поэтому службы можно обновлять независимо. Подробнее — Клиент LSUS (Windows).
Обновление AI-стека¶
AI-стек (Ollama и OpenClaw) версонируется отдельно от сервера (AI_VERSION, не LSUS_VERSION) и обновляется независимо. Установка — см. Установка AI-стека.
# обновить оба компонента
sudo bash demo-infra/scripts/install-lsus-docker-rpm.sh ai-all
# или по отдельности
sudo bash demo-infra/scripts/install-lsus-docker-rpm.sh ollama
sudo bash demo-infra/scripts/install-lsus-docker-rpm.sh openclaw
При ручной установке из локального каталога:
# Astra / Debian / Ubuntu
sudo apt install ./lsus-image-ollama_<версия>_all.deb
sudo apt install ./lsus-image-openclaw_<версия>_all.deb
# РЕД ОС / RHEL
sudo dnf install ./lsus-image-ollama-<версия>-1.noarch.rpm
sudo dnf install ./lsus-image-openclaw-<версия>-1.noarch.rpm
Перезапуск профилей после обновления:
cd /opt/lsus-docker
sudo docker compose -f docker-compose.yml --env-file .env --profile ollama up -d --force-recreate
sudo docker compose -f docker-compose.yml --env-file .env --profile openclaw up -d --force-recreate
Модели сохраняются
Загруженные модели Ollama (data/ai/ollama/) и конфигурация OpenClaw (data/ai/openclaw/) не удаляются при обновлении — обновляются только образы и контейнеры.
Портал документации¶
Если в поставке есть отдельные пакеты портала или иных сервисов, обновляйте их по инструкции к релизу тому же принципу: пакет ОС с локального каталога, затем пересоздание контейнеров через docker compose.
Чек-лист обновления¶
- [ ] Ознакомились с описанием релиза.
- [ ] Сделали резервную копию БД и данных.
- [ ] Зафиксировали текущую версию.
- [ ] Установили пакеты (достаточно одного ролевого; при установке из локального каталога — все пакеты образов и ролевой в одной команде).
- [ ] Проверили health-эндпоинт и статус контейнеров.
- [ ] Сверили версию после обновления.
- [ ] Обновили клиентские пакеты (
lsus-client,lsus-config-agent— если нужно). - [ ] Обновили AI-стек, если используется (Ollama/OpenClaw — по отдельной версии
AI_VERSION).
Связанные страницы¶
- Обзор системы — архитектура ролей и топологии.
- Развёртывание серверов — установка с нуля (включая AI-стек).
- Клиент LSUS — установка и диагностика агента (Linux).
- Клиент LSUS (Windows) — самообновление Windows-агентов.
- AI-стек — Ollama и OpenClaw.
- Docker и образы — состав контейнеров и пакетов.