Распределенная база данных досье¶
В распределенной архитектуре часто необходимо, чтобы база данных досье распределялась по нескольким серверам.
В текущей реализации база данных досье доступна для редактирования только на главном сервере, т. н. master-сервере. Master-сервер синхронизирован с несколькими дополнительными slave-экземплярами FindFace Security. На slave-серверах база данных досье доступна только для чтения и мониторинга.
Важно
Досье можно удалить на slave-сервере, если master-сервер недоступен.
Важно
Если в списке наблюдения будущего slave-сервера уже есть досье, они будут заменены на досье с master-сервера во время первой синхронизации. Вся информация в предыдущих досье будет потеряна.
В этом разделе:
Настройка синхронизации Master/Slave¶
Для настройки синхронизации master/slave выполните следующие действия:
На master-сервере откройте файл конфигурации
findface-security
. Придумайте токен синхронизации и укажите его в параметреSYNC_TOKEN
.sudo vi /etc/ffsecurity/config.py ... SYNC_TOKEN = 'ABC_123456789'
Скопируйте токен синхронизации в файл конфигурации
findface-security
на slave-серверах.Убедитесь, что параметр
EXTERNAL_ADDRESS
в файлах конфигурацииfindface-security
на slave-серверах содержит тот же адрес, что и на master-сервере.
Синхронизация 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}
Задание времени синхронизации¶
По умолчанию реплицированные списки наблюдения на slave-серверах синхронизируются c master-сервером каждую ночь в 3:00. Время синхронизации можно изменить следующим образом:
Откройте файл конфигурации
findface-security
на master-сервере.sudo vi /etc/ffsecurity/config.py
Вставьте следующие строки и задайте собственный график репликации.
... SYNC_TIME = { 'hour': 3, # 24 hour format 'minute': 0, }
Отмена репликации и синхронизации списка наблюдения¶
Для того чтобы отменить репликацию и синхронизацию списка наблюдения, отправьте на slave-сервер API-запрос с {id}
соответствующего списка на slave-сервере:
DELETE /sync/dossier-lists/{id}/
Включение функционала в веб-интерейсе¶
По умолчанию вы можете включать и отключать репликацию списка наблюдения только через API. Для того чтобы данный функционал был также доступен через веб-интерфейс, выполните следующие действия:
Откройте файл конфигурации
findface-security
на master-сервере.sudo vi /etc/ffsecurity/config.py
Включите плагин
ffsecurity_sync
, добавив строкуINSTALLED_APPS.append (‘ffsecurity_sync’)
в раздел плагинов:... # integration plugins ... INSTALLED_APPS.append('ffsecurity_sync')
Выполните аналогичные действия на каждом slave-сервере.
На каждом сервере выполните перенос основной архитектуры базы данных из FindFace Security в PostgreSQL и перезапустите службу
findface-security
.sudo findface-security migrate sudo systemctl restart findface-security.service