Распределенная база данных досье
В распределенной архитектуре часто необходимо, чтобы база данных досье распределялась по нескольким серверам.
В текущей реализации база данных досье доступна для редактирования только на главном сервере, т. н. master-сервере. Master-сервер синхронизирован с несколькими дополнительными slave-экземплярами ПК FindFace. На slave-серверах база данных досье доступна только для чтения и мониторинга.
Важно
Досье можно удалить на slave-сервере, если master-сервер недоступен.
Важно
Если в списке наблюдения будущего slave-сервера уже есть досье, они будут заменены на досье с master-сервера во время первой синхронизации. Вся информация в предыдущих досье будет потеряна.
Предупреждение
На серверах master и slave должна использоваться одна и та же нейронная сеть.
В этом разделе:
Настройка синхронизации Master/Slave
Для настройки синхронизации master/slave выполните следующие действия:
На master-сервере откройте файл конфигурации
/etc/findface-security/config.py
. Придумайте токен синхронизации и укажите его в параметреSYNC_TOKEN
(предварительно раскомментируйте его).sudo vi /etc/findface-security/config.py ... # ========== DossierLists sync =========== ... # token must be identical on master and slave # use pwgen -s 64 1 SYNC_TOKEN = 'ABC_123456789' ...
На slave-серверах раскомментируйте параметр
SYNC_TOKEN
в файле конфигурации/etc/findface-security/config.py
и вставьте в него созданный токен синхронизации. Токены на master- и slave-серверах должны быть идентичны.
Синхронизация master/slave теперь настроена и будет активирована, как только вы настроите репликацию списка наблюдения с master-сервера на slave.
Репликация списка наблюдения master -> slave
Для того чтобы реплицировать список наблюдения от master-сервера на slave-экземпляры, отправьте на slave POST-запрос со следующими параметрами в теле:
remote_dossier_list
: id исходного списка наблюдения на master-сервереremote_url
: URL master-сервераslave_dossier_list
: id списка наблюдения на slave-сервере, который будет репликой исходного списка наблюдения
POST /sync/dossier-lists/
{remote_dossier_list: 1,
remote_url: "http://172.17.46.14",
slave_dossier_list: 3}
Задание времени синхронизации
Для того чтобы задать расписание синхронизации досье, выполните следующие действия:
Откройте файл конфигурации
/etc/findface-security/config.py
на master-сервере.sudo vi /etc/findface-security/config.py
Раскомментируйте и задайте следующие параметры:
SYNC_SCHEDULE
: рекуррентное правило (RRULE), задающее расписание синхронизации.Совет
См. калькулятор RRULE.
SYNC_AT_STARTUP
: еслиTrue
, синхронизация выполняется при запуске и перезагрузке ПК FindFace.SYNC_AT_CREATION
: еслиTrue
, синхронизация выполняется сразу после того, как вы ее создали для списка наблюдения.
... # ========== DossierLists sync =========== ... # rrule that defines sync schedule SYNC_SCHEDULE = 'RRULE:FREQ=DAILY;WKST=MO;BYHOUR=11;BYMINUTE=0' # if True synchronization will occur on FindFace Security startup and restart SYNC_AT_STARTUP = True # if True synchronization will occur immediately after creating synchronization for dossier list SYNC_AT_CREATION = True
Раскомментируйте приведенные выше параметры на каждом slave-сервере. Значения параметров могут быть любыми.
Отмена репликации и синхронизации списка наблюдения
Для того чтобы отменить репликацию и синхронизацию списка наблюдения, отправьте на slave-сервер API-запрос с {id}
соответствующего списка на slave-сервере:
DELETE /sync/dossier-lists/{id}/
Включение функционала в веб-интерейсе
По умолчанию вы можете включать и отключать репликацию списка наблюдения только через API. Для того чтобы данный функционал был также доступен через веб-интерфейс, выполните следующие действия:
Откройте файл конфигурации
/etc/findface-security/config.py
на master-сервере.sudo vi /etc/findface-security/config.py
Включите плагин
ffsecurity_sync
, раскомментировав строкуINSTALLED_APPS.append (‘ffsecurity_sync’)
в разделе плагинов:... # ========== DossierLists sync =========== INSTALLED_APPS.append('ffsecurity_sync') ...
Выполните аналогичные действия на каждом slave-сервере.
На каждом сервере выполните перенос основной архитектуры базы данных из ПК FindFace в PostgreSQL. Заново создайте группы пользователей в основной базе данных. Перезапустите сервис
findface-security
.sudo findface-security migrate sudo findface-security create_groups sudo systemctl restart findface-security.service