Настройка создания избыточных межсайтовых репликационных соединений

«Эллес» поддерживает автоматическое создание избыточных (резервных) межсайтовых соединений для отказоустойчивой репликации без необходимости изменять топологию вручную.

Механизм создания избыточных межсайтовых репликационных соединений в «Эллес»

Автоматическое создание избыточных межсайтовых соединений повышает отказоустойчивость репликации в топологиях типа hub-and-spoke («звезда» или «колесо со спицами»), обеспечивая резервные пути для репликации при сбое основных bridgehead-серверов.

Эта функциональность реализуется сервисом построения топологии репликации (Knowledge Consistency Checker, KCC). При установке определенных флагов KCC автоматически создает входящие резервные соединения от bridgehead-серверов других сайтов к локальному bridgehead-серверу (или контроллеру домена RODC) без вмешательства администратора.

Включение механизма создания избыточных соединений

Для включения механизма необходимо одновременно установить два флага в атрибуте options объекта nTDSSiteSettings:

  • NTDSSETTINGS_OPT_IS_REDUNDANT_SERVER_TOPOLOGY_ENABLED (0x00000400, сокращенно — RSE) — включает создание избыточных соединений;

  • NTDSSETTINGS_OPT_IS_TOPL_DETECT_STALE_DISABLED (0x00000008, сокращенно — DSD) — отключает проверку устаревания топологии, что обеспечивает стабильность резервных соединений.

Результирующее значение options должно быть равно 0x00000408 (1032 в десятичной системе).

При одновременной установке флагов RSE и DSD сервис KCC анализирует конфигурацию сайтов и создает входящие избыточные соединения (nTDSConnection):

  • со значением 0x00000240 в атрибуте mS-DS-ReplicatesNCReason, формируемым установкой двух флагов:

    • NTDSCONN_KCC_REDUNDANT_SERVER_TOPOLOGY (0x00000200, сокращенно — RS) — указывает, что соединение создано как резервное;

    • NTDSCONN_KCC_INTERSITE_TOPOLOGY (0x00000040, сокращенно — IS) — подтверждает, что соединение является межсайтовым;

  • со значением 0x00000005 в атрибуте options, формируемым установкой двух флагов:

    • IS_GENERATED (0x00000001, сокращенно — IG) — указывает, что соединение создано автоматически сервисом KCC, а не вручную администратором;

    • NTDSCONN_OPT_OVERRIDE_NOTIFY_DEFAULT (0x00000004, сокращенно — OND) — указывает, что соединение игнорирует глобальное поведение уведомлений репликации и использует свое собственное.

Правила создания избыточных соединений

Избыточные соединения создаются в соответствии со следующими правилами:

  • когда и как создается избыточное соединение:

    • избыточные соединения создаются только между bridgehead-серверами и между bridgehead-серверами и контроллерами домена RODC — обычные контроллеры домена (RWDC), не назначенные в качестве bridgehead, не участвуют в их формировании;

    • избыточные соединения создаются только в сайтах с установленным флагом RSE — они являются входящими соединениями на RWDC c ролью bridgehead или RODC в этом сайте; флаг RSE на стороне отправителя не влияет на создание соединений;

    • для каждого RWDC с ролью bridgehead в сайте с установленным флагом RSE создается отдельное входящее избыточное соединение от bridgehead-сервера сайта-партнера, но только если в целевом сайте еще не существует двух или более входящих соединений от этого партнера;

    redundant server topology flag 1
    Рис. 1. Влияние флага RSE на топологию межсайтовой репликации
  • когда избыточное соединение не создается:

    • если у сайта с установленным флагом RSE уже существует более одного входящего соединения от сайта-партнера, избыточное соединение от такого сайта-партнера не создается;

    • если в каждом из взаимодействующих сайтов только один bridgehead-сервер, избыточное соединение не создается;

    • избыточные соединения не создаются, если в целевом сайте (с флагом RSE) отсутствуют RWDC с ролью bridgehead, даже если в нем присутствуют RODC;

    redundant server topology flag 2
    Рис. 2. Отсутствие избыточного межсайтового соединения при установленном флаге RSE
  • если в сайте с установленным флагом RSE присутствуют контроллеры домена RODC, для каждого из них создается отдельное входящее соединение от bridgehead-сервера сайта-партнера;

    redundant server topology flag 3
    Рис. 3. Создание избыточных межсайтовых соединений с сайтом с контроллерами домена RODC
  • избыточные соединения сохраняются при снятии флага RSE — сервис KCC не удаляет ранее созданные избыточные соединения, но снимает флаг RS (0x00000200, "Redundant Site") в атрибуте mS-DS-ReplicatesNCReason, оставляя установленным только флаг IS (0x00000040, "Intra-Site") — это означает, что соединение остается в топологии, но больше не помечается как резервное (избыточное).

Управление флагом RSE

Флаг RSE управляется через атрибут options объекта nTDSSiteSettings в LDAP-хранилище конфигурации домена.

Для его настройки могут использоваться утилиты ldbmodify, ldapmodify и аналогичные.

Установка флага

Для включения избыточной топологии необходимо задать значение 0x00000408 (1032), соответствующее комбинации установленных флагов RSE и DSD, в объекте nTDSSiteSettings каждого сайта, участвующего в репликации.

Формат вызова утилиты ldbmodify для установки значения:

ldbmodify -H ldap://<имя_контроллера_домена> <<EOF
dn: CN=NTDS Site Settings,CN=<имя_сайта>,CN=Sites,CN=Configuration,DC=<имя_домена>
changetype: modify
add: options
options: 1032
EOF

Флаг должен быть установлен на обоих сайтах, если требуется создание избыточных соединений в обоих направлениях. Если установлен только на одном — избыточное соединение создается только в этом сайте.

Проверка текущего состояния флага

Для проверки значения флага options используйте утилиты ldbsearch, ldapsearch и аналогичные.

Формат вызова утилиты ldbsearch для получения значения флага:

ldbsearch -H ldap://<имя_контроллера_домена> -s base -b 'CN=NTDS Site Settings,CN=<Имя_сайта>,CN=Sites,CN=Configuration,DC=<имя_домена>' options

При установке флагов RSE и DSD в выводе должна содержаться строка:

options: 1032

Если флаги не установлены, атрибут отсутствует или содержит значение 0.

Запуск перестроения топологии репликации

После изменения options необходимо запустить перестроение топологии репликации сервисом KCC на всех контроллерах домена:

samba-tool drs kcc

Для синхронизации изменений между сайтами выполните:

samba-tool drs syncall CN=Configuration,DC=<имя_домена> \
    --all-sites \
    --push

Проверка наличия избыточных соединений

После установки флагов и запуска сервиса KCC проверьте наличие избыточных соединений:

samba-tool sites connection list

Избыточные соединения отображаются в списке как обычные межсайтовые соединения. Их идентификация требует детального анализа. Для этого используйте команду:

sudo samba-tool drs showrepl <имя_контроллера_домена>

В выводе в разделе ==== KCC CONNECTION OBJECTS ==== проанализируйте значения атрибутов соединений:

  • Options: 0x00000005 означает, что для соединения установлены флаги IG (0x00000001) и OND (0x00000004);

  • Reason: 0x00000240 указывает на избыточное соединение, для которого установлены флаги RS (0x00000200) и IS (0x00000040);

  • Reason: 0x00000040 означает, что флаг RS для соединения снят (как следствие снятия флага RSE); соединение остается в топологии.

Обновлено: