bac55cbdfd
Поскольку Интеграционный шлюз НРД (ИШ) официально работает только на Astra Linux SE 1.6/1.7 (RPM-версии нет, дистрибутив только .deb для Debian-based), мигрируем инфраструктуру с РЕД ОС на Astra. Это заодно проверит «чистую» установку с нуля. deploy/astra/install.sh — установщик bj-server для свежей Astra ВМ: - проверка ОС (Astra Linux SE) - apt-зависимости (curl, git, podman, podman-compose, postgresql-client) - скачивание Go 1.24+ с go.dev, если нет - системный пользователь bj + каталоги /opt/bj /var/lib/bj /var/log/bj - git clone репо в /opt/bj/src - go build бинарника /opt/bj/bj-server - podman-compose up -d postgres + накат всех миграций - systemd unit с безопасными ограничениями (NoNewPrivileges, ProtectSystem=strict, ReadWritePaths только нужные, PrivateTmp) - автозапуск + проверка systemctl is-active - финальная подсказка с URL'ами deploy/astra/install-validata.sh — установщик Валидата CSP: - ищет .deb пакеты в dist/validata/ или принимает путь аргументом - если пакетов нет — печатает текст письма для запроса дистрибутива у НРД (soed@nsd.ru) или МБ (pki@moex.com) - dpkg -i + apt-get install -f для зависимостей - проверка установки в /opt/Validata* deploy/astra/install-ish.sh — установщик ИШ: - ищет igate_*_amd64.deb в стандартных местах (dist/ish/, ~/Downloads и т.п.) - проверяет наличие Валидаты (предупреждает если нет) - dpkg -i igate_*.deb - подсказывает следующие шаги (запуск GUI, настройка БД и канала WSL) deploy/astra/migrate-from-redos.sh — экспорт со старой РЕД ОС ВМ: - pg_dump БД bj (через podman exec или напрямую) - копия ~/.bj/setup.json (ищется в нескольких стандартных путях) - последние 7 дней логов из /var/log/bj и journalctl - meta.txt с версиями ОС/пакетов - README.md с инструкциями восстановления на новой ВМ - итоговый тарбол /tmp/bj-migration-YYYY-MM-DD-HHMM.tar.gz deploy/astra/healthcheck.sh — проверка после установки: - 8 разделов: ОС, пользователь/каталоги, systemd, HTTP, PostgreSQL, Валидата, ИШ, сетевые порты - цветной вывод OK/WARN/FAIL для каждого пункта deploy/astra/README.md — пошаговая инструкция миграции из 8 этапов: - подготовка (Astra ВМ, доступ root, запрос Валидаты у НРД) - экспорт со старой ВМ - install.sh на новой ВМ - restore БД и настроек - healthcheck - install-validata.sh + импорт сертификатов УЦ МБ - install-ish.sh + настройка канала WSL - первый тест с роботом MOEX МОСТ - раздел «что НЕ переносится автоматически» - раздел «откат» (старая ВМ работает до подтверждения миграции) REPORT.md обновлён: - общая готовность 72% → 75% - готовность к роботу 85% → 88% - новая строка «Установщик/мигратор на Astra Linux: 100% ✅» - «Установка ИШ на наш стенд» поднялась с 0% до 30%
140 lines
6.9 KiB
Markdown
140 lines
6.9 KiB
Markdown
# Миграция Bridge-and-Join-s на Astra Linux
|
||
|
||
Полный набор скриптов для **чистой установки с нуля** на свежей
|
||
Astra Linux Special Edition 1.6/1.7 ВМ и переноса данных со старой
|
||
РЕД ОС.
|
||
|
||
## Зачем мигрируем
|
||
|
||
Интеграционный шлюз НРД (ИШ) — единственный поддерживаемый канал к
|
||
сервису MOEX МОСТ — официально работает только на **Astra Linux**
|
||
(дистрибутив `igate_100.0-765_amd64.deb`). РЕД ОС в списке поддерживаемых
|
||
ОС отсутствует, RPM-версии ИШ нет. Поэтому всю инфраструктуру
|
||
переводим на Astra.
|
||
|
||
Кроме того, ИШ требует СКЗИ **«Валидата CSP»** (НЕ КриптоПро) —
|
||
этот переход тоже происходит в рамках миграции.
|
||
|
||
## Файлы в этом каталоге
|
||
|
||
| Файл | Где запускать | Назначение |
|
||
|---|---|---|
|
||
| `install.sh` | новая Astra ВМ (root) | Установка bj-server (зависимости, Go, podman, postgres, бинарник, systemd) |
|
||
| `install-validata.sh` | новая Astra ВМ (root) | Установка СКЗИ Валидата CSP + АПК Валидата Клиент L (после получения дистрибутива от НРД) |
|
||
| `install-ish.sh` | новая Astra ВМ (root) | Установка ИШ (`dpkg -i igate_*.deb`) |
|
||
| `migrate-from-redos.sh` | старая РЕД ОС ВМ | Экспорт состояния (БД, настройки, логи) в архив для переноса |
|
||
| `healthcheck.sh` | новая Astra ВМ | Проверка состояния всех компонентов после установки |
|
||
|
||
## Пошаговый план миграции
|
||
|
||
### Этап 1. Подготовка
|
||
- [ ] Поднять чистую Astra Linux SE 1.7 ВМ (рекомендую 10.10.10.23)
|
||
- [ ] Доступ root по SSH
|
||
- [ ] Прямой выход в интернет (для скачивания Go и зависимостей)
|
||
- [ ] Параллельно отправить письмо в НРД (`soed@nsd.ru`) с запросом
|
||
дистрибутива Валидаты под Linux + временной лицензии
|
||
|
||
### Этап 2. Экспорт со старой ВМ (РЕД ОС)
|
||
```bash
|
||
# на старой ВМ
|
||
ssh fontvielle@10.10.10.22
|
||
cd ~/Bridge-and-Join-s
|
||
sudo bash deploy/astra/migrate-from-redos.sh
|
||
# создаст /tmp/bj-migration-YYYY-MM-DD-HHMM.tar.gz
|
||
```
|
||
|
||
### Этап 3. Установка bj-server на новую ВМ (Astra Linux)
|
||
```bash
|
||
# на новой Astra ВМ
|
||
ssh root@10.10.10.23
|
||
# вариант А — через git
|
||
curl -sSL https://git.zetit.ru/zuevav/Bridge-and-Join-s/raw/main/deploy/astra/install.sh \
|
||
| sudo bash
|
||
|
||
# вариант Б — локально (если уже скопировал репо)
|
||
cd /opt/bj/src
|
||
sudo bash deploy/astra/install.sh
|
||
```
|
||
|
||
### Этап 4. Перенос данных
|
||
```bash
|
||
# перекинуть архив на новую ВМ
|
||
scp /tmp/bj-migration-*.tar.gz root@10.10.10.23:/tmp/
|
||
|
||
# на новой ВМ
|
||
cd /tmp
|
||
tar -xzf bj-migration-*.tar.gz
|
||
cd bj-migration-*
|
||
|
||
# восстановить БД
|
||
podman exec -i bj-postgres psql -U bj -d bj < bj.sql
|
||
|
||
# восстановить настройки
|
||
sudo cp setup.json /var/lib/bj/.bj/setup.json
|
||
sudo chown bj:bj /var/lib/bj/.bj/setup.json
|
||
sudo chmod 0600 /var/lib/bj/.bj/setup.json
|
||
|
||
sudo systemctl restart bj-server
|
||
```
|
||
|
||
### Этап 5. Проверка
|
||
```bash
|
||
sudo bash /opt/bj/src/deploy/astra/healthcheck.sh
|
||
```
|
||
Открыть в браузере: `http://10.10.10.23:8080/admin/`
|
||
|
||
### Этап 6. Установка ИШ (после получения дистрибутивов от НРД)
|
||
```bash
|
||
# 1. Валидата (когда придёт от НРД)
|
||
sudo bash deploy/astra/install-validata.sh /path/to/validata-csp.deb
|
||
|
||
# 2. Импорт сертификатов УЦ МБ через GUI Справочника Валидаты:
|
||
# - корневой сертификат УЦ МБ
|
||
# - пользовательский сертификат с приватным ключом
|
||
# - Сервис → Экспортировать в системное хранилище
|
||
|
||
# 3. Сам ИШ (дистрибутив уже скачан в dist/ish/)
|
||
sudo bash deploy/astra/install-ish.sh
|
||
|
||
# 4. Настроить канал WSL в ИШ (GUI):
|
||
# URL: https://gost.nsd.ru/onyxt3/WslService (TEST3)
|
||
# Сертификат: из системного хранилища
|
||
# БД: PostgreSQL (тот же что и bj-server)
|
||
|
||
# 5. Запустить ИШ как сервис
|
||
sudo systemctl enable --now igate
|
||
```
|
||
|
||
### Этап 7. Привязка bj-server к ИШ
|
||
В админке `http://10.10.10.23:8080/admin/setup` → «Интеграционный шлюз НРД»:
|
||
- URL ИШ: `http://localhost:8090` (REST API ИШ)
|
||
- Имя канала: тот что создали в ИШ на шаге 6
|
||
|
||
### Этап 8. Первый тест с роботом
|
||
```bash
|
||
# Через UI: /admin/setup → «Тестовый прогон сквозной заявки»
|
||
# Это отправит заявку с ReceiverCode=MC0012500000 и DocumentSeries=2001
|
||
# → робот НРД ответит «Принять все бумаги» через ~30 сек
|
||
```
|
||
|
||
## Откат
|
||
|
||
Старая РЕД ОС ВМ продолжает работать до подтверждения миграции.
|
||
Если что-то пойдёт не так — просто переключаем DNS/Nginx обратно на 10.10.10.22.
|
||
|
||
## Что НЕ переносится автоматически
|
||
|
||
| Что | Почему | Что делать |
|
||
|---|---|---|
|
||
| КриптоПро CSP | На Astra используется Валидата | Получить дистрибутив Валидаты у НРД, поставить заново |
|
||
| Сертификаты в `/var/opt/cprocsp/keys/` | Формат КриптоПро ≠ формат Валидаты | Сертификат УЦ МБ — получить заново или экспортировать с КриптоПро и импортировать в Валидата (если совместимый формат) |
|
||
| Локальные кастомизации systemd | install.sh ставит свой unit | Сравнить /etc/systemd/system/bj-server.service до/после |
|
||
|
||
## Если что-то сломалось
|
||
|
||
1. Логи bj-server: `journalctl -u bj-server -f`
|
||
2. Файл лога: `tail -f /var/log/bj/bj-server.log`
|
||
3. Логи ИШ: `journalctl -u igate -f` (если запущен как systemd)
|
||
4. Health-check: `sudo bash deploy/astra/healthcheck.sh`
|
||
5. Поддержка НРД по ИШ/Валидате: `soed@nsd.ru`, по форматам M2M: `M2MOST@nsd.ru`
|