¿Cómo eliminar correctamente los objetos persistentes cuando -strict se ha establecido en una gran cantidad de DC durante mucho tiempo?

16

Hace poco estuve en un entorno donde había 120 controladores de dominio en más de 100 sitios en todo el mundo. Este dominio comenzó en la era de Windows 2000 y se actualizó con el tiempo, por lo que la consistencia de replicación estricta nunca se estableció como predeterminada para los nuevos DC y nunca se ha habilitado en ningún DC. Hay objetos persistentes en el directorio y, debido a esto, regularmente ve un número decente de objetos en conflicto.

Usar repadmin /removelingeringobjectsrequiere saber dos cosas:

  1. Qué DC (s) tienen objetos persistentes en la base de datos

  2. Un DC que no tiene objetos persistentes para usar como DC de referencia.

Obviamente, en el futuro, este entorno debe establecerse de modo que todos los DC nuevos tengan una consistencia de replicación estricta y repadmin /options * +strictse ejecuten para que todos los DC actuales usen una consistencia de replicación estricta, pero eso interrumpirá la replicación ahora sin limpiar los objetos .

Entonces, mi pregunta es la siguiente: en un entorno tan masivo donde no tendría idea de qué DC tienen objetos persistentes y cuáles no, cómo puedo identificar un buen DC de referencia para repadmin /removelingeringobjectsusar y cómo puedo asegurarme de que todos los 120+ Los DC están limpios de objetos persistentes antes de imponer una consistencia de replicación estricta y romper la replicación O, ¿es más fácil activar el modo estricto y mirar repadmin /replsumpara ver qué se rompe y lidiar con él?

MDMarra
fuente

Respuestas:

11

Esto tomará algún tiempo para solucionarlo.

Para detener toda la replicación, ejecute:

repadmin /options +DISABLE_OUTBOUND_REPL

En todos los DC. Recuerde que la configuración anterior no impide las acciones de replicación manual, como la ejecución de un administrador (usted) repadmin /syncall /APed, etc. Pero eso es algo bueno porque le permite volver a sincronizar todos sus DC totalmente antes de volver a habilitar la replicación regular.

Repadmin determina que es un objeto persistente si el objeto existe en ServerA pero no en ServerB, donde ServerB es el DC de referencia. La diferencia entre replicar objetos recién creados y replicar actualizaciones a objetos ya existentes es la clave. Replicar objetos recién creados = bueno. Replicar actualizaciones a objetos ya existentes = bueno. Replicar actualizaciones a objetos que no existen en el destino DC = incorrecto.

Solo necesita enjabonar, enjuagar, repetir hasta que todos los DC coincidan con su único DC de referencia. Luego active la consistencia estricta en todas partes, luego vuelva a habilitar la replicación. Sí, corre el riesgo de eliminar objetos legítimos que se crearon en otros DC remotos que no se han replicado en su DC de referencia.

Del gran artículo " Cómo funciona el modelo de replicación de Active Directory ":

Configuración de coherencia de replicación

Si los atributos en un objeto persistente nunca cambian, el objeto nunca se considera para la replicación. Sin embargo, si un atributo cambia, el atributo se considera para la replicación saliente. Debido a que el controlador de dominio de destino no contiene el objeto para el atributo que se está replicando, no se puede realizar una actualización. Cómo se resuelve esta condición depende de la configuración de coherencia de replicación en el controlador de dominio.

Una configuración de registro en los controladores de dominio que ejecutan Windows Server 2003 o Windows 2000 Server con SP3 proporciona un valor de coherencia que determina si un controlador de dominio replica y reanima un objeto actualizado que se ha eliminado de todas las demás réplicas, o si la replicación de dichos objetos es obstruido. La configuración predeterminada es diferente en los controladores de dominio que ejecutan Windows 2000 Server con SP3 y Windows Server 2003.

Consistencia estricta de replicación

Para evitar problemas con la reanimación de objetos que se han eliminado, un controlador de dominio que ejecuta Windows Server 2003 en un bosque de Windows Server 2003 recién creado (no actualizado) bloquea la replicación entrante de forma predeterminada cuando recibe una actualización de un objeto que no tiene .

Nota • La replicación de Active Directory utiliza el seguimiento de actualizaciones para diferenciar entre replicar un objeto recién creado y actualizar un atributo para un objeto existente. La replicación de un objeto persistente es un intento de actualizar un atributo o atributos de un objeto que el controlador de dominio de destino no puede actualizar porque el objeto no existe.

La replicación se detiene en la partición de directorio para el objeto hasta que el objeto persistente se elimine del controlador de dominio de origen o se desactive la configuración de coherencia de replicación estricta.

Cuando ServerB le dice al ServidorA: "Hola, se han realizado algunas actualizaciones al objeto A existente". Entonces el ServidorA dice: "¿Espera qué? Ni siquiera tengo el objeto A en absoluto. ¡Envíame el objeto completo!" Si no hay consistencia estricta. Si la consistencia es estricta, ServerA dice: "¿Espera qué? ¿Cómo espera que actualice un objeto que no existe? ¡Vaya doblado!"

Para saber si tiene objetos persistentes en un controlador de dominio:

repadmin /removelingeringobjects ServerName ServerGUID DirectoryPartition /advisory_mode 

ServerGUID es la buena referencia DC conocida. Sé que ya lo sabes ... y cómo escribir la línea anterior para ejecutarla en todos los DC ... ( foreach ($DC In $(Get-ADDomain).ReplicaDirectoryServers) { }) ...

Necesita una buena fuente DC para comparar, en resumen. Si no tiene una buena fuente DC conocida o no la conoce, solo tiene que elegir una. Debería ser un GC escribible, por supuesto. Es relativo: si todos los controladores de dominio están de acuerdo en la existencia de un objeto y los atributos de ese objeto ... entonces no es un objeto persistente.

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

Eso es volver a sincronizar esa partición de directorio de cada GC en el bosque con la fuente buena conocida que debe especificar como GUID.

Luego, una vez que tenga todos sus controladores de dominio una vez más, todos de acuerdo, y la replicación sea feliz ... entonces vaya y comience a cambiar con una consistencia estricta en todos ellos.

Editar: Esta es la línea de partido de Microsoft sobre el tema, y ​​lo que probablemente te dirán si los llamas.

Finalmente, esto puede ser más difícil de solucionar de lo que vale a menos que te esté causando problemas. Odio decirlo, pero AD todavía puede funcionar normalmente con objetos persistentes.

Ryan Ries
fuente
4

El principio general en un caso en el que no puede identificar un DC limpio es el siguiente:

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

Este proceso se describe aquí: http://blogs.technet.com/b/glennl/archive/2007/07/26/clean-that-active-directory-forest-of-lingering-objects.aspx

Sin embargo, eche un vistazo a ReplDiag . Automatiza el proceso al ejecutarse repadminpara usted contra todas las combinaciones de DC de origen y destino. Luego sigue /advisory_onlypara verificar si hay más objetos persistentes.

cuello largo
fuente
Eso sigue siendo 14,400 interacciones por las que esto se ejecutará, durante el cual se pueden replicar objetos persistentes adicionales en todo el directorio. ¿Se recomienda habilitar + estricto primero para que la replicación se rompa para evitar esto? Definitivamente, 14,400 iteraciones tomarán el tiempo suficiente en un directorio de este tamaño para permitir que tenga lugar una replicación más incorrecta.
MDMarra
¿Puedes paralelizarlo con algo?
Tom O'Connor
@ TomO'Connor Idea interesante. Eso debería ser posible con la comunicación remota de PowerShell. ¡Entonces podrías hacer que cada DC se ejecute repadminpor sí mismo, en PARALELO!
cuello largo
77
@MDMarra Si fue rápido y fácil limpiar un dominio de 120-DC que se extiende por todo el mundo y ha estado en funcionamiento desde Win2k y se actualizó en varias versiones desde entonces ... entonces la compañía solo conseguiría que su conserje lo hiciera ... ;)
Ryan Ries
1
Me doy cuenta de que tienes un billón de DC, pero ¿cuántos de ellos son realmente utilizados por los administradores para hacer cambios? Puede comenzar haciendo esta limpieza solo con esos DC y DC en esos sitios, y luego establecer estrictamente esos DC. El continuar con los demás. Eso debería minimizar cualquier posible problema
longneck