Резервирование и каскадирование серверов
Для организации сервиса видео-конференц-связи (далее ВКС) на базе Vinteo достаточно одного физического сервера, но для получения отказоустойчивой системы и системы, позволяющей выдерживать высокую нагрузку, необходимо использовать кластер из нескольких серверов.
В системе Vinteo можно выделить две роли серверов:
- коммуникационный сервер и сервер управления (далее сервер управления);
- медиасервер.
В системе во время работы может быть только один сервер управления. Количество медиасерверов определяется как N+1, минимум - один. Минимальное количество физических серверов - один, совмещающий обе роли. При использовании резервирования мы получаем еще один сервер управления для горячей замены основного сервера управления, если он выйдет из строя. Резервный сервер управления может быть лишь 1.
Содержание
Сервер управления
Сервер управления - web-сервер и сервер, обеспечивающий взаимодействие по коммуникационным протоколам (SIP, H.323, WebRTC).
Для резервирования сервера управления используется схема: primary - secondary. Primary-сервер является активным и обслуживает систему, secondary-сервер является пассивным, отслеживает состояние primary-сервера и с интервалом в 5 минут реплицирует на себя c него данные из БД и из файловой системы. Для корректной работы резервирования необходимо, чтобы основной и резервный сервер были сопоставимы по мощности.
При выходе из строя primary-сервера secondary-сервер берет роль primary на себя, поднимает интерфейсы с IP-адресами системы, прописанными в БД, включает сервисы управления и телефонии.
При возвращении в строй первого сервера (при загрузке) он (первый сервер) возьмет на себя теперь роль secondary, определив, что primary-сервер уже есть в сети на интерфейсе eth1. Таким образом, primary-сервером становится тот сервер, который будет включен первым, второй же станет secondary-сервером.
Если primary-сервер теряет связь со secondary-сервером, то лицензия становится временной и действует 72 часа с момента потери связи. За это время необходимо решить техническую проблему с вышедшим из строя сервером или, если это не представляется возможным, обратиться в техническую поддержку Vinteo для урегулирования вопроса со сроком действия временных лицензий.
При потере связи между secondary и primary-серверами на интерфейсах eth1, может произойти ситуация, когда оба сервера станут primary. Это может привести к непредсказуемым последствиям, вплоть до полной недоступности сервиса.
Медиасервер
Медиасервер - сервер, который занимается кодированием/декодированием медиапотоков и построением раскладок. Для увеличения производительности системы необходимо применять горизонтальное масштабирование медиасерверов - каскадирование. Сервер управления будет стремиться равномерно нагрузить медиасерверы, балансируя нагрузку между ними, т.о. медиасерверы взаиморезервируют друг друга.
В основе медиасервера лежит модуль Multipoint Control Unit (далее MCU). MCU отвечает за такие процессы как микширование, транскодирование и трансрейтинг.
Микширование подразумевает возможность создания раскладки изображений в том виде, в котором она была бы удобна пользователю. Транскодирование позволяет изменять формат видеопотока, а трансрейтинг дает возможность оптимизации скорости передачи данных.
Для обеспечения резервирования медиасерверов в системе необходимо иметь как минимум N+1 медиасервер, где N - количество медиасерверов, необходимых для обслуживания максимального количества участников при заданных сценариях ВКС. MCU может быть также управляющий сервер.
Распределение нагрузки происходит следующим образом: для каждой конференции раскладки строит один из медиасерверов, на котором хостится эта конференция. При этом на данном сервере должны обслуживаться все участники, видео которых попадает в любую раскладку этой конференции. Поэтому, при планировании инфраструктуры, необходимо учитывать, какое максимальное количество участников будет на раскладке и закладывать этот параметр в мощность медиасерверов.
При подключении к конференции первого участника, сервер управления выбирает наименее загруженный медиасервер для хостинга этой конференции. При загрузке медиасервера, обрабатывающего конференцию, свыше 40%, новые участники, не входящие в раскладку конференции, отдаются на обработку (балансируются) на другие доступные медиасерверы. Медиасерверы не получают и не отдают трафик клиентам, они лишь распределяют нагрузку декодирования и кодирования раскладок конференций между собой, обмениваясь трафиком с основным сервером (сервером управления).
При потере связи с одним из медиасерверов, происходит переход раскладки на другой медиасервер, то есть, выключения конференции не происходит.
Схема системы ВКС Vinteo при падении одного из медиасерверов кластера
Схема системы ВКС Vinteo после передачи раскладки на другой медиасервер
Настройка резервирования и каскадирования серверов
Схема резервирования и каскадирования серверов
При использовании всех возможностей сервера Vinteo для резервирования и каскадирования, получается следующая схема сети ВКС:
Для удобства настройки рекомендуется назначить IP-адрес интерфейса eth0 на резервном сервере из одной подсети с основным сервером.
Если необходима адресация, отличная от показанной на схеме, то настроить резервирование и каскадирование самостоятельно не получится, для этого необходимо обращаться в техническую поддержку Vinteo. При невозможности подключения сотрудников технической поддержки к серверам по SSH, вам будут выданы патчи с необходимой адресацией.
Интерфейсы eth0 основного и резервного сервера должны быть подключены к сети, откуда ожидаются подключения абонентов.
Ожидается, что соединение основного и резервного сервера на интерфейсах eth1 будет организовано напрямую кабелем, коммутатор между ними будет создавать лишнюю точку отказа.
Сеть, указанная как 192.0.2.128/25, может не иметь никакого внешнего подключения, кроме как к ПК администратора для первичной настройки. Подразумевается, что она будет использоваться только для соединения медиасерверов и управляющего сервера.
Важно! К сети 192.0.2.128/25 предъявляются повышенные требования к стабильности и скорости соединения при каскадировании. В этой сети не используются механизмы коррекции ошибок, поэтому даже незначительные потери в этой сети могут приводить к артефактам и искажениям изображения в конференциях. После успешной настройки резервирования основной сервер примет на себя роль primary, резервный сервер примет роль secondary. Чтобы самостоятельно выполнить настройку резервирования и каскадирования серверов Vinteo, выполните инструкции, описанные ниже.
Подготовка к настройке
1. Для самостоятельной настройки IP-адресация должна соответствовать отображенной на схеме из раздела «Схема резервирования и каскадирования серверов».
2. Для медиасерверов, ради удобства настройки, рекомендуется назначить IP адреса на интерфейсе eth0, доступные с ПК администратора.
3. Получите у технической поддержки Vinteo необходимые файлы для настройки:
- config_patch_generate_replicator_keys.bin
- config_patch_to_configure_media_servers.bin
- config_patch_prepare_slave.bin
4. Установите основной, резервный и медиасерверы в соответствии с инструкцией.
5. Обновите ПО всех серверов до последней версии. ПО всех серверов должно быть одинаковой версии.
6. Установите лицензии на основном и резервном серверах. На основном сервере лицензия должна содержать портовые лицензии и лицензию на резервирование.
На резервном сервере лицензия должна содержать резервирование и порты, если используются серверы с Static/Dynamic лицензированием. Если используется сервер с лицензированием Enterprise, то достаточно только резервирования.
Настройка сети основного и резервного серверов
Назначьте IP-адреса (добавьте необходимые интерфейсы кнопкой «Добавить» в разделе Настройки -> Параметры сетевых интерфейсов):
Основной сервер
- Eth0 – адрес, к которому будут подключаться абоненты (из внутренней сети или из DMZ)
- Eth1 (резервирование) - 192.0.2.1 / 255.255.255.252
- Eth2 (каскадирование) – 192.0.2.200 / 255.255.255.128
4. Перезагрузить сервер для применения настроек
Резервный сервер
- Eth0 – адрес из подсети Eth0 основного сервера. После активации резервирования использоваться не будет
- Eth1 (резервирование) - 192.0.2.2 / 255.255.255.252
- Eth2 (каскадирование) – 192.0.2.199 / 255.255.255.128 (или любой свободный адрес из подсети серверов каскадирования, после активации резервирования использоваться не будет)
4. Перезагрузить сервер для применения настроек
Настройка резервирования
1. На основном сервере проверьте доступность резервного сервера по адресу 192.0.2.2 на странице Настройки -> Диагностика -> Ping
2. На основном сервере (будущем primary) в разделе «Обновление» установить патч config_patch_generate_replicator_keys.bin
3. Сразу после установки перейти в раздел «Статус» и ждать, когда начнется отсчет времени работы в пункте «Время работы сервера».
4. Как только начнется отсчет времени работы сервера перейти по адресу https://<ip основного сервера>/config_patch_for_slave_and_media.bin и скачать файл. ВАЖНО: Данный файл доступен для загрузки в течение 5 минут с момента начала отсчета времени работы сервера.
5. На резервном сервере (будущем secondary) установить скачанный патч config_patch_for_slave_and_media.bin в разделе «Обновление». Дождаться, когда в разделе «Статус» начнется отсчет времени работы сервера.
6. Установить патч config_patch_prepare_slave.bin на резервный сервер (будущий secondary).
7. Выключить основной сервер, который должен стать primary-сервером (192.0.2.1).
8. На резервном сервере, который должен стать secondary-сервером (192.0.2.2) в настройках резервирования прописать адрес 192.0.2.1. Сохранить настройки.
9. Выключите резервный сервер.
10. Включите основной (будущий primary-сервер (192.0.2.1) и пропишите в настройках резервирования адрес: 192.0.2.2. Сохраните настройки.
11. Перезагрузите основной сервер.
12. После того, как загрузится основной сервер (192.0.2.1), включите резервный сервер (192.0.2.2). В результате 192.0.2.1 будет primary-сервером, а 192.0.2.2 secondary-сервером.
13. Посмотрите состояние синхронизации на странице «Статус».
Настройка каскадирования
1. Установите сервер, который будет медиасервером, обновите до последней версии.
2. На странице «Параметры сетевых интерфейсов» на медиасервере для интерфейса eth0 IP-адресация должна быть именно такой на медиасерверах: 192.0.2.201 (202, 203, ...) / 255.255.255.128
Также необходимо убедиться, что на сервере управления на соответствующем интерфейсе установлен адрес - 192.0.2.200 / 255.255.255.128
3. Проверьте, что серверу управления доступны будущие медиасерверы по адресам: 192.0.2.201 (202, 203...).
4. Важно! Если производилась настройка резервирования, то перейдите к пункту 8 и используйте файл, скачанный в разделе Настройка резервирования, п. 4. Иначе, если заново установить патч config_patch_generate_replicator_keys.bin, то управляющий сервер заново сгенерирует ключи и резервирование будет отключено
5. На управляющем сервере в разделе «Обновление» установите патч config_patch_generate_replicator_keys.bin
6. Сразу после установки перейдите в раздел «Статус» и ожидайте, когда начнется отсчет времени работы в пункте «Время работы сервера»
7. Как только начнется отсчет времени работы сервера перейти по адресу https://<ip основного сервера>/config_patch_for_slave_and_media.bin и скачать файл. Важно: Данный файл доступен для загрузки в течение 5 минут с момента начала отсчета времени работы сервера.
8. Установите патч config_patch_for_slave_and_media.bin, полученный на предыдущем шаге или в процессе настройки резервирования, на будущие медиасерверы. Необходимо дождаться, когда в разделе «Статус» начнется отсчет времени работы сервера.
9. На управляющем сервере, в разделе «Каскадирование», добавьте необходимое количество медиасерверов. В названии серверов рекомендуется указать mcu1, mcu2, … mcuN.
10. Если на управляющем сервере так же будет использоваться локальный медиасервер, то в настройках для localmcu необходимо указать адрес 192.0.2.200 в полях «IP» и «Локальный IP». Для локального mcu пароль заполнять не надо. Для остальных медиа серверов указать в поле «IP» адрес медиа сервера (например, 192.0.2.201), а в поле «Локальный IP»: 192.0.2.200. В поле «Пароль» укажите пароль пользователя admin медиа сервера. В поле «Порт» укажите: 5000.
11. Сохранить изменения.
12. Необходимо дождаться, когда у всех медиасерверов в статусе отобразится зеленая галка.
13. На сервере управления, в разделе «Обновление» установите патч config_patch_to_configure_media_servers.bin. Необходимо дождаться, когда в разделе «Статус» начнется отсчет времени работы в пункте «Время работы сервера»
14. На главной странице управляющего сервера должны появиться дополнительные вкладки с состоянием медиасерверов:
Проверка статусов кластера
Чтобы проверить, активно ли резервирование (доступен ли сервер secondary), посмотрите его статус на странице веб-интерфейса Система - Статус, раздел "Резервирование":
Расшифровка строки
Current role - текущая роль сервера. Далее стоит дата (Role set at), когда роль была установлена;
Last time db change checked at - время последней синхронизации БД между secondary и primary серверами;
Remote(IP) last seen at - время последней проверки primary-сервером secondary-сервера. Проверка происходит раз в 30 секунд.
При рабочем состоянии резервирования все три параметра будут отображаться. Если primary-сервер не видит secondary-сервер по какой-то причине, то в Remote(IP) last seen at будет написано время последней успешной проверки или never. Так же в веб-интерфейсе будет отображаться сообщение о том, что secondary-сервер не синхронизируется.
Чтобы проверить, активно ли каскадирование, какие медиасерверы сейчас активны, а какие нет, можно зайти на страницу Система - Настройки, перейти на вкладку "Каскадирование" - если какой-то из серверов будет недоступен, в его статусе будет красный крестик.
Если все серверы доступны, то будут зеленые галочки. Статус каждого сервера отдельно можно посмотреть на главной странице.
Если медиасервер будет недоступен, то в его вкладке будет сообщение: "Server not found".