Skip to content

Компоненты и надёжность

Инсталляция Catena состоит из немногих частей, и у каждой — свой носитель состояния и свои гарантии. Эта страница — карта: что где хранится, что переживает потерю чего и на чём держится совместимость при обновлениях. Поведение кластера при отказе central разобрано отдельно — Автономия стримера.

Из чего состоит инсталляция

  • Сервис catena на central-машине — управляющий контур и локальный стример в одном процессе.
  • PostgreSQL — хранилище состояния central. Единственное: собственного каталога состояния у central нет.
  • Сервисы стримеров — вещание; у каждого свой state-каталог и свои диски архива.
  • Хранилище метрик — встроенное, в памяти процесса, с горизонтом в несколько часов; история для графиков, не архив.

Что хранится в PostgreSQL

Всё, что составляет desired state и учёт инсталляции:

  • конфигурации каналов и конфиги стримеров;
  • реестр стримеров — записи с идентичностью и ключами машин;
  • раскладка каналов, журнал решений и прогонов лейаутера;
  • CDN-зоны;
  • журнал закрытых сессий;
  • TLS-материал central — ACME-аккаунт и выписанные сертификаты.

Следствие простое: цел бэкап базы — цела инсталляция. Как его снимать и восстанавливать — Бэкап и восстановление.

Что хранится на стримере

State-каталог /var/lib/catena каждой машины:

  • server.id и кэш активации — идентичность машины для лицензирования;
  • идентичность стримера в кластере — ключ, которым он предъявляет себя central;
  • кэш применённого среза конфигурации — то, что даёт тёплый старт без central;
  • локальный журнал закрытых сессий до того, как его заберёт central.

Архив DVR живёт не здесь — на отдельных дисках, заданных в настройках стримера.

Что переживает потерю чего

Потеряно Что происходит Что делать
Процесс central Эфир и запись продолжаются; управление и зрительский путь через central замирают Автономия стримера; процесс поднимается — кластер срастается сам
База PostgreSQL Как выше, плюс потерян desired state Восстановить из дампа — стримеры переподключаются сами
База и бэкапа нет Эфир продолжается; стримеры осиротели Переподцепить каждый: сброс state + новый токен
State-каталог стримера Машина теряет идентичность — и лицензионную, и кластерную Присоединить машину заново; каналы переразместятся
Диск DVR Теряется архив этого диска; эфир не затронут Лампы диска в диагностике
Хранилище метрик (рестарт процесса) Теряется история графиков за несколько часов Ничего — накопится заново

Гарантии совместимости

  • Разные версии соседствуют. Обменный протокол расширяется только добавлением: неизвестные поля обязаны игнорироваться обеими сторонами, поэтому central и стримеры соседних версий работают вместе.
  • Схема базы совместима в окне двух версий. Более новая схема под старым кодом — норма; это делает возможным и поэтапное обновление, и откат бинарника без отката базы.
  • Регистрация не идемпотентна — сознательно. Повторное присоединение той же машины даёт новую запись реестра, а дубли по server_id реестр помечает и оставляет решение оператору — см. Список стримеров.