Как быстро скопировать архив DVR на второй сервер и увеличить одновременное количество зрителей¶
На этой странице:
- Зачем нужна репликация архива?
- Как работает репликация.
-
3.1. Репликация всех потоков.
3.2. Репликация одного потока.
3.3. Как указать отдельный порт для репликации.
Репликация — механизм копирования архива DVR (Digital Video Recorder) с основного сервера на резервные. Этот механизм позволяет автоматически восстанавливать недостающие части архива после аварии и в короткие сроки ввести сервер в работу.
Зачем нужна репликация архива?¶
Репликация во Flussonic предназначена для решения следующих задач:
- Расширить DVR-сервис и увеличить одновременное количество зрителей.
- Быстро ввести в работу новый DVR-сервер или DVR-сервер после аварии.
- Автоматически восстановить недостающие сегменты архива после аварии.
90% времени для обслуживания зрителей хватает основного сервера с архивом. Сервер записывает архив на диск и доставляет зрителям сегменты из любой временной точки архива. Так одни зрители смотрят запись прямого эфира через сутки после его завершения, а другие — 72 часа после. При этом каждый зритель получает уникальный контент.
Вечером, когда люди приходят с работы и учёбы, количество зрителей резко возрастает. Из-за этого увеличивается нагрузка на чтение с диска основного сервера.
Чтобы обслужить возрастающее количество зрителей, не перегрузив при этом основной сервер:
- Подключите резервный сервер.
- Скопируйте на резервный сервер архив основного сервера.
- Направляйте новых зрителей на резервный сервер.
По собранным нами данным статистики просмотров контента DVR, время между запросом одного и того же сегмента архива первым и вторым зрителем составляет 18 часов. Получается, что вам дешевле и проще сделать копию архива на резервном сервере, чем настроить локальный кеш. Так зрители смогут смотреть контент непрерывно и без задержек в вещании.
С подключением резервного сервера с архивом пропускная способность сервиса и скорость чтения с диска увеличиваются в два раза, что позволяет обслуживать в два раза больше зрителей. Главная задача основного сервера — не перегрузить канал репликации на резервный сервер, одновременно раздавая контент зрителям.
Когда вам нужно в короткие сроки ввести резервый DVR-сервер в работу, чтобы доставлять зрителям сегменты архива, используйте репликацию. Вместо того, чтобы записывать архив, глубиной в неделю, с нуля на резервном сервере и ждать семь дней, вы можете за несколько часов скопировать архив с основного сервера и подготовить резервный сервер к работе. Сегменты архива синхронизированы по времени, так что зрители не увидят разницы в получаемом контенте.
Как работает репликация¶
Схема 1. Схема работы репликации
Основной сервер:
- получает прямой эфир из источника,
- записывает его в архив,
- вещает зрителям прямой эфир и сегменты архива.
Основной сервер не знает о существовании резервного. Как только резервный сервер включается, он делает следующее:
- Подключается к основному серверу.
- Захватывает прямой эфир и копирует архив из основного сервера. Из-за этого увеличивается скорость чтения с диска основного сервера и скорость записи на диск резервного сервера.
- Как только архив резервного сервера заполнится, резервный сервер начинает доставлять сегменты архива новым зрителям.
Как настроить репликацию¶
Вы можете настроить репликацию для всех потоков или для отдельных из них.
Репликацию можно также настроить через API с помощью настроек dvr_replication
и replication_port
.
Репликация всех потоков¶
Репликацию всех потоков можно настроить как в пользовательском интерфейсе, так и в конфигурационном файле /flussonic/flussonic.conf
.
В пользовательском интерфейсе¶
Чтобы включить репликацию всех потоков с основного сервера на резервный в пользовательском интерфейсе Flussonic, следуйте шагам ниже:
- На резервном сервере в выпадающем меню слева откройте раздел Config и перейдите на вкладку DVR.
-
В разделе Additional поставьте галочку напротив Dvr replicate. При необходимости также укажите отдельный порт для репликации в поле Replication port (подробнее см. Как указать отдельный порт для репликации).
-
Сохраните настройки, нажав на значок сохранения в правом верхнем углу.
После этого начнётся репликация архива на резервный сервер.
В конфигурационном файле¶
Чтобы включить репликацию всех потоков с основного сервера на резервный, укажите на резервном сервере директиву source
с опцией replicate
в настройках DVR:
cluster_key abcd;
source primary-server {
dvr /storage 20d replicate;
}
Репликация одного потока¶
Репликацию потока можно настроить как в пользовательском интерфейсе, так и в конфигурационном файле /flussonic/flussonic.conf
.
В пользовательском интерфейсе¶
Чтобы включить репликацию отдельного потока с основного сервера на резервное в пользовательском интерфейсе Flussonic, выполните следующие шаги:
- На резервном сервере создайте новый поток и в качестве источника укажите поток из основного сервера, архив которого требуется скопировать, через протокол M4F или M4S. Сохраните настройки потока, нажав Save.
- Откройте вкладку DVR в настройках потока и укажите необходимую глубину хранения архива, на которую резервный сервер будет копировать архив с основного сервера.
- Поставьте галочку напротив Dvr replicate. При необходимости также укажите отдельный порт для репликации в соседнем поле Replication port (подробнее см. Как указать отдельный порт для репликации).
- Сохраните настройки, нажав Save.
После этого начнётся репликация архива на резервный сервер.
В конфигурационном файле¶
Чтобы включить репликацию отдельного потока с основного сервера на резервный, выполните следующие шаги в конфигурационном файле /flussonic/flussonic.conf
резервного сервера:
- Создайте новый поток и в качестве источника укажите поток из основного сервера, архив которого требуется скопировать, через протокол M4F или M4S:
input m4f://PRIMARY-SERVER-IP/STREAM_NAME
. - В настройках потока укажите необходимую глубину хранения архива, на которую резервный сервер будет копировать архив с основного сервера:
dvr /STORAGE_NAME 7d
. - В настройках потока в DVR
dvr
укажите опциюreplicate
. При необходимости также укажите отдельный порт для репликации в параметреreplication_port=
(подробнее см. Как указать отдельный порт для репликации).
Пример конфигураций на основном и резервном серверах:
- Конфигурация потока на основном сервере:
stream fake {
input fake://;
dvr /storage 7d;
}
- Конфигурация потока на резервном сервере:
stream repl_example1 {
input m4f://primary-server-ip/fake;
dvr /storage 7d replicate;
}
Так к источнику потока подключается только основной сервер, а резервный сервер захватывает поток с основного сервера в отличие от кросс-репликации.
Warning
При наличии ключевого слова replicate
запись будет включена постоянно, поэтому не используйте опцию dvr_offline
, которая отключает запись архива, вместо dvr
.
Как указать отдельный порт для репликации¶
Note
Репликация работает только по внутреннему протоколу Flussonic — M4F. Мы рекомендуем использовать этот протокол для передачи видео между серверами Flussonic. О преимуществах протокола M4F можно прочитать в разделе Обзор протокола M4F.
По умолчанию репликация включается на порту, указанном при настройке M4F-источника. Чтобы избежать перегрузки канала и остановки работы вашего сервиса, вы можете указать отдельный порт для репликации архива.
В пользовательском интерфейсе¶
-
Если вы настраиваете репликацию для конкретного потока, то на резервном сервере в настройках потока перейдите на вкладку DVR. Поставьте галочку напротив DVR replicate и укажите порт для репликации в поле Replication port.
Если вы настраиваете репликацию для всех потоков, то на резервном сервере в выпадающем меню слева откройте раздел Config и перейдите на вкладку DVR. В разделе Additional поставьте галочку напротив Dvr replicate и укажите порт для репликации в поле Replication port.
Нажмите Save, чтобы сохранить настройки.
-
На основном сервере в выпадающем меню слева откройте раздел Config. На вкладке Settings в разделе Listeners укажите такое же HTTP-порт, как в предыдущем шаге, нажав на иконку добавления. Нажмите Save, чтобы сохранить настройки.
В конфигурационном файле¶
- В конфигурационном файле резервного сервера укажите номер порта в параметре
replication_port
рядом сreplicate
в настройках потока, если вы настраиваете репликацию для конкретного потока, или директивыsource
, если для всех потоков:
stream repl_example2 {
input m4f://primary-server-ip/fake;
dvr /storage 7d replicate replication_port=8002;
}
- В конфигурационном файле основного сервера укажите такой же порт через опцию
http
:
http 8002
Читайте также об Использовании кросс-репликации для восстановления архива.