Добавление стримера¶
Стример — это машина, которая присоединяется к существующей инсталляции и начинает нести стримы. Central впускает её через окно присоединения, ограниченное по времени; ничего подтверждать руками не нужно.
Держите открытым список стримеров — там новая машина и появится.
На стримере работает пакет agora-base — ровно тот же сервер, что и на первой машине. Отличие в одном ответе при установке: стример к кластеру присоединяется, а первая машина его заводит, добирая сверху пакет agora с консолью и базой.
Подготовьте машину¶
Подключите репозиторий, положите лицензию и поставьте пакет:
curl -L http://apt.flussonic.ru/repo/master/dev.key > /etc/apt/trusted.gpg.d/dev.gpg
echo "deb http://apt.flussonic.ru/branch/sapsan/master repo/" > /etc/apt/sources.list.d/flussonic.list
apt update
mkdir -p /etc/agora
cp license.txt /etc/agora/license.txt
chmod 600 /etc/agora/license.txt
apt install --install-recommends agora-base
При установке оставьте адрес существующего PostgreSQL пустым: стримеру база не нужна. На вопрос о присоединении к кластеру ответьте «да». Адрес central и join-токен можно оставить пустыми и заполнить на следующем шаге. Если ключ уже лежит в файле лицензии, повторно вводить его не нужно.
Каждому стримеру нужен свой ключ лицензии — без него сервис не стартует. --install-recommends сохраняет плагины транскодера, без которых стример может нести стримы, но не может их кодировать.
Отдельный конфигурационный файл стримеру не нужен: адрес central и токен задаются в /etc/agora/secrets.env. Имя машины можно указать переменной NODE_NAME.
Откройте окно присоединения¶
На central откройте Стримеры и нажмите Разрешить присоединение.
Central выдаёт join-токен — он начинается с jt- — и открывает окно ровно на один час. Срок фиксирован и не настраивается. В панели появляются:
- сам токен — он показан здесь один раз, при выдаче; после перезагрузки страницы он снова скрыт, и открыть его повторно можно глазком;
- обратный отсчёт до закрытия окна;
- Продлить — отодвигает срок ещё на час и оставляет тот же токен, поэтому машинам, которым вы его уже отдали, ничего перераздавать не нужно;
- готовая к вставке команда для стримера.

Никакого подтверждения и очереди заявок нет. Действующий непросроченный токен впускает стример сам по себе; ваш инструмент контроля — длина окна, а не решение по каждой машине. Относитесь к токену соответственно и закрывайте окно кнопкой удаления, как только нужные машины вошли.
Настройте и запустите стример¶
Скопируйте команду из панели и выполните её в root-шелле стримера:
cat >> /etc/agora/secrets.env <<EOF
CENTRAL_URL=http://central.example.com
JOIN_TOKEN=jt-...
EOF
systemctl restart agora
Значения именно дозаписываются. Пакет завёл этот файл при установке, а последнее присвоение выигрывает — поэтому ту же команду можно выполнить повторно, когда стример переезжает в другой кластер или когда токен пришлось выдать заново.
Проверьте CENTRAL_URL перед выполнением. Панель подставляет его из адреса того браузера, в котором вы смотрите на неё. Если вы открываете консоль по имени, которое стример не разрешит, или через обратный прокси на другом адресе, поправьте руками. Этот адрес должен быть доступен самому стримеру.
В том же файле задаются NODE_NAME — операторская метка машины, по умолчанию её hostname — и HTTP, постоянное перекрытие HTTP-порта.
Раскатка без интерактива¶
Вопросы установки задаются через debconf, поэтому ответы можно преднабить штатными средствами deb — ansible ничего особенного знать не должен:
debconf-set-selections <<EOF
agora-base agora-base/license_key string l4|...
agora-base agora-base/join_cluster boolean true
agora-base agora-base/central_url string http://central.example.com
agora-base agora-base/join_token password jt-...
EOF
DEBIAN_FRONTEND=noninteractive apt install --install-recommends agora-base
Вопросов не будет ни одного, машина поднимется и присоединится сама. Тот же результат даёт передача значений переменными окружения самой установки:
CENTRAL_URL=http://central.example.com JOIN_TOKEN=jt-... \
DEBIAN_FRONTEND=noninteractive apt install --install-recommends agora-base
Переменные окружения выигрывают у ответов debconf. Ни один из способов не перезаписывает то, что на машине уже есть: заполненные адрес и токен переживают и переустановку, и обновление пакета.
Дождитесь появления¶
Через несколько секунд стример регистрируется и появляется в реестре. Central выдаёт ему node_id и возвращает ключ, который стример вместе с идентификатором складывает в свой каталог состояния (по умолчанию /var/lib/agora).
С этого момента join-токен для этой машины не важен: при каждом перезапуске стример аутентифицируется ключом и заново не регистрируется. Закрытие или истечение окна уже присоединившиеся стримеры не трогает.
Новый стример регистрируется без назначенных стримов. Что на нём запускать, решает central, а не настройка на самой машине.
Если стример не появился¶
Растут «Отклонённые попытки». Стример до central достучался, и central его разворачивает: окно закрыто либо токен неверен или просрочен. Откройте окно снова и скопируйте токен заново. Отказ в регистрации — не фатальная ошибка: стример продолжает попытки с нарастающей паузой, поэтому впустит себя сам, как только появится действующее окно, — на машине делать ничего не нужно.
Счётчик не растёт, и стример не появляется. Значит, стример не дотягивается до central вовсе. Проверьте адрес из шелла самой машины — он должен разрешаться и отвечать именно там, а не только с вашей рабочей машины — и посмотрите лог:
journalctl -u agora -n 50
Стример появился дважды. Регистрация не идемпотентна: каждая принятая регистрация создаёт новую запись с новым node_id. Повтор на машине, которая уже присоединялась после стирания каталога состояния и запуска заново оставляет старую запись на месте и помечает обе строки как дубликат. Удалите устаревшую.