Распределенная база данных досье

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

В текущей реализации база данных досье доступна для редактирования только на главном сервере, т. н. master-сервере. Master-сервер синхронизирован с несколькими дополнительными slave-экземплярами FindFace Security. На slave-серверах база данных досье доступна только для чтения и мониторинга.

Важно

Досье можно удалить на slave-сервере, если master-сервер недоступен.

Важно

Если в списке наблюдения будущего slave-сервера уже есть досье, они будут заменены на досье с master-сервера во время первой синхронизации. Вся информация в предыдущих досье будет потеряна.

В этом разделе:

Настройка синхронизации Master/Slave

Для настройки синхронизации master/slave выполните следующие действия:

  1. На master-сервере откройте файл конфигурации findface-security. Придумайте токен синхронизации и укажите его в параметре SYNC_TOKEN.

    sudo vi /etc/ffsecurity/config.py
    
    ...
    
    SYNC_TOKEN = 'ABC_123456789'
    
  2. Скопируйте токен синхронизации в файл конфигурации findface-security на slave-серверах.

  3. Убедитесь, что параметр 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. Время синхронизации можно изменить следующим образом:

  1. Откройте файл конфигурации findface-security на master-сервере.

    sudo vi /etc/ffsecurity/config.py
    
  2. Вставьте следующие строки и задайте собственный график репликации.

    ...
    
    SYNC_TIME = {
        'hour': 3,  # 24 hour format
        'minute': 0,
    }
    

Отмена репликации и синхронизации списка наблюдения

Для того чтобы отменить репликацию и синхронизацию списка наблюдения, отправьте на slave-сервер API-запрос с {id} соответствующего списка на slave-сервере:

DELETE /sync/dossier-lists/{id}/

Включение функционала в веб-интерейсе

По умолчанию вы можете включать и отключать репликацию списка наблюдения только через API. Для того чтобы данный функционал был также доступен через веб-интерфейс, выполните следующие действия:

  1. Откройте файл конфигурации findface-security на master-сервере.

    sudo vi /etc/ffsecurity/config.py
    
  2. Включите плагин ffsecurity_sync, добавив строку INSTALLED_APPS.append (‘ffsecurity_sync’) в раздел плагинов:

    ...
    
    # integration plugins
    ...
    INSTALLED_APPS.append('ffsecurity_sync')
    
  3. Выполните аналогичные действия на каждом slave-сервере.

  4. На каждом сервере выполните перенос основной архитектуры базы данных из FindFace Security в PostgreSQL и перезапустите службу findface-security.

    sudo findface-security migrate
    sudo systemctl restart findface-security.service