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

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

Общие сведения

Автоматическое создание избыточных межсайтовых соединений повышает отказоустойчивость репликации в топологиях типа 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); соединение остается в топологии.