Распределенная база данных досье¶
В распределенной архитектуре часто необходимо, чтобы база данных досье распределялась по нескольким серверам.
В текущей реализации база данных досье доступна для редактирования только на главном сервере, т. н. 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