Microsoft Entra Anslut: Mellanlagringsserver och haveriberedskap

Med en server i mellanlagringsläge kan du göra ändringar i konfigurationen och förhandsgranska ändringarna innan du gör servern aktiv. Du kan också köra fullständig import och fullständig synkronisering för att kontrollera att alla ändringar uppfyller förväntningarna innan du gör dessa ändringar i produktionsmiljön.

Mellanlagringsläge

Mellanlagringsläget kan användas för flera scenarier, inklusive:

  • Hög tillgänglighet.
  • Testa och distribuera nya konfigurationsändringar.
  • Introducera en ny server och inaktivera den gamla.

Under installationen kan du välja att servern ska vara i mellanlagringsläge. Den här åtgärden gör servern aktiv för import och synkronisering, men den kör inga exporter. En server i mellanlagringsläge kör inte tillbakaskrivning av lösenord eller tillbakaskrivning av lösenord, även om du valde dessa funktioner under installationen. När du inaktiverar mellanlagringsläget börjar servern exportera, aktiverar lösenordssynkronisering och aktiverar tillbakaskrivning av lösenord.

Kommentar

Anta att du har en Microsoft Entra-Anslut med funktionen synkronisering av lösenordshash aktiverad. När du aktiverar mellanlagringsläge slutar servern synkronisera lösenordsändringar från lokal AD. När du inaktiverar mellanlagringsläget återupptar servern synkroniseringen av lösenordsändringar där den senast slutade. Om servern är kvar i mellanlagringsläge under en längre tid kan det ta en stund för servern att synkronisera alla lösenordsändringar som inträffat under tidsperioden.

Du kan fortfarande tvinga fram en export med hjälp av synkroniseringstjänsthanteraren.

En server i mellanlagringsläge fortsätter att ta emot ändringar från Active Directory och Microsoft Entra-ID och kan snabbt ta över ansvaret för en annan server i händelse av ett fel. Om du gör konfigurationsändringar på den primära servern är det ditt ansvar att göra samma ändringar på servern i mellanlagringsläge.

För dig med kunskap om äldre synkroniseringstekniker är mellanlagringsläget annorlunda eftersom servern har en egen SQL-databas. Med den här arkitekturen kan mellanlagringslägesservern finnas i ett annat datacenter.

Verifiera konfigurationen för en server

Följ dessa steg för att tillämpa den här metoden:

  1. Förbereda
  2. Konfiguration
  3. Importera och synkronisera
  4. Verifiera
  5. Växla aktiv server

Förbereda

  1. Installera Microsoft Entra Anslut, välj mellanlagringsläge och avmarkera startsynkronisering på den sista sidan i installationsguiden. Med det här läget kan du köra synkroniseringsmotorn manuellt. Skärmbild som visar sidan Redo att konfigurera i dialogrutan Microsoft Entra Anslut.
  2. Logga ut/logga in och välj Synkroniseringstjänst på Start-menyn.

Konfiguration

Om du har gjort anpassade ändringar på den primära servern och vill jämföra konfigurationen med mellanlagringsservern använder du Microsoft Entra Anslut konfigurationsdokumentator.

Importera och synkronisera

  1. Välj Anslut orer och välj den första Anslut eller med typen Active Directory-domän Services. Klicka på Kör, välj Fullständig import och OK. Utför de här stegen för alla Anslut orer av den här typen.
  2. Välj Anslut eller med typen Microsoft Entra ID (Microsoft). Klicka på Kör, välj Fullständig import och OK.
  3. Kontrollera att fliken Anslut orer fortfarande är markerad. För varje Anslut eller med typen Active Directory-domän Services klickar du på Kör, väljer Deltasynkronisering och OK.
  4. Välj Anslut eller med typen Microsoft Entra ID (Microsoft). Klicka på Kör, välj Deltasynkronisering och OK.

Nu har du mellanlagrat exportändringar till Microsoft Entra-ID och lokal AD (om du använder Exchange Hybrid-distribution). Med nästa steg kan du kontrollera vad som håller på att ändras innan du påbörjar exporten till katalogerna.

Verifiera

  1. Starta en cmd-prompt och gå till %ProgramFiles%\Microsoft Azure AD Sync\bin
  2. Kör: csexport "Name of Connector" %temp%\export.xml /f:x Namnet på Anslut eller finns i synkroniseringstjänsten. Det har ett namn som liknar "contoso.com – Microsoft Entra ID" för Microsoft Entra ID.
  3. Kör: CSExportAnalyzer %temp%\export.xml > %temp%\export.csv Du har en fil i %temp% med namnet export.csv som kan undersökas i Microsoft Excel. Den här filen innehåller alla ändringar som ska exporteras.
  4. Gör nödvändiga ändringar i data eller konfiguration och kör de här stegen igen (Importera och synkronisera och verifiera) tills de ändringar som ska exporteras förväntas.

Förstå export.csv-filen

Merparten av filen är självförklarande. Vissa förkortningar för att förstå innehållet:

  • OMODT – typ av objektändring. Anger om åtgärden på objektnivå är lägg till, uppdatera eller ta bort.
  • AMODT – typ av attributändring. Anger om åtgärden på attributnivå är lägg till, uppdatera eller ta bort.

Hämta vanliga identifierare

Filen export.csv innehåller alla ändringar som ska exporteras. Varje rad motsvarar en ändring för ett objekt i anslutningsutrymmet och objektet identifieras av DN-attributet. DN-attributet är en unik identifierare som tilldelats ett objekt i anslutningsutrymmet. När du har många rader/ändringar i export.csv att analysera kan det vara svårt för dig att ta reda på vilka objekt ändringarna gäller enbart baserat på DN-attributet. Om du vill förenkla processen med att analysera ändringarna använder du csanalyzer.ps1 PowerShell-skriptet. Skriptet hämtar vanliga identifierare (till exempel displayName, userPrincipalName) för objekten. Så här använder du skriptet:

  1. Kopiera PowerShell-skriptet från avsnittet CSAnalyzer till en fil med namnet csanalyzer.ps1.
  2. Öppna ett PowerShell-fönster och bläddra till mappen där du skapade PowerShell-skriptet.
  3. Kör: .\csanalyzer.ps1 -xmltoimport %temp%\export.xml.
  4. Nu har du en fil med namnet processedusers1.csv som kan undersökas i Microsoft Excel. Observera att filen innehåller en mappning från DN-attributet till vanliga identifierare (till exempel displayName och userPrincipalName). Den innehåller för närvarande inte de faktiska attributändringar som ska exporteras.

Växla aktiv server

Microsoft Entra-Anslut kan konfigureras i en konfiguration med aktiv-passiv hög tillgänglighet, där en server aktivt skickar ändringar till de synkroniserade AD-objekten till Microsoft Entra-ID och den passiva servern mellanlagra dessa ändringar i händelse av att den behöver ta över.

Kommentar

Du kan inte konfigurera Microsoft Entra-Anslut i en Aktiv-Aktiv-konfiguration. Den måste vara aktiv-passiv. Se till att endast 1 Microsoft Entra-Anslut-server synkroniserar ändringar aktivt.

Mer information om hur du konfigurerar en Microsoft Entra Anslut Sync-server i mellanlagringsläge finns i mellanlagringsläge

Du kan behöva utföra en redundansväxling av synkroniseringsservrarna av flera skäl, till exempel att uppgradera versionen av Microsoft Entra Anslut eller få en avisering om att synkroniseringstjänstens hälsotjänst inte får uppdaterad information. I dessa händelser kan du försöka utföra en redundansväxling av synkroniseringsservrarna genom att följa stegen nedan.

Viktigt!

Om du byter mellanlagringsserver till aktivt läge kan det påverka synkroniseringen allvarligt om följande villkor inte uppfylls. Som en försiktighetsåtgärd kör du alltid en inledande synkroniseringscykel och Verifiera väntande exporter innan du utför den här åtgärden.

Förutsättningar

  • En aktiv Microsoft Entra Anslut Sync Server
  • En mellanlagring av Microsoft Entra Anslut Sync Server
  • Mellanlagringsservern har synkroniseringsschemaläggaren aktiverad och har synkroniserats med Microsoft Entra-ID nyligen
  • Om det finns uppdateringar i synkroniseringsregler eller i synkroniseringsomfånget kör du en inledande synkroniseringscykel
  • Bekräfta att Microsoft Entra Anslut Sync Server har konfigurerats för att förhindra oavsiktliga borttagningar
  • Kontrollera de väntande exporterna och bekräfta att det inte finns några betydande uppdateringar och att sådana uppdateringar förväntas
  • Kontrollera om Microsoft Entra Anslut Health-agenten uppdateras genom att kontrollera servern i Microsoft Entra Anslut Health-portalen
  • Växla den aktuella aktiva servern till mellanlagringsläge innan du växlar mellanlagringsservern till aktiv

Ändra aktiv synkroniseringsserver till mellanlagringsläge

Vi måste se till att endast en synkroniseringsserver synkroniserar ändringar vid en viss tidpunkt under hela den här processen. Om den aktiva synkroniseringsservern kan nås kan du utföra stegen nedan för att flytta den till mellanlagringsläge. Om den inte kan nås kontrollerar du att servern eller den virtuella datorn inte återfår åtkomst oväntat antingen genom att stänga av servern eller isolera den från utgående anslutningar.

  1. För den aktiva Microsoft Entra Anslut-servern öppnar du guiden Microsoft Entra Anslut och klickar på "Konfigurera mellanlagringsläge" och sedan Nästa:

    Skärmbild som visar mellanlagringsläge markerat i dialogrutan Active Microsoft Entra Anslut.

  2. Du måste logga in på Microsoft Entra-ID med autentiseringsuppgifter för global administratör eller hybrididentitetsadministratör:

    Skärmbild som visar inloggningsprompt i dialogrutan Active Microsoft Entra Anslut.

  3. Markera kryssrutan för mellanlagringsläge och klicka på Nästa:

    Skärmbild som visar konfiguration av mellanlagringsläge i dialogrutan Active Microsoft Entra Anslut.

  4. Microsoft Entra Anslut-servern söker efter installerade komponenter och frågar sedan om du vill starta synkroniseringsprocessen när konfigurationsändringen är klar:

    Skärmbild som visar skärmen Klar att konfigurera i dialogrutan Active Microsoft Entra Anslut.

Eftersom servern kommer att vara i mellanlagringsläge kommer den inte att skriva ändringar i Microsoft Entra-ID, utan behålla alla ändringar i AD i dess Anslut eller space, redo att skriva dem.
Vi rekommenderar att du lämnar synkroniseringsprocessen på för servern i mellanlagringsläge, så om den blir aktiv tar den snabbt över och behöver inte göra en stor synkronisering för att komma ikapp det aktuella tillståndet för Active Directory-/Microsoft Entra-objekten i omfånget.

  1. När du har valt att starta synkroniseringsprocessen och klickat på Konfigurera konfigureras Microsoft Entra-Anslut-servern till mellanlagringsläge.
    När detta är klart uppmanas du att använda en skärm som bekräftar att mellanlagringsläget är aktiverat.
    Du kan klicka på Avsluta för att slutföra.

  2. Du kan bekräfta att servern är i mellanlagringsläge genom att öppna Windows PowerShell, läsa in modulen "ADSync" och verifiera ADSync Scheduler-konfigurationen med hjälp av följande kommandon:

Import-Module ADSync
Get-ADSyncScheduler

I resultatet kontrollerar du värdet för inställningen "StagingModeEnabled". Om servern har växlats till mellanlagringsläge bör värdet för den här inställningen vara Sant som i exemplet nedan:

Skärmbild som visar synkroniseringstjänstkonsolen i dialogrutan Active Microsoft Entra Anslut.

Ändra aktuell mellanlagringssynkroniseringsserver till aktivt läge

Nu bör alla våra Microsoft Entra-Anslut-synkroniseringsservrar vara i mellanlagringsläge och inte exportera ändringar. Nu kan vi flytta vår server för mellanlagringssynkronisering till aktivt läge och aktivt synkronisera ändringar.

  1. Gå nu till Microsoft Entra Anslut-servern som ursprungligen var i mellanlagringsläge och öppna guiden Microsoft Entra Anslut.

    Klicka på "Konfigurera mellanlagringsläge" och klicka på Nästa:

    Skärmbild som visar mellanlagringsläget markerat i dialogrutan Mellanlagring av Microsoft Entra Anslut.

    Meddelandet längst ned i guiden anger att servern är i mellanlagringsläge.

  2. Logga in på Microsoft Entra-ID och gå sedan till skärmen Mellanlagringsläge.

    Avmarkera rutan för mellanlagringsläge och klicka på Nästa

    Skärmbild som visar konfiguration av mellanlagringsläge i dialogrutan Mellanlagring av Microsoft Entra Anslut.

    Enligt varningen på den här sidan är det viktigt att se till att ingen annan Microsoft Entra-Anslut-server synkroniseras aktivt.

    Det bör bara finnas en aktiv Microsoft Entra-Anslut Sync-server när som helst.

  3. När du uppmanas att starta synkroniseringsprocessen markerar du den här rutan och klickar på Konfigurera:

    Skärmbild som visar skärmen Klar att konfigurera i dialogrutan Mellanlagring av Microsoft Entra Anslut.

  4. När processen är klar bör du få bekräftelseskärmen nedan där du kan klicka på Avsluta för att slutföra:

    Skärmbild som visar bekräftelseskärmen i dialogrutan Mellanlagring av Microsoft Entra Anslut.

  5. Du kan bekräfta att detta fungerar genom att öppna synkroniseringstjänstkonsolen och kontrollera om exportjobb körs:

    Skärmbild som visar synkroniseringstjänstkonsolen i dialogrutan Mellanlagring av Microsoft Entra Anslut.

Haveriberedskap

En del av implementeringsdesignen är att planera för vad du ska göra om det skulle inträffa en katastrof där du förlorar synkroniseringsservern. Det finns olika modeller att använda och vilken som ska användas beror på flera faktorer, bland annat:

  • Vad är din tolerans för att inte kunna göra ändringar i objekt i Microsoft Entra-ID under stilleståndstiden?
  • Om du använder lösenordssynkronisering, accepterar användarna att de måste använda det gamla lösenordet i Microsoft Entra ID om de ändrar det lokalt?
  • Är du beroende av realtidsåtgärder, till exempel tillbakaskrivning av lösenord?

Beroende på svaren på dessa frågor och organisationens policy kan någon av följande strategier implementeras:

  • Återskapa när det behövs.
  • Ha en reservserver i vänteläge, så kallat mellanlagringsläge.
  • Använd virtuella datorer.

Om du inte använder den inbyggda SQL Express-databasen bör du också gå igenom avsnittet SQL Hög tillgänglighet .

Återskapa när det behövs

En livskraftig strategi är att planera för en serverrekonstruktion när det behövs. Vanligtvis kan installationen av synkroniseringsmotorn och den inledande importen och synkroniseringen slutföras inom några timmar. Om det inte finns någon extra server tillgänglig kan du tillfälligt använda en domänkontrollant som värd för synkroniseringsmotorn.

Synkroniseringsmotorservern lagrar inte något tillstånd om objekten så att databasen kan återskapas från data i Active Directory och Microsoft Entra-ID. Attributet sourceAnchor används för att koppla objekten från den lokala miljön och molnet. Om du återskapar servern med befintliga objekt lokalt och molnet matchar synkroniseringsmotorn dessa objekt igen vid ominstallation. Det du behöver dokumentera och spara är de konfigurationsändringar som görs på servern, till exempel filtrerings- och synkroniseringsregler. De här anpassade konfigurationerna måste tillämpas igen innan du börjar synkronisera.

Ha en reservserver i vänteläge – mellanlagringsläge

Om du har en mer komplex miljö rekommenderar vi att du har en eller flera väntelägesservrar. Under installationen kan du aktivera en server i mellanlagringsläge.

Mer information finns i mellanlagringsläge.

Använda virtuella datorer

En vanlig metod som stöds är att köra synkroniseringsmotorn på en virtuell dator. Om värden har problem kan avbildningen med synkroniseringsmotorservern migreras till en annan server.

SQL-hög tillgänglighet

Om du inte använder SQL Server Express som medföljer Microsoft Entra Anslut bör du också överväga hög tillgänglighet för SQL Server. De lösningar för hög tillgänglighet som stöds omfattar SQL-klustring och AOA (AlwaysOn-tillgänglighetsgrupper). Lösningar som inte stöds omfattar spegling.

Stöd för SQL AOA har lagts till i Microsoft Entra Anslut i version 1.1.524.0. Du måste aktivera SQL AOA innan du installerar Microsoft Entra Anslut. Under installationen identifierar Microsoft Entra Anslut om den angivna SQL-instansen är aktiverad för SQL AOA eller inte. Om SQL AOA är aktiverat tar Microsoft Entra Anslut ytterligare reda på om SQL AOA är konfigurerat att använda synkron replikering eller asynkron replikering. När du konfigurerar tillgänglighetsgruppens lyssnare måste egenskapen RegisterAllProvidersIP vara inställd på 0. Det beror på att Microsoft Entra Anslut för närvarande använder SQL Native Client för att ansluta till SQL och SQL Native Client inte stöder användning av egenskapen MultiSubNetFailover.

Bilaga CSAnalyzer

Se avsnittet verifiera hur du använder det här skriptet.

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
}

Nästa steg

Översiktsavsnitt