Wie entferne ich verweilende Objekte richtig, wenn auf einer großen Anzahl von DCs über einen längeren Zeitraum -strict eingestellt wurde?

16

Vor kurzem befand ich mich in einer Umgebung mit 120 Domänencontrollern an über 100 Standorten auf der ganzen Welt. Diese Domäne begann in der Windows 2000-Ära und wurde im Laufe der Zeit aktualisiert, sodass die strikte Replikationskonsistenz nie als Standard für neue Domänencontroller festgelegt und auf keinem Domänencontroller aktiviert wurde. Das Verzeichnis enthält veraltete Objekte, und aus diesem Grund wird regelmäßig eine anständige Anzahl von Objekten mit Konflikten angezeigt.

Für die Verwendung repadmin /removelingeringobjectsmüssen zwei Dinge bekannt sein:

  1. Welche DCs haben veraltete Objekte in der Datenbank?

  2. Ein DC, auf dem sich keine veralteten Objekte befinden, die als Referenz-DC verwendet werden können.

Offensichtlich sollte diese Umgebung in Zukunft so eingerichtet werden, dass für alle neuen Domänencontroller eine strikte Replikationskonsistenz erzwungen wird und repadmin /options * +strictdass alle aktuellen Domänencontroller eine strikte Replikationskonsistenz verwenden. Dadurch wird die Replikation jedoch unterbrochen, ohne dass die Objekte bereinigt werden .

Meine Frage lautet also: In einer derart massiven Umgebung, in der ich keine Ahnung hätte, welche DCs veraltete Objekte haben und welche nicht, wie kann ich einen repadmin /removelingeringobjectsgeeigneten Referenz-DC für die Verwendung identifizieren und wie kann ich sicherstellen, dass alle 120+ sind Domänencontroller sind frei von veralteten Objekten, bevor eine strikte Replikationskonsistenz erzwungen und die Replikation unterbrochen wird? Oder ist es einfacher, den Strict-Modus einzuschalten und zu beobachten repadmin /replsum, was kaputt geht und damit umzugehen?

MDMarra
quelle

Antworten:

11

Dies kann einige Zeit in Anspruch nehmen.

Führen Sie Folgendes aus, um die gesamte Replikation zu stoppen:

repadmin /options +DISABLE_OUTBOUND_REPL

Auf allen DCs. Beachten Sie, dass die oben genannte Einstellung manuelle Replikationsaktionen wie das Ausführen eines Administrators (Sie) repadmin /syncall /APedusw. nicht verhindert . Dies ist jedoch eine gute Sache, da Sie alle DCs wieder vollständig synchronisieren können, bevor Sie die regelmäßige Replikation wieder aktivieren.

Repadmin stellt fest, dass es sich um ein veraltetes Objekt handelt, wenn das Objekt auf ServerA, jedoch nicht auf ServerB vorhanden ist, wobei ServerB der Referenz-DC ist. Der Unterschied zwischen dem Replizieren neu erstellter Objekte und dem Replizieren von Aktualisierungen bereits vorhandener Objekte ist der Schlüssel. Neu erstellte Objekte replizieren = gut. Aktualisierungen an bereits vorhandenen Objekten replizieren = gut. Aktualisierungen für Objekte replizieren, die auf dem Ziel-DC nicht vorhanden sind = fehlerhaft.

Sie müssen nur aufschäumen, ausspülen und wiederholen, bis alle DCs mit Ihrem einen guten Referenz-DC übereinstimmen. Aktivieren Sie dann überall die strikte Konsistenz und aktivieren Sie die Replikation erneut. Ja, Sie laufen Gefahr, legitime Objekte zu löschen, die auf anderen Remote-DCs erstellt wurden, die nicht auf Ihren Referenz-DC repliziert wurden.

Aus dem großartigen Artikel "Funktionsweise des Active Directory-Replikationsmodells ":

Replikationskonsistenz-Einstellung

Wenn sich die Attribute eines veralteten Objekts niemals ändern, wird das Objekt niemals für die Replikation berücksichtigt. Wenn sich jedoch ein Attribut ändert, wird das Attribut für die ausgehende Replikation berücksichtigt. Da der Zieldomänencontroller das Objekt für das zu replizierende Attribut nicht enthält, kann keine Aktualisierung durchgeführt werden. Wie diese Bedingung gelöst wird, hängt von der Einstellung der Replikationskonsistenz auf dem Domänencontroller ab.

Eine Registrierungseinstellung auf Domänencontrollern, auf denen Windows Server 2003 oder Windows 2000 Server mit SP3 ausgeführt wird, enthält einen Konsistenzwert, der bestimmt, ob ein Domänencontroller ein aktualisiertes Objekt repliziert und erneut reaktiviert, das aus allen anderen Replikaten gelöscht wurde, oder ob die Replikation solcher Objekte durchgeführt wird verstopft. Die Standardeinstellungen unterscheiden sich auf Domänencontrollern, auf denen Windows 2000 Server mit SP3 und Windows Server 2003 ausgeführt wird.

Strikte Replikationskonsistenz

Um Probleme bei der Neuerstellung gelöschter Objekte zu vermeiden, blockiert ein Domänencontroller, auf dem Windows Server 2003 in einer neu erstellten (nicht aktualisierten) Windows Server 2003-Gesamtstruktur ausgeführt wird, standardmäßig die eingehende Replikation, wenn er ein Update für ein Objekt erhält, das nicht vorhanden ist .

Hinweis • Bei der Active Directory-Replikation wird die Update-Verfolgung verwendet, um zwischen der Replikation eines neu erstellten Objekts und der Aktualisierung eines Attributs für ein vorhandenes Objekt zu unterscheiden. Die Replikation eines veralteten Objekts ist ein Versuch, ein Attribut oder Attribute eines Objekts zu aktualisieren, das der Zieldomänencontroller nicht aktualisieren kann, weil das Objekt nicht vorhanden ist.

Die Replikation wird in der Verzeichnispartition für das Objekt angehalten, bis das veraltete Objekt vom Quelldomänencontroller entfernt oder die Einstellung für die strikte Replikationskonsistenz deaktiviert wurde.

Wenn ServerB zu ServerA sagt: "Hey, es wurden einige Aktualisierungen an vorhandenem objectA vorgenommen." Dann sagt ServerA: "Warten Sie, was? Ich habe noch nicht einmal objectA. Senden Sie mir das gesamte Objekt!" Wenn keine strenge Übereinstimmung. Bei strikter Übereinstimmung sagt ServerA: "Warten Sie, was? Wie soll ich ein Objekt aktualisieren, das nicht vorhanden ist? Los, beugen Sie sich!"

So stellen Sie fest, ob sich auf einem Domänencontroller veraltete Objekte befinden:

repadmin /removelingeringobjects ServerName ServerGUID DirectoryPartition /advisory_mode 

ServerGUID ist der bekanntermaßen gute Referenz-DC. Ich weiß, dass Sie dies bereits wissen ... und wie Sie die obige Zeile skripten, um sie auf allen DCs auszuführen ... ( foreach ($DC In $(Get-ADDomain).ReplicaDirectoryServers) { }) ...

Sie benötigen einen guten Quell-DC, um mit dem Endergebnis zu vergleichen. Wenn Sie keine gute Quelle DC haben oder nicht wissen, müssen Sie nur eine auswählen. Es sollte natürlich ein beschreibbarer GC sein. Es ist relativ - wenn sich alle Domänencontroller über die Existenz eines Objekts und die Attribute dieses Objekts einig sind, ist es kein verweilendes Objekt.

foreach($GC In $(Get-ADForest).GlobalCatalogs) { repadmin /removelingeringobjects $_.name 85d158d2-a006-4fff-b1e5-f9b6eaabab2b '$directoryPartition'

Das heißt, Sie synchronisieren die Verzeichnispartition jedes GC in der Gesamtstruktur erneut mit der als GUID angegebenen, als funktionierend bekannten Quelle.

Nachdem Sie alle Domänencontroller wieder in Übereinstimmung gebracht haben und die Replikation erfolgreich abgeschlossen wurde, können Sie alle Domänencontroller auf strikte Konsistenz überprüfen.

Bearbeiten: Dies ist Microsofts Parteilinie zu diesem Thema, und was sie wahrscheinlich durchsprechen werden, war, dass Sie sie anrufen.

Letztendlich ist es möglicherweise schwieriger, das Problem zu beheben, als es sich lohnt, es sei denn, es verursacht Probleme. Ich hasse es, es zu sagen, aber AD kann mit verweilenden Objekten immer noch normal funktionieren.

Ryan Ries
quelle
4

Das allgemeine Prinzip für den Fall, dass Sie keinen sauberen DC identifizieren können, lautet wie folgt:

for each $sourceDC in $allDCs
    for each $targetDC in $allDCs
        if ($targetDC <> $sourceDC) then
            run repadmin with $sourceDC and $targetDC
        end if
    next
next

Dieser Prozess wird hier beschrieben: http://blogs.technet.com/b/glennl/archive/2007/07/26/clean-that-active-directory-forest-of-lingering-objects.aspx

Schauen Sie sich jedoch ReplDiag an . Es automatisiert den Prozess, indem es repadminfür Sie alle Kombinationen von Quell- und Ziel-DCs überprüft. Daraufhin wird /advisory_onlynach weiteren verbliebenen Objekten gesucht.

langer Hals
quelle
Das sind immer noch 14.400 Interaktionen, die durchlaufen werden. Während dieser Zeit können zusätzliche verweilende Objekte im gesamten Verzeichnis repliziert werden. Wird empfohlen, + strict zuerst zu aktivieren, damit die Replikation unterbrochen wird, um dies zu vermeiden? 14.400 Iterationen werden auf einem Verzeichnis dieser Größe definitiv lange genug dauern, um eine schlechtere Replikation zu ermöglichen.
MDMarra
Kannst du es mit etwas parallelisieren?
Tom O'Connor
@ TomO'Connor Interessante Idee. Dies sollte mit PowerShell-Remoting möglich sein. Dann könnte jeder DC für sich laufen repadmin, in PARALLEL !!!
Longneck
7
@MDMarra Wenn es schnell und einfach wäre, eine 120-DC-Domain zu bereinigen, die sich über den gesamten Globus erstreckt und seit Win2k existiert und seitdem in verschiedenen Versionen aktualisiert wurde ... dann würde das Unternehmen einfach seinen Hausmeister dazu bringen, dies zu tun ... ;)
Ryan Ries
1
Ich weiß, dass Sie über eine Unmenge von Domänencontrollern verfügen, aber wie viele davon werden tatsächlich von Administratoren verwendet, um Änderungen vorzunehmen? Sie können diese Bereinigung zunächst mit nur diesen Domänencontrollern und den Domänencontrollern an diesen Standorten beginnen und diese Domänencontroller dann streng festlegen. Die machen mit den anderen weiter. Das sollte alle möglichen Probleme minimieren
Longneck