Como remover corretamente objetos remanescentes quando o tempo -strict for definido em um grande número de DCs por um longo tempo?

16

Eu estive recentemente em um ambiente em que havia 120 controladores de domínio em mais de 100 sites em todo o mundo. Este domínio começou na era Windows 2000 e foi atualizado ao longo do tempo, então consistência de replicação restrita nunca foi definida como padrão para novos DCs e nunca foi ativada em nenhum DC. Existem objetos remanescentes no diretório e você vê regularmente um número decente de objetos conflitantes por causa disso.

Usar repadmin /removelingeringobjects exige saber duas coisas:

  1. Quais DC (s) têm objetos remanescentes no banco de dados

  2. Um controlador de domínio que não tenha objetos remanescentes para usar como um DC de referência.

Obviamente, no futuro, esse ambiente deve ser configurado para que todos os novos DCs tenham consistência de replicação estrita imposta e repadmin /options * +strict deve ser executado para fazer com que todos os DCs atuais usem consistência de replicação rígida, mas isso interromperá a replicação agora sem limpar os objetos .

Então, minha pergunta é: Em um ambiente tão grande, onde eu não teria idéia de quais DCs têm objetos remanescentes e quais não, como posso identificar uma boa referência DC para repadmin /removelingeringobjects usar, e como posso Eu garanto que todos os 120+ DCs estão limpos de objetos remanescentes antes de impor consistência de replicação rígida e quebrar a replicação? Ou é mais fácil ativar o modo estrito e assistir repadmin /replsum para ver o que acontece e lidar com isso?

    
por MDMarra 08.08.2013 / 16:23

2 respostas

11

Isso levará algum tempo para corrigir.

Para interromper toda a replicação, execute:

repadmin /options +DISABLE_OUTBOUND_REPL

Em todos os DCs. Lembre-se de que a configuração acima não impede ações de replicação manual, como um admin (você) executando repadmin /syncall /APed , etc. Mas isso é bom porque permite que todos os seus DCs sejam totalmente sincronizados antes de reativar a replicação regular.

O Repadmin determina que é um objeto persistente se o objeto existir no Servidor A, mas não no Servidor B, onde o ServidorB é o DC de referência. A diferença entre replicar objetos recém-criados e replicar atualizações para objetos já existentes é a chave. Replicando objetos recém-criados = bom. Replicação de atualizações para objetos já existentes = bom. Replicação de atualizações para objetos que não existem no destino DC = ruim.

Você só precisa ensaboar, enxaguar, repetir até que todos os DCs combinem com o seu único CD de referência. Em seguida, ative a consistência estrita em todos os lugares e reative a replicação. Sim, você corre o risco de excluir objetos legítimos que foram criados em outros DCs remotos que não foram replicados para o DC de referência.

Do ótimo " Como funciona o modelo de replicação do Active Directory "artigo:

Replication Consistency Setting

If the attributes on a lingering object never change, the object is never considered for replication. However, if an attribute changes, the attribute is considered for outbound replication. Because the destination domain controller does not hold the object for the attribute that is being replicated, an update cannot be performed. How this condition is resolved depends on the replication consistency setting on the domain controller.

A registry setting on domain controllers that are running Windows Server 2003 or Windows 2000 Server with SP3 provides a consistency value that determines whether a domain controller replicates and reanimates an updated object that has been deleted from all other replicas, or whether replication of such objects is blocked. The default settings are different on domain controllers that are running Windows 2000 Server with SP3 and Windows Server 2003.

Strict Replication Consistency

To avoid problems with reanimating objects that have been deleted, a domain controller that is running Windows Server 2003 in a newly created (not upgraded) Windows Server 2003 forest blocks inbound replication by default when it receives an update to an object that it does not have.

Note • Active Directory replication uses update tracking to differentiate between replicating a newly created object and updating an attribute for an existing object. Replication of a lingering object is an attempt to update an attribute or attributes of an object that the destination domain controller cannot update because the object does not exist.

Replication is halted in the directory partition for the object until the lingering object is removed from the source domain controller or the strict replication consistency setting is disabled.

Quando ServerB diz ao ServerA: "Ei, algumas atualizações foram feitas para o objeto existente." Então ServerA diz: "Espere o quê? Eu nem sequer tenho o objeto A. Envie-me o objeto inteiro!" Se não há consistência estrita. Se consistência estrita, ServerA diz: "Espere o que? Como você espera que eu atualize um objeto que não existe? Vá se curvar!"

Para descobrir se você tem objetos remanescentes em um controlador de domínio:

repadmin /removelingeringobjects ServerName ServerGUID DirectoryPartition /advisory_mode 

ServerGUID é a boa referência DC conhecida. Eu sei que você já sabe disso ... e como fazer o script da linha acima para executá-lo em todos os DCs ... ( foreach ($DC In $(Get-ADDomain).ReplicaDirectoryServers) { } ) ...

Você precisa de uma boa fonte DC para comparar com a linha inferior. Se você não tem uma DC de boa fonte conhecida ou não sabe, basta escolher uma. Deve ser um GC gravável, é claro. É relativo - se todos os controladores de domínio concordarem com a existência de um objeto e os atributos desse objeto ... então não é um objeto persistente.

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

Isso é ressincronizar essa partição de diretório de cada GC na floresta com a fonte boa conhecida que você precisa especificar como o GUID.

Então, depois que você tiver todos os seus controladores de domínio novamente em acordo, e a replicação for feliz ... então você começa a usar a consistência estrita em todos eles.

Editar: Este é a linha do partido da Microsoft no questão, e o que eles provavelmente vão falar com você através de você para chamá-los.

Por fim, isso pode ser mais difícil de consertar do que valer a pena, a menos que esteja causando problemas. Eu odeio dizer isso, mas o AD ainda pode funcionar normalmente com objetos remanescentes.

    
por 08.08.2013 / 17:16
4

O princípio geral em um caso em que você não consegue identificar uma CD limpa é o seguinte:

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 processo é descrito aqui: link

No entanto, dê uma olhada em ReplDiag . Ele automatiza o processo executando repadmin para você contra todas as combinações de DCs de origem e de destino. Em seguida, ele segue com /advisory_only para verificar se há mais objetos remanescentes.

    
por 08.08.2013 / 16:58