Предварительное условие.
Настройка Master-сервера
1. Создайте канал интеграции

В рабочем домене в приложении Настройка в меню Прочее - Каналы интеграции создайте канал интеграции c пользователем System и правом доступа к файлам. Скопируйте локальный токен.
2. Подготовьте домен к синхронизации
В рабочем домене в меню Домен - Параметры отредактируйте ключ survival_options.
Пример ключа:
{
"activate_delay_sec": 30,
"alternatives": [
{
"order": 20,
"token": "457e3fe5b71bcddd27bf2a64ec8ac6d2",
"uris": "https://site2.era.ru"
}
],
"custom_sync_metadata": {
"default_enabled_history": true,
"default_enabled_settings": true,
"endpoints_of_history": {},
"endpoints_of_settings": {}
},
"enabled": true,
"mode": "takeover",
"name": "",
"order": 10,
"security_key": "eQTC1KqHdswBpg9CnGtY",
"sync_history_mode": "isolate",
"sync_settings_mode": "oneway",
"token_local": "9a35d9a5cc20dae183624bfeecbe4cb0",
"uris_local": "https://site1.era.ru"
}
где,
- uris_local - имя локального веб-сервера для Master-сервера
- token_local - локальный токен для канала интеграции (см. пункт 1)
- security_kay - сгенерированная строка авторизации
- alternatives - параметры Slave-сервера
Настройка Slave-сервера
1. Создайте канал интеграции
В рабочем домене в приложении Настройка в меню Прочее - Каналы интеграции создайте канал интеграции c пользователем System и правом доступа к файлам. Скопируйте локальный токен.
2. Подготовьте домен к синхронизации
В рабочем домене в меню Домен - Параметры отредактируйте ключ survival_options.
Пример ключа:
{
"activate_delay_sec": 30,
"alternatives": [
{
"order": 10,
"token": "9a35d9a5cc20dae183624bfeecbe4cb0",
"uris": "https://site1.era.ru"
}
],
"custom_sync_metadata": {
"default_enabled_history": true,
"default_enabled_settings": true,
"endpoints_of_history": {},
"endpoints_of_settings": {}
},
"enabled": true,
"mode": "takeover",
"name": "",
"order": 20,
"security_key": "eQTC1KqHdswBpg9CnGtY",
"sync_history_mode": "isolate",
"sync_settings_mode": "oneway",
"token_local": "457e3fe5b71bcddd27bf2a64ec8ac6d2",
"uris_local": "https://site2.era.ru"
}
где,
- uris_local - имя локального веб-сервера для Slave-сервера
- token_local - локальный токен для канала интеграции (см. пункт 1)
- security_kay - сгенерированная строка авторизации
- alternatives - параметры Master-сервера
После окончания настройки синхронизация сервероа начнётся автоматически через несколько секунд. Логирование синхронизации ведет микросеревис mware.
Пример конфигурации Master и Slave сервера:

Концепция
Есть два независимых инстанса.
В обоих инстансах существует домен с одним и тем же названием.
В настройках каждого из них заданы параметры репликации с указанием альтернативного инстанса, доступов к нему, а также приоритета.
В случае корректных настроек и активации режима репликации эти домены на двух инстансах автоматически приходят в состояние Active-Passive.
На инстансе, где домен пассивный, деактивируются микросервисы, создающие активность, а также фасады перестают обслуживать запросы по домену.
При корректно настроенной в домене и включенной репликации выделяются следующие роли для экземпляра домена, а также инстанса при рассмотрении с точки зрения этого домена:
* Мастером называется домен с наивысшим приоритетом (наименьшее значение параметра order)
* Слейвом называется домен с приоритетом, отличным от наивысшего, а также аналогично сам инстанс.
При корректно настроенной в домене и включенной репликации выделяются следующие состояния для экземпляра домена, а также инстанса при рассмотрении с точки зрения этого домена:
* Активным называется домен, который не обнаружил более приоритетных активных альтернатив, и в котором полноценно без ограничений работают сервисы.
* Пассивным называется домен, который обнаружил более пририоритетную активную альтернативу, а также аналогично сам инстанс.
При этом в рамках инстанса может быть несколько различных доменов с настроенной и включенной репликацией, находящихся в разных ролях и состояниях.
Пассивный домен не генерирует активностей: не выполняет сценарии, не запускает продуктовые микросервисы, не осуществляет синхронизации с почтовыми каталогами и мессенджерами.
Подключиться к пассивному домену может только пользователь с ролью администратора, другие пользователи при попытке создать сессию перенаправляются на веб-серверы инстанса с активным доменом.
Регистрация SIP-устройств также невозможна, и запросы перенаправляются на SIP-серверы инстанса с активным доменом.
При этом модель данных пассивного домена доступна для администраторов и системных процессов.
Пассивный домен осуществляет регулярный пинг активного экземпляра и при его потере активируется.
Он также производит синхронизацию настроек и модели данных в соответствии с метаданными в настройках репликации.
Синхронизация производится с некоторыми ограничениями - не подлежат синхронизации некоторые настройки, связанные с конкретным инстансом, а также реалтаймовые коллекции. Соответственно при активации текущие активности не продолжаются и не восстанавливаются. Дополнительно может быть настроена фильтрация самих коллекций, сущностей в коллекциях, маскировка полей коллекций, данные из которых подлежат репликации.
Поддерживается подписка на изменения коллекций, и данные реплицируются в реальном времени.
Активный домен ведет журнал своей активности. Он применяется для выкачивания истории в привязке к периодам пассивности и недоступности.
Таким образом пользовательские данные и история синхронизированы между мастером и слейвом. Слейв в любой момент готов активироваться и приступить к обслуживанию процессов.
При восстановлении мастера сразу или по команде администратора производится перемена состояний доменов.