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

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

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

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

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

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

Примечание.

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

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

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

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

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

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

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

Подготовить

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

Настройка

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

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

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

Теперь вы выполнили поэтапное экспортирование изменений в идентификатор Microsoft Entra и локальную службу 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 Подключение можно настроить в настройке высокой доступности Active-Passive, где один сервер будет активно отправлять изменения в синхронизированные объекты AD с идентификатором Microsoft Entra ID, и пассивный сервер будет выполнять эти изменения в случае, если потребуется взять на себя.

Примечание.

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

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

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

Внимание

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

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

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

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

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

  1. Для активного сервера Microsoft Entra Подключение откройте мастер microsoft Entra Подключение и нажмите кнопку "Настроить промежуточный режим" и нажмите кнопку "Далее:

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

  2. Вам потребуется войти в идентификатор Microsoft Entra с помощью глобального Администратор istrator или гибридного удостоверения Администратор учетных данных:

    Снимок экрана: запрос входа в диалоговое окно

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

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

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

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

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

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

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

Import-Module ADSync
Get-ADSyncScheduler

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Поддержка AOA SQL была добавлена в Microsoft Entra Подключение в версии 1.1.524.0. Перед установкой Microsoft Entra Подключение необходимо включить SQL AOA. Во время установки Microsoft Entra Подключение определяет, включен ли экземпляр SQL для AOA ИЛИ нет. Если служба AOA SQL включена, Microsoft Entra Подключение дополнительные сведения о том, настроен ли AOA SQL для использования синхронной реплика tion или асинхронной реплика tion. При настройке прослушивателя группы доступности свойство RegisterAllProvidersIP должно иметь значение 0. Это связано с тем, что Microsoft Entra Подключение в настоящее время использует собственный клиент 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
}

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

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