Microsoft Entra Connect: промежуточный сервер и аварийное восстановление

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

Промежуточный режим

Промежуточный режим может использоваться в нескольких ситуациях, например:

  • обеспечение высокой доступности; Каждый набор масштабирования помещает свои виртуальные машины в группу доступности с 5 доменами сбоя (FD) и 5 доменами обновления (UD) для обеспечения доступности (дополнительные сведения о доменах сбоя и обновления см.
  • тестирование и развертывание новых изменений в конфигурации;
  • введение в эксплуатацию нового сервера и списание старого.

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

Примечание.

Предположим, что у вас есть функция Microsoft Entra Connect с поддержкой синхронизации хэша паролей. При включении промежуточного режима сервер останавливает синхронизацию изменений паролей из локального каталога AD. При отключении промежуточного режима сервер возобновляет синхронизацию изменений паролей с того места, на котором она была остановлена. Если сервер останется в промежуточном режиме в течение продолжительного периода времени, то ему может потребоваться некоторое время, чтобы синхронизировать все изменения паролей, произошедшие за этот период.

Вы по-прежнему можете выполнить экспорт принудительно с помощью Synchronization Service Manager.

Сервер в промежуточном режиме продолжает получать изменения от Active Directory и идентификатора Microsoft Entra и может быстро взять на себя обязанности другого сервера в случае сбоя. При внесении изменений в конфигурацию сервера-источника обязательно внесите те же изменения в конфигурацию серверов в промежуточном режиме.

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

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

Чтобы использовать этот метод, выполните следующие действия.

  1. Подготовка
  2. Конфигурация
  3. Импорт и синхронизация
  4. Проверка
  5. Переключение активного сервера

Подготовить

  1. Установите Microsoft Entra Connect, выберите промежуточный режим и отмените синхронизацию на последней странице мастера установки. В этом режиме можно вручную запустить модуль синхронизации. Снимок экрана: страница
  2. Выйдите из системы и снова войдите в нее, а затем в меню "Пуск" выберите пункт Служба синхронизации.

Настройка

Если вы внесли пользовательские изменения на основной сервер и хотите сравнить конфигурацию со промежуточным сервером, используйте документатор конфигурации Microsoft Entra Connect.

Импорт и синхронизация

  1. Щелкните Соединители и выберите первый соединитель типа Доменные службы Active Directory. Щелкните Запуск, выберите Полный импорт и нажмите кнопку ОК. Проделайте это для всех соединителей данного типа.
  2. Выберите соединитель с типом Microsoft Entra ID (Майкрософт). Щелкните Запуск, выберите Полный импорт и нажмите кнопку ОК.
  3. Убедитесь, что все еще выбрана вкладка "Соединители". Для каждого соединителя типа Доменные службы Active Directory щелкните Запуск, выберите Синхронизация изменений и нажмите кнопку ОК.
  4. Выберите соединитель с типом Microsoft Entra ID (Майкрософт). Щелкните Запуск, выберитеСинхронизация изменений) и нажмите кнопку ОК.

Теперь вы выполнили поэтапное экспортирование изменений в идентификатор Microsoft Entra ID и локальную ad (если вы используете гибридное развертывание Exchange). С помощью описанных далее действий вы сможете проверить предстоящие изменения, прежде чем фактически запустить экспорт в каталоги.

Проверка

  1. Откройте командную строку и перейдите в каталог %ProgramFiles%\Microsoft Azure AD Sync\bin.
  2. Выполните команду csexport "Name of Connector" %temp%\export.xml /f:x. Имя соединителя можно найти в службе синхронизации. Он имеет имя, похожее на "contoso.com — идентификатор Microsoft Entra ID" для идентификатора Microsoft Entra.
  3. Выполните команду CSExportAnalyzer %temp%\export.xml > %temp%\export.csv. Теперь в папке %temp% есть файл export.csv, который можно просмотреть в Microsoft Excel. Этот файл содержит все изменения, которые будут экспортированы.
  4. Внесите необходимые изменения в данные и конфигурацию и выполните описанные выше действия (импорт, синхронизация и проверка) повторно, чтобы привести изменения, которые предстоит экспортировать, в нужный вид.

Основные сведения о файле export.csv

Большая часть файла не нуждается в объяснении. Вот некоторые сокращения, которые помогут понять содержимое.

  • OMODT — тип изменения объекта (от англ. Object Modification Type). Указывает, к какому типу относится операция на уровне объекта: Add (добавление), Update (обновление) или Delete (удаление).
  • AMODT — тип изменения атрибута (от англ. Attribute Modification Type). Указывает, к какому типу относится операция на уровне атрибута: Add (добавление), Update (обновление) или Delete (удаление).

Получение общих идентификаторов

Файл export.csv содержит все изменения, которые будут экспортированы. Каждая строка соответствует изменению для объекта в пространстве соединителя, и этот объект определяется атрибутом различающегося имени. Атрибут различающегося имени — это уникальный идентификатор, назначаемый объекту в пространстве соединителя. Если в файле export.csv имеется большое количество строк и изменений для анализа, может быть сложно понять, какие объекты, для которых указаны изменения, основываются только на атрибуте различающегося имени. Чтобы упростить процесс анализа изменений, используйте скрипт PowerShell csanalyzer.ps1. Этот сценарий получает общие идентификаторы объектов (например, displayName, userPrincipalName). Использование скрипта.

  1. Скопируйте сценарий PowerShell из раздела CSAnalyzer в файл csanalyzer.ps1.
  2. Откройте окно PowerShell и перейдите в папку, в которой вы создали сценарий PowerShell.
  3. Выполните команду .\csanalyzer.ps1 -xmltoimport %temp%\export.xml.
  4. Теперь у вас есть файл processedusers1.csv, который можно просмотреть в Microsoft Excel. Обратите внимание на то, что файл обеспечивает сопоставление атрибута различающегося имени с общими идентификаторами (например, displayName и userPrincipalName). В настоящее время он не включает фактические изменения атрибутов, которые будут экспортированы.

Переключение активного сервера

Microsoft Entra Connect можно настроить в настройке высокой доступности Active-Passive, где один сервер активно отправляет изменения в синхронизированные объекты AD в идентификатор Microsoft Entra ID и пассивный сервер этапы этих изменений в случае, когда он должен взять на себя.

Примечание.

Невозможно настроить Microsoft Entra Connect в настройке Active-Active. Требуется конфигурация "активный — пассивный". Убедитесь, что только 1 сервер Microsoft Entra Connect активно синхронизирует изменения.

Дополнительные сведения о настройке сервера синхронизации Microsoft Entra Connect в промежуточном режиме см . в промежуточном режиме

Возможно, потребуется выполнить отработку отказа серверов синхронизации по нескольким причинам, например обновление версии Microsoft Entra Connect или получение оповещения о том, что служба работоспособности службы синхронизации не получает актуальной информации. В этих случаях можно попытаться осуществить отработку отказа серверов синхронизации, выполнив указанные ниже действия.

Внимание

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

Необходимые компоненты

  • Один активный сервер синхронизации Microsoft Entra Connect
  • Один промежуточный сервер синхронизации Microsoft Entra Connect
  • Промежуточный сервер включен планировщик синхронизации и синхронизирован с идентификатором Microsoft Entra ID недавно
  • В случае любых обновлений в правилах синхронизации или в области синхронизации запустите начальный цикл синхронизации
  • Убедитесь, что сервер синхронизации Microsoft Entra Connect настроен для предотвращения случайного удаления
  • Проверьте ожидающие экспорты и убедитесь , что нет значительных обновлений, и такие обновления ожидаются.
  • Проверьте, обновлен ли агент работоспособности Microsoft Entra Connect, проверив сервер на портале Microsoft Entra Connect Health
  • Переключение текущего активного сервера на промежуточный режим перед переключением промежуточного сервера на активный

Переключение активного в настоящее время сервера синхронизации в промежуточный режим

На протяжении всего процесса только один сервер синхронизации должен синхронизировать изменения в любой момент времени. Если текущий активный сервер синхронизации доступен, выполните следующие действия, чтобы переместить его в промежуточный режим. Если он недоступен, убедитесь, что сервер или виртуальная машина не восстанавливает доступ неожиданно, завершив работу сервера или изолировав его от исходящих подключений.

  1. Для активного сервера Microsoft Entra Connect откройте мастер Microsoft Entra Connect и нажмите кнопку "Настройка промежуточного режима" и нажмите кнопку "Далее:

Снимок экрана: промежуточный режим, выделенный в диалоговом окне Active Microsoft Entra Connect.

  1. Вам потребуется войти в идентификатор Microsoft Entra с учетными данными администратора гибридных удостоверений:

Снимок экрана: запрос входа в диалоговом окне Active Microsoft Entra Connect.

  1. Установите флажок промежуточного режима и нажмите кнопку "Далее".

Снимок экрана: настройка промежуточного режима в диалоговом окне Active Microsoft Entra Connect.

  1. Сервер Microsoft Entra Connect проверяет наличие установленных компонентов, а затем предложите запустить процесс синхронизации при завершении изменения конфигурации:

Снимок экрана:

Так как сервер находится в промежуточном режиме, он не будет записывать изменения в идентификатор Microsoft Entra, но сохраняет любые изменения в ad в пространстве соединителя, готовые к их записи. Рекомендуется оставить процесс синхронизации на сервере в промежуточном режиме, поэтому если он становится активным, он быстро возьмет на себя и не придется выполнять большую синхронизацию, чтобы выполнить текущую синхронизацию для текущего состояния объектов Active Directory или Microsoft Entra в области.

  1. После выбора запуска процесса синхронизации и нажатия кнопки "Настройка" сервер Microsoft Entra Connect настраивается в промежуточный режим. После завершения появится запрос на экран, который подтверждает включение промежуточного режима. Вы можете нажать кнопку "Выйти", чтобы завершить работу.

  2. Вы можете убедиться, что сервер успешно находится в промежуточном режиме, открыв Windows PowerShell, загрузите модуль ADSync и проверьте конфигурацию планировщика ADSync, выполнив следующие команды:

Import-Module ADSync
Get-ADSyncScheduler

В результатах проверьте значение параметра StagingModeEnabled. Если сервер успешно переключился на промежуточный режим, значение этого параметра должно иметь значение True , как в примере ниже:

Снимок экрана: консоль службы синхронизации в диалоговом окне Active Microsoft Entra Connect.

Перевод текущего промежуточного сервера синхронизации в активный режим

На этом этапе все серверы синхронизации Microsoft Entra Connect должны находиться в промежуточном режиме, а не экспортировать изменения. Теперь можно перевести промежуточный сервер синхронизации в активный режим и активно синхронизировать изменения.

  1. Теперь перейдите на сервер Microsoft Entra Connect, который изначально был в промежуточном режиме и откройте мастер Microsoft Entra Connect.

Щелкните "Настроить промежуточный режим" и нажмите кнопку "Далее".

Снимок экрана: промежуточный режим, выделенный в диалоговом окне

Сообщение в нижней части мастера указывает, что этот сервер находится в промежуточном режиме.

  1. Войдите в идентификатор Microsoft Entra, а затем перейдите на экран промежуточного режима.

Снимите флажок для промежуточного режима и нажмите кнопку "Далее".

Снимок экрана: настройка промежуточного режима в диалоговом окне

Что касается предупреждения на этой странице, важно убедиться, что ни один другой сервер Microsoft Entra Connect активно не синхронизируется.

В любое время должен быть только один активный сервер синхронизации Microsoft Entra Connect.

  1. Когда появится запрос на запуск процесса синхронизации, установите этот флажок и нажмите кнопку "Настроить".

Снимок экрана:

  1. После завершения процесса должен появиться следующий экран подтверждения, на котором можно нажать кнопку "Выход":

Снимок экрана: экран подтверждения в диалоговом окне

  1. Чтобы убедиться, что этот процесс работает, откройте консоль службы синхронизации и проверьте, выполняются ли задания экспорта:

Снимок экрана: консоль службы синхронизации в диалоговом окне промежуточного подключения Microsoft Entra Connect.

Аварийное восстановление

Часть проектирования реализации заключается в планировании того, что делать в случае аварии, когда вы теряете сервер синхронизации. Вы можете воспользоваться одной из нескольких моделей. Выбор зависит от ответов на следующие вопросы:

  • Что такое допустимость для того, чтобы не вносить изменения в объекты в идентификаторе Microsoft Entra ID во время простоя?
  • Если вы используете синхронизацию паролей, согласятся ли пользователи использовать старые пароли в Microsoft Entra ID в случае их изменения в локальной среде?
  • Зависите ли вы от выполняемых в реальном времени операций, таких как обратная запись паролей?

В зависимости от политики вашей организации и ответов на эти вопросы можно реализовать одну из следующих стратегий:

  • Восстановление при необходимости.
  • Наличие запасного резервного сервера ( промежуточный режим).
  • Использование виртуальных машин.

Если вы не используете встроенную базу данных SQL Express, ознакомьтесь с разделом "Высокий уровень доступности SQL".

Восстановление при необходимости

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

Сервер подсистемы синхронизации не сохраняет состояние объектов, поэтому база данных может быть перестроена из данных в Active Directory и идентификаторе Microsoft Entra. Для объединения объектов из локальной среды и облака используется атрибут sourceAnchor . Если восстанавливается сервер с имеющимися объектами в локальной среде и в облаке, то при повторной установке модуль синхронизации повторно сопоставляет эти объекты. Изменения в конфигурации сервера, в частности изменения в правилах фильтрации и синхронизации, необходимо задокументировать и сохранить. Эти пользовательские конфигурации необходимо применить повторно перед началом синхронизации.

Наличие запасного резервного сервера (промежуточный режим)

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

Дополнительные сведения см. в разделе Промежуточный режим.

Использование виртуальных машин

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

Высокий уровень доступности сервера SQL

Если вы не используете выпуск SQL Server Express, входящий в Microsoft Entra Connect, вам следует также рассмотреть обеспечение высокого уровня доступности для SQL Server. Поддерживаются такие решения высокого уровня доступности, как кластеры SQL и группы доступности AlwaysOn. Такие решения, как зеркальное отображение, не поддерживаются.

Поддержка AOA SQL добавлена в Microsoft Entra Connect версии 1.1.524.0. Перед установкой Microsoft Entra Connect необходимо включить SQL AOA. Во время установки Microsoft Entra Connect определяет, включен ли экземпляр SQL для AOA ИЛИ нет. Если sql AOA включен, Microsoft Entra Connect также узнает, настроен ли AOA SQL для использования синхронной репликации или асинхронной репликации. При настройке прослушивателя группы доступности свойство RegisterAllProvidersIP должно иметь значение 0. Microsoft Entra Connect в настоящее время использует собственный клиент SQL для подключения к SQL и sql Native Client не поддерживает использование свойства MultiSubNetFailover.

Приложение CSAnalyzer

Сведения об использовании этого сценария см. в разделе Проверка.

Param(
 [Parameter(Mandatory=$true, HelpMessage="Must be a file generated using csexport 'Name of Connector' export.xml /f:x)")]
 [string]$xmltoimport="%temp%\exportedStage1a.xml",
 [Parameter(Mandatory=$false, HelpMessage="Maximum number of users per output file")][int]$batchsize=1000,
 [Parameter(Mandatory=$false, HelpMessage="Show console output")][bool]$showOutput=$false
)

#LINQ isn't loaded automatically, so force it
[Reflection.Assembly]::Load("System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089") | Out-Null

[int]$count=1
[int]$outputfilecount=1
[array]$objOutputUsers=@()

#XML must be generated using "csexport "Name of Connector" export.xml /f:x"
write-host "Importing XML" -ForegroundColor Yellow

#XmlReader.Create won't properly resolve the file location,
#so expand and then resolve it
$resolvedXMLtoimport=Resolve-Path -Path ([Environment]::ExpandEnvironmentVariables($xmltoimport))

#use an XmlReader to deal with even large files
$result=$reader = [System.Xml.XmlReader]::Create($resolvedXMLtoimport) 
$result=$reader.ReadToDescendant('cs-object')
if($result)
{
 do 
 {
  #create the object placeholder
  #adding them up here means we can enforce consistency
  $objOutputUser=New-Object psobject
  Add-Member -InputObject $objOutputUser -MemberType NoteProperty -Name ID -Value ""
  Add-Member -InputObject $objOutputUser -MemberType NoteProperty -Name Type -Value ""
  Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name DN -Value ""
  Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name operation -Value ""
  Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name UPN -Value ""
  Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name displayName -Value ""
  Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name sourceAnchor -Value ""
  Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name alias -Value ""
  Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name primarySMTP -Value ""
  Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name onPremisesSamAccountName -Value ""
  Add-Member -inputobject $objOutputUser -MemberType NoteProperty -Name mail -Value ""

  $user = [System.Xml.Linq.XElement]::ReadFrom($reader)
  if ($showOutput) {Write-Host Found an exported object... -ForegroundColor Green}

  #object id
  $outID=$user.Attribute('id').Value
  if ($showOutput) {Write-Host ID: $outID}
  $objOutputUser.ID=$outID

  #object type
  $outType=$user.Attribute('object-type').Value
  if ($showOutput) {Write-Host Type: $outType}
  $objOutputUser.Type=$outType

  #dn
  $outDN= $user.Element('unapplied-export').Element('delta').Attribute('dn').Value
  if ($showOutput) {Write-Host DN: $outDN}
  $objOutputUser.DN=$outDN

  #operation
  $outOperation= $user.Element('unapplied-export').Element('delta').Attribute('operation').Value
  if ($showOutput) {Write-Host Operation: $outOperation}
  $objOutputUser.operation=$outOperation

  #now that we have the basics, go get the details

  foreach ($attr in $user.Element('unapplied-export-hologram').Element('entry').Elements("attr"))
  {
   $attrvalue=$attr.Attribute('name').Value
   $internalvalue= $attr.Element('value').Value

   switch ($attrvalue)
   {
    "userPrincipalName"
    {
     if ($showOutput) {Write-Host UPN: $internalvalue}
     $objOutputUser.UPN=$internalvalue
    }
    "displayName"
    {
     if ($showOutput) {Write-Host displayName: $internalvalue}
     $objOutputUser.displayName=$internalvalue
    }
    "sourceAnchor"
    {
     if ($showOutput) {Write-Host sourceAnchor: $internalvalue}
     $objOutputUser.sourceAnchor=$internalvalue
    }
    "alias"
    {
     if ($showOutput) {Write-Host alias: $internalvalue}
     $objOutputUser.alias=$internalvalue
    }
    "proxyAddresses"
    {
     if ($showOutput) {Write-Host primarySMTP: ($internalvalue -replace "SMTP:","")}
     $objOutputUser.primarySMTP=$internalvalue -replace "SMTP:",""
    }
   }
  }

  $objOutputUsers += $objOutputUser

  Write-Progress -activity "Processing ${xmltoimport} in batches of ${batchsize}" -status "Batch ${outputfilecount}: " -percentComplete (($objOutputUsers.Count / $batchsize) * 100)

  #every so often, dump the processed users in case we blow up somewhere
  if ($count % $batchsize -eq 0)
  {
   Write-Host Hit the maximum users processed without completion... -ForegroundColor Yellow

   #export the collection of users as a CSV
   Write-Host Writing processedusers${outputfilecount}.csv -ForegroundColor Yellow
   $objOutputUsers | Export-Csv -path processedusers${outputfilecount}.csv -NoTypeInformation

   #increment the output file counter
   $outputfilecount+=1

   #reset the collection and the user counter
   $objOutputUsers = $null
   $count=0
  }

  $count+=1

  #need to bail out of the loop if no more users to process
  if ($reader.NodeType -eq [System.Xml.XmlNodeType]::EndElement)
  {
   break
  }

 } while ($reader.Read)

 #need to write out any users that didn't get picked up in a batch of 1000
 #export the collection of users as CSV
 Write-Host Writing processedusers${outputfilecount}.csv -ForegroundColor Yellow
 $objOutputUsers | Export-Csv -path processedusers${outputfilecount}.csv -NoTypeInformation
}
else
{
 Write-Host "Imported XML file is empty. No work to do." -ForegroundColor Red
}

Следующие шаги

Обзорные статьи