Многосерверная система🔗

Для обеспечения масштабируемости и отказоустойчивости многосерверных систем видеонаблюдения, а также для минимизации служебного обмена данными по сети и снижения коллизий, связанных с синхронизацией серверов, в Macroscop используется архитектура с главным сервером. Ниже приведено описание данной архитектуры.

Примечание

Архитектура с главным сервером впервые введена в Macroscop версии 2.2. Ранее все серверы в многосерверной системе были равноправными, что могло приводить к существенному снижению производительности и коллизиям.

В многосерверной системе только один сервер является главным сервером. Остальные серверы многосерверной системы, называемые подчиненными серверами, взаимодействуют с главным сервером для актуализации настроек. Поскольку синхронизация настроек осуществляется путем обращения подчиненных серверов к главному, а не наоборот, главный сервер должен быть доступен для всех серверов многосерверной системы.

Предупреждение

В многосерверной системе версии Macroscop на всех серверах должны иметь одинаковые номера старшей и младшей версий.

Номер версии приложения Macroscop состоит из трёх частей: M.N.R; M: старшая версия, N: младшая версия, R: номер релиза.

Главный сервер

Главный сервер хранит и позволяет изменять следующую информацию:

  • Общие настройки системы — информацию о серверах, камерах, пользователях и т.д.;

  • Информацию о лицензиях каждого сервера;

  • Информацию о последнем подключении каждого подчиненного сервера к главному серверу;

  • Планы объектов.

Примечание

Информацию о последних подключениях подчиненных сервера к главному используется, в частности, для диагностики: если подчиненный сервер не подключался к главному в течение последних 2 минут, то его статус будет соответствующим образом изменен.

Также в функции главного сервера входит проверка авторизации каждого входящего запроса от пользователей системы, в том числе — от внешних приложений.

Подчиненный сервер

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

Каждые несколько секунд подчиненный сервер подключается к главному с целью синхронизации. Интервал между подключениями определяется автоматически и составляет от 5 до 15 секунд. Кроме того, подключение к главному серверу происходит незамедлительно после внесения изменений в настройки подчиненного сервера.

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

  • Главный сервер получает информацию о работоспособности подчиненного сервера;

  • Подчиненный сервер синхронизирует время с главным сервером;

  • Главный сервер получает информацию об изменениях настроек и лицензиях подчиненного сервера;

  • Подчиненный сервер получает от главного сервера информацию о необходимости запуска или остановки процессов резервирования или реплицирования каналов с других серверов;

  • Подчиненный сервер скачивает с главного сервера копию общих настроек.

Помимо синхронизационных запросов, подчиненный сервер, при необходимости, перенаправляет на главный сервер запросы от клиентских приложений.

Отказоустойчивость

Для того чтобы главный сервер не был единой точкой отказа, реализован механизм передачи копии общих настроек системы на каждый подчиненный сервер. Ниже приведен перечень событий и условий для скачивания общих настроек подчиненными серверами:

  • Один раз в 12 часов;

  • При старте подчиненного сервера;

  • Изменилось количество серверов в системе;

  • Изменилось количество каналов в системе;

  • Изменились пользователи в системе;

  • Изменились привязки камер к серверам;

  • Изменились привязки репликации или резервирования.

Таким образом, в случае выхода из строя главного сервера, любой из оставшихся серверов системы можно будет назначить главным сервером.

Присоединение других серверов и многосерверных систем

Примечание

Для дальнейшего описания вводятся следующие понятия:

Текущая система — многосерверная система или система, состоящая из одного сервера, к которой подключено в момент присоединения приложение Macroscop Конфигуратор.

Внешняя система — многосерверная система или система, состоящая из одного сервера, которую присоединяют к текущей системе.

Примечание

Для присоединения внешней системы достаточно присоединить к текущей системе только один из серверов внешней системы — после присоединения приложение Macroscop Конфигуратор разошлет остальным серверам внешней системы информацию о том, что главным сервером для них теперь является главный сервер текущей системы. Иными словами, при присоединении к текущей системе сервера, входящего в другую систему, все серверы этой внешней системы присоединятся к текущей системе.

Предупреждение

В процессе присоединения внешней системы приложение Macroscop Конфигуратор должен иметь доступ до всех серверов этой системы — для того, чтобы сообщить им новый адрес главного сервера.

В случае, когда приложение Macroscop Конфигуратор в момент присоединения не будет иметь доступ до какого-либо сервера внешней системы, этот сервер попытается автоматически получить информацию об изменении адреса главного сервера с того сервера, который являлся главным во внешней системе.

Если операция автоматического получения недоступным сервером нового адреса главного сервера не привела к присоединению этого сервера к текущей системе (например, если недоступным оказался главный сервер внешней системы), необходимо подключиться приложением Macroscop Конфигуратор непосредственно к этому серверу, после чего изменить на сервере адрес главного сервера (указать адрес главного сервера текущей системы)

При присоединении внешней системы происходит следующее:

  • В текущую систему будут добавлены все серверы внешней системы.

  • На бывшем главном сервере внешней системы будут удалены все общие настройки внешней системы; в том числе пользователи и связанные с ними полномочия. Далее, для подключения к бывшим серверам внешней системы, будет использоваться система авторизации текущей системы.

  • В текущую систему будут добавлены все камеры и папки внешней системы. При этом настройки камер и распределение камер по серверам сохранятся.

  • В текущую систему из внешней будут добавлены все планы объектов, категории архивных закладок, профили экрана и списки переключения профилей.

  • Если в момент присоединения к серверам внешней системы будет подключено приложение Macroscop Конфигуратор, то, в зависимости от того, совпадает или нет имя и пароль пользователя текущей и внешней систем для данного сеанса, клиентское приложение соответственно либо автоматически перезапустится, либо останется в неработающем состоянии до тех пор, пока пользователь не перезапустит его самостоятельно под правильными именем и паролем.

Отсоединение серверов

Для дальнейшего описания вводятся следующие понятия:

Текущая система — многосерверная система, к которой подключено в момент отсоединения приложение Macroscop Конфигуратор.

Отсоединенная система — система, состоящая из одного сервера, который отсоединен от текущей системы.

Предупреждение

Нельзя отсоединить от многосерверной системы главный сервер. Если возникла такая необходимость, перед отсоединением следует назначить главным другой сервер системы.

При отсоединении сервера от системы происходит следующее:

  • Отсоединенный сервер удаляется из общих настроек текущей системы. При этом из общих настроек и с планов объектов удаляются все камеры, для которых отсоединенный сервер является основным, а также все привязки репликации и резервирования, связанные с отсоединенным сервером.

  • Отсоединенный сервер становится главным сервером односерверной системы.

  • На отсоединенном сервере создаются общие настройки для односерверной системы. При этом сохраняются все камеры, для которых этот сервер являлся основным на момент отсоединения. В то же время, из настроек удаляются все привязки репликации и резервирования, а также все камеры, для которых данный сервер был назначен репликационным или резервным. Если сервер перед отсоединением был репликационным, то после отсоединения он становится обычным.

  • В отсоединенной системе сохраняются все пользователи текущей системы с назначенными им полномочиями.

  • В отсоединенной системе сохраняются все планы объектов, категории архивных закладок, профили экрана и списки переключения профилей. В то же время, с планов объектов удаляются все камеры, оставшиеся в текущей системе.

  • На отсоединенном сервере сохраняется архив реплицированных и резервных камер, просмотреть который можно с помощью утилиты Локальный просмотр и резервное копирование архива. Данный архив будет удаляться по мере заполнения дискового пространства текущими архивом от оставшихся на отсоединенном сервере камер. При этом, если отсоединенный сервер будет вновь присоединен к текущей системе, архив реплицированных и резервных камер станет доступен для просмотра в приложении Macroscop Клиент.

  • Если в момент отсоединения к серверам будет подключено приложение Macroscop Клиент, то оно продолжит работу и будет автоматически перезапущено только в том случае, если в системе произойдут изменения, затрагивающие параметры текущего отображения^ полномочия пользователей, настройки отображаемых в данный момент каналов и ряд других настроек.

В итоге, после отсоединения сервера получаются две системы с одинаковым набором пользователей и их прав, а также планами объектов, категориями архивных закладок, профилями экрана и списками переключения профилей.

Взаимодействие клиентских приложений с серверами

К клиентским приложениям Macroscop относятся Macroscop Клиент, Bеб-клиент Macroscop и клиентские приложения для мобильных устройств.

Для работы в многосерверной системе пользователям клиентских приложений не нужно знать адрес главного сервера и подключаться именно к нему — достаточно подключиться к любому из серверов системы. При этом, если пользователь подключится к подчиненному серверу, у которого отсутствует доступ к главному серверу, то клиентскому приложению будут доступны только те камеры, которые прикреплены к данному серверу.