Domain Folder Synchronizator (dfsync)

Описание

Служебная роль, обеспечивающая синхронизацию файлов каталога :SYNC между различными серверами системы. Связь между сайтами обеспечивает без прямого соединения типа full-mesh. Отслеживает изменения файловой системы для каждого каталога в соответствии с привязкой каталогов к доменам, и обеспечивает растекание по всем серверам сайтов, обслуживающим соответствующие домены. Каталог :SYNC/common синхронизируется на всех сайтах.

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

Получает уведомления об изменениях файловой системы с помощью пакета inotify-tools. Сверка файлов происходит по дате и размеру. Хеш суммы по содержимому не применяются в целях оптимизации производительности.

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

Table 1. Системные характеристики

Код

dfsync

Режим работы

Сервис

Режим резервирования

Active-Active

Типы сайтов

Все

Слой

Конфигурация

Размещение

Внутренний

Сохранение и восстановление состояния при перезагрузке

Да

Приложение

era_dfsync

Ограничения

  • Не присутствует в начальной односерверной конфигурации.

  • Должна присутствовать по 1 разу на каждом сервере.

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

Параметры

Table 2. Параметры
Имя Тип Умолчание Описание

name

str

required

Имя. Может состоять из латинских букв и цифр, должно начинаться с буквы.

roletype

str

required

Тип роли. Возможные значения: "dfsync".

iface

str

required

Алиас сетевого интерфейса сервера, на котором будет происходить внутреннее взаимодействие ролей между собой.

ext

json

empty

Дополнительные опции роли. Содержит json объект или список.

enabled

bool

empty

Флаг активности роли. При установке в false роль не участвует в валидации и не запускается.

is_cross_site

bool

false

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

roleid

int

required

Идентификатор роли.
Уникален для всей системы, независимо от сайта или сервера. Не подлежит изменению.
Целое число от 1 до 9999.

separate

bool

required

Признак выделения роли в отдельную ноду.

Пример конфигурации

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

Конфигурация содержит раздел для описания всех экземпляров всех ролей. Параметры определяются для каждого конкретного экземпляра роли.

Пример узла
{
  "name": "dfsync1",
  "iface": "eth0",
  "is_cross_site": false,

  "roleid": 11380,
  "roletype": "dfsync",
  "separate": true
}