Переход с Flussonic Media Server¶
Catena умеет забрать конфигурацию работающего Flussonic Media Server и завести по ней свои стримы: мастер импорта читает конфигурацию по API источника, показывает, что именно переедет и что потеряется, и записывает документы только после вашего подтверждения.
Импорт — не переключатель. Это первый шаг процедуры, в которой есть ещё ручная настройка машины, проверка эфира и собственно перевод зрителей. Страница описывает её целиком.
Что нужно до начала¶
- Flussonic Media Server работает и доступен central по сети. Импорт читает конфигурацию через API источника, а не разбирает файл с диска. Выключенный сервер импортировать нечем.
- Учётная запись с правом читать конфигурацию — та же, которой вы заходите в интерфейс источника (
edit_authилиapi_auth). - Инсталляция Catena уже поднята: central с консолью и хотя бы один стример. Если её ещё нет — начните с быстрого старта, а сюда вернитесь потом.
Учётные данные источника central нигде не сохраняет: они живут только на время построения плана и не попадают ни в базу, ни в логи.
Оба сервера на одной машине¶
До самого переключения работают оба сервера, а порт 80 у них общий: Catena попытается слушать его, не сможет и будет перезапускаться с ошибкой Address already in use — установщик при этом напишет, что сервис не стартовал. Это ожидаемо: переведите её на свободный порт:
sudo systemctl edit catena
Закомментированные строки в открывшемся файле — справочная копия юнита, их не трогайте. Свои строки добавляйте выше разделителя «Lines below this comment will be discarded» — всё, что ниже него, при сохранении выбрасывается:
[Service]
Environment=INITIAL_HTTP_PORT=8081
Сохраните, закройте редактор и перезапустите: sudo systemctl restart catena. Консоль Catena откроется на порту 8081. Когда дойдёте до остановки старого сервера, верните Catena порт 80 в настройках стримера — ссылки зрителей не изменятся.
Что переносит импорт, а что вы настроите сами¶
Импорт переносит контент:
- стримы,
- секции шаблонов (транскодер, архив, превью, таймауты),
- бэкенды авторизации — в единую политику допуска кластера.
Импорт не переносит устройство машины, потому что оно описывает конкретный сервер, а не ваш эфир:
- листенеры и порты,
- диски и раскладку архива,
- VOD-локации,
- реверс-прокси и TLS-сертификаты.
Всё это вы задаёте при заведении стримера — см. добавление стримера и настройки ноды. Импорт перечислит найденные у источника непереносимые секции в отчёте, чтобы ничего не потерялось из виду.
Отдельно стоит запомнить: стрим с настроенным архивом переедет, но писать не начнёт, пока на стримере не настроено хранилище. Глубина и размер архива живут в документе стрима, а место хранения — в настройках машины. Настройте диски до того, как переключите трафик, иначе запись будет считаться включённой и не идти.
Кластер переносится по одной машине¶
Импорт знает один адрес за прогон. Если у вас кластер Flussonic, запустите мастер по разу на каждый сервер: конфигурация в кластере разложена по машинам, и на каждой своя.
Стримы, которые сервер видит от соседей, документами не станут — они не его конфигурация, а состояние. Так же не переедут стримы, заведённые публикацией: их создаёт эфир, а не оператор.
Топология кластера Flussonic — peers, балансировщики, cluster_ingest — в Catena не переносится вообще. Здесь размещением занимается лейаутер: вы говорите, какие стримы нужны, а он решает, на какой машине их поднять.
Как пройти мастер¶
Откройте в консоли Импорт из Flussonic и укажите адрес источника и учётные данные.

Мастер построит план — что именно будет сделано, до единой записи:
- сколько документов будет создано, а сколько пропущено или перезаписано (и каких именно — поимённо);
- укладывается ли импорт в вашу лицензию;
- какая политика допуска действует сейчас и какая её заменит;
- какие секции источника не переносятся;
- предупреждения, о которых ниже.

План живёт пятнадцать минут и применяется один раз. Применяется ровно то, что вы видели на экране: если за это время конфигурацию источника поправят, изменения в этот импорт не попадут — постройте план заново.
При конфликте имён есть две политики. Пропустить (по умолчанию) не трогает то, что уже есть в кластере, — поэтому повторный импорт безвреден и им удобно дозаливать. Перезаписать приводит документы к источнику; в плане такие имена перечислены, и учтите, что перезапись сотрёт и ваши собственные правки в Catena.
Стримы с собственной авторизацией¶
В Flussonic допуск можно задать отдельно каждому стриму. В Catena политика допуска одна на весь кластер — своей авторизации у стрима нет.
Значит, стрим, закрытый в источнике собственным бэкендом, после импорта окажется под общей политикой и сменит круг зрителей. Для платного канала это означает, что он может открыться наружу.
Поэтому мастер такие стримы не пропускает молча: он покажет их число и спросит, что делать — импортировать под кластерной политикой или не импортировать вовсе и завести их отдельно. Пока вы не ответите, применение недоступно.

Импортированные стримы включаются сразу¶
Стрим переезжает включённым, если он не был выключен в источнике. Пока старый сервер ещё в эфире, это имеет цену, и мастер о ней предупредит:
- у источников появляется второй потребитель. RTSP-камера с ограничением на число соединений отдаст поток одному из серверов; SRT- и RTMP-pull может выбить старое соединение.
- раздача поедет в те же приёмники. Если у стримов настроены пуши, на транспондере или в CDN получится дубль, и увидит его зритель.
Погасить только раздачу нельзя: у настройки пуша нет признака «выключен». Если параллельная работа для вас неприемлема, планируйте импорт ближе к самому переключению или остановите пуши на источнике.
Исключение — стримы с шифрованием. Стрим, у которого в Flussonic настроен DRM, приезжает выключенным, и причина названа в отчёте. Настройки шифрования не переносятся дословно: у Flussonic полтора десятка вендоров ключей против одного SPEKE. Стрим, который заработал бы сразу, раздавал бы премиальный контент открытым — поэтому шифрование настраивается заново, и только потом стрим включают.
Почему часть стримов может не подняться¶
Размещением в Catena занимается лейаутер, и стрим может уехать на любую подходящую машину. Если вход стрима локален для старого сервера — мультикаст, файл на диске, карта захвата, — на другой машине его просто нет, и стрим не заведётся.
Такие стримы импорт перечисляет в отчёте. После применения мастер показывает, сколько импортированных стримов поднялось и какие нет: это и есть проверка, что переезд удался. Счётчик не мгновенный — консоль опрашивает кластер, пока стримы поднимаются, поэтому сразу после применения он какое-то время меньше итогового.

На снимке не поднялись ровно те два, что и должны были: sport-hd слушает мультикаст, доступный только старому серверу, а lobby-cam смотрит на камеру не из этой сети.
Как читать отчёт¶
Отчёт свёрнут по причинам: одна строка — одна причина, со счётчиком затронутых стримов; имена самих стримов раскрываются по стрелке слева. Категорий четыре:
| Категория | Что значит | Что делать |
|---|---|---|
| Перенесено приближённо | Значение переехало, но не дословно: настройка сузилась к ближайшей поддерживаемой или поведение сместилось | Проверить эфир на этих стримах |
| Не поддерживается | В Catena такой настройки нет | Искать замену; для части возможностей она есть в других разделах документации |
| Неизвестное поле | Поле есть у источника, но эта сборка Catena про него не знает | Прислать отчёт в поддержку: скорее всего, ваш Flussonic новее |
| Не создано | Документ или его секция не записаны | Разобраться отдельно: этот стрим или секция не переехали |

Отчёт выгружается файлом — его удобно приложить к обращению в поддержку. Пароли в нём замаскированы.
Перечня всех непереносимых полей на этой странице нет намеренно: он живёт в самом отчёте и меняется вместе с продуктом, а список в документации разошёлся бы с действительностью.
Архив остаётся на месте¶
Записанный архив никуда переносить не нужно и не следует: Catena читает архив, записанный Flussonic, прямо с диска. Импорт файлов архива не трогает вовсе.
Достаточно, чтобы на стримере были настроены те же диски, и стрим назывался так же: путь архива строится по имени стрима. Какие именно диски настроить, мастер импорта подскажет сам: в плане, в секции «Архив», хранилища источника показаны рядом с дисками, настроенными на стримерах.
Секция появляется, когда у источника есть запись или хранилища, и несёт:
- хранилища источника и диски стримеров полными путями, постранично рядом;
- предупреждение о несовпадении, когда ни один диск стримеров не совпал с хранилищем источника. Это предупреждение, а не ошибка: совпадение путей не гарантия (файла может не быть), несовпадение не приговор (смонтировать можно иначе — сверьте точки монтирования, особенно если источник работал в контейнере);
- перечень стримов с записью — включая тех, кто пишет через шаблон;
- строку про реестр, когда у источника index-каталог задан отдельно: перепишите его в поле «Путь каталога» стримера, иначе ретенция не будет чистить архив (чтение работает и без него);
- подсказку о целостности: мастер сверяет настройки, а не файлы, и глубокую проверку блобов и реестра делает отдельный инструмент —
legacy-dvr-checkиз состава пакета. Он нужен, когда дисков много и цену ошибки измеряют архивом: на одном-двух дисках достаточно автоматики. Запускайте его до применения плана: после применения клинер уже чистит старый архив до заданной глубины.
Если у стримов источника настроено эпизодное долгое хранение (episodes_url/episodes_expiration), оно не переносится — Catena этих настроек не имеет. Мастер не теряет записи молча: глубина архива таких стримов расширяется до эпизодной, и отчёт объясняет это записью «перенесено приближённо». Лишняя глубина обратима (место чистится по давлению), срезанные записи — нет; сузьте глубину сами, если она не нужна.
Глубина архива действует и на старые записи: с применением плана клинер сразу начинает чистить архив стрима до глубины из конфигурации источника. Если новый сервер должен хранить больше, чем было задано у Flussonic, поднимите глубину у источника до импорта (импорт заберёт её оттуда) или создайте стрим в Catena заранее с нужной глубиной — существующие имена импорт пропускает. Сузить глубину можно и после переезда; расширить задним числом нельзя — срезанное клинером не возвращается.

Экран результата после применения показывает по каждому созданному стриму с записью, пишется ли архив и виден ли накопленный: «пишется, старая запись видна» — переезд удался; «пишется, старой записи не видно» — сверьте хранилище; «не пишется» — причину ищите в настройках стримера. Счётчик не мгновенный: стримы поднимаются и начинают писать не сразу, он дорабатывается опросом.
Ссылки плеера и ваши интеграции¶
Ссылки воспроизведения не меняются. Имена стримов переезжают как есть — поэтому импорт и не предлагает переименование при конфликте: переименованный стрим означал бы сломанную ссылку у каждого зрителя и сломанный путь архива. Не меняется адрес, но не допуск: стримы, которые на Flussonic смотрели без авторизации, закроет политика допуска кластера — зрители получат 403. Если в эфире были открытые стримы, настройте политику до переключения зрителей.
API v3 доступен только на чтение. Если ваши скрипты создавали или правили стримы через API Flussonic, их придётся перевести на API v4 — в Catena конфигурацией управляет central, и запись идёт через него. Чтение статистики и списков через v3 продолжает работать.
Порядок переключения и откат¶
- Заведите стример в Catena и настройте на нём машинную часть: листенеры, диски архива, VOD-локации.
- Прогоните импорт и прочитайте отчёт. Разберитесь с записями «не создано» и «перенесено приближённо». Если дисков много — прогоните
legacy-dvr-checkдо применения плана (см. «Архив остаётся на месте»). - Дождитесь, пока стримы поднимутся, и проверьте эфир по нескольким ссылкам — особенно там, где был транскодер.
- Проверьте архив: откройте в плеере самую старую доступную запись — вердикт результата применения ранний сигнал (он смотрит окно каталога), а открытие реальной записи проверяет сами блобы.
- Переключите зрителей на новый адрес.
- Только после этого останавливайте старый сервер.
Откат до шага 5 ничего не стоит: старый сервер продолжает работать всё это время, и вернуться значит просто не переключать трафик. После шага 5 откат — это возврат прежнего адреса в раздаче; конфигурацию источника импорт не менял и не удалял, она осталась на месте.