Como remover corretamente objetos remanescentes quando -strict foi definido em um grande número de controladores de domínio por um longo tempo?

16

Recentemente, eu estava em um ambiente em que havia 120 controladores de domínio em mais de 100 sites em todo o mundo. Esse domínio começou na era do Windows 2000 e foi atualizado com o tempo, portanto, a consistência estrita da replicação nunca foi definida como o 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 em conflito por causa disso.

Usar repadmin /removelingeringobjectsrequer saber duas coisas:

  1. Quais DCs têm objetos remanescentes no banco de dados

  2. Um controlador de domínio que não possui objetos remanescentes para usá-lo como um controlador de referência.

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

Portanto, minha pergunta é a seguinte: em um ambiente tão grande, onde eu não teria idéia de quais controladores de domínio têm objetos remanescentes e quais não, como posso identificar um bom controlador de referência para repadmin /removelingeringobjectsusar e como garantir que todos os mais de 120 Os controladores de domínio estão limpos de objetos remanescentes antes de impor uma consistência estrita de replicação e interromper a replicação? Ou é apenas mais fácil ativar o modo estrito e assistir repadmin /replsumpara ver o que quebra e lidar com isso?

MDMarra
fonte

Respostas:

11

Isso levará algum tempo para consertar.

Para parar toda a replicação, execute:

repadmin /options +DISABLE_OUTBOUND_REPL

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

Repadmin determina que é um objeto remanescente se o objeto existir no ServerA, mas não no ServerB, onde ServerB é o controlador de domínio de referência. A diferença entre replicar objetos recém-criados e replicar atualizações para objetos já existentes é a chave. Replicar objetos criados recentemente = bom. Replicar atualizações para objetos já existentes = bom. Replicar atualizações em objetos que não existem no destino DC = incorreto.

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

No excelente artigo " Como o modelo de replicação do Active Directory funciona ":

Configuração de consistência de replicação

Se os atributos em um objeto remanescente nunca mudarem, o objeto nunca será considerado para replicação. No entanto, se um atributo for alterado, o atributo será considerado para replicação de saída. Como o controlador de domínio de destino não mantém o objeto para o atributo que está sendo replicado, uma atualização não pode ser executada. Como essa condição é resolvida depende da configuração de consistência da replicação no controlador de domínio.

Uma configuração de registro em controladores de domínio que executam o Windows Server 2003 ou o Windows 2000 Server com SP3 fornece um valor de consistência que determina se um controlador de domínio replica e reanima um objeto atualizado que foi excluído de todas as outras réplicas ou se a replicação desses objetos é bloqueado. As configurações padrão são diferentes nos controladores de domínio que executam o Windows 2000 Server com SP3 e Windows Server 2003.

Consistência estrita de replicação

Para evitar problemas com a reanimação de objetos que foram excluídos, um controlador de domínio executando o Windows Server 2003 em uma floresta do Windows Server 2003 recém-criada (não atualizada) bloqueia a replicação de entrada por padrão quando recebe uma atualização para um objeto que não possui. .

Nota • A replicação do Active Directory usa o rastreamento de atualização para diferenciar entre replicar um objeto recém-criado e atualizar um atributo para um objeto existente. A replicação de um objeto remanescente é uma tentativa de atualizar um atributo ou atributos de um objeto que o controlador de domínio de destino não pode atualizar porque o objeto não existe.

A replicação é interrompida na partição de diretório do objeto até que o objeto remanescente seja removido do controlador de domínio de origem ou a configuração estrita de consistência de replicação seja desabilitada.

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

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

repadmin /removelingeringobjects ServerName ServerGUID DirectoryPartition /advisory_mode 

ServerGUID é o conhecido DC de referência válida. Eu sei que você já sabe disso ... e como fazer o script da linha acima para executá-la em todos os controladores de domínio ... ( foreach ($DC In $(Get-ADDomain).ReplicaDirectoryServers) { }) ...

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

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

Isso está sincronizando novamente a partição de diretório de cada GC na floresta com a fonte válida conhecida que você precisa especificar como GUID.

Depois que você tiver todos os seus controladores de domínio mais uma vez de acordo, e a replicação for feliz ... você começará a lançar uma rigorosa consistência em todos eles.

Edit: Esta é a linha da Microsoft sobre o assunto, e o que eles provavelmente vão conversar com você, se você ligar para eles.

Finalmente, pode ser mais difícil corrigir o problema do que vale, a menos que esteja causando problemas. Detesto dizer isso, mas o AD ainda pode funcionar normalmente com objetos remanescentes.

Ryan Ries
fonte
4

O princípio geral em um caso em que você não pode identificar um CD limpo é 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

Esse processo é descrito aqui: http://blogs.technet.com/b/glennl/archive/2007/07/26/clean-that-active-directory-forest-of-lingering-objects.aspx

No entanto, dê uma olhada no ReplDiag . Ele automatiza o processo, executando repadminpara você contra todas as combinações de DCs de origem e destino. Em seguida, segue com /advisory_onlypara verificar se há outros objetos remanescentes.

pescoço longo
fonte
Ainda são 14.400 interações que serão executadas, durante esse período, objetos remanescentes adicionais podem ser replicados em todo o diretório. É recomendável ativar primeiro + estrito para que a replicação seja interrompida para evitar isso? 14.400 iterações definitivamente levarão tempo suficiente em um diretório desse tamanho para permitir que ocorra uma replicação incorreta.
precisa saber é o seguinte
Você pode paralelizar isso com alguma coisa?
Tom O'Connor
@ TomO'Connor Ideia interessante. Isso deve ser possível com o remota do PowerShell. Então você pode fazer com que cada CD corra repadminsozinho, em PARALELO !!!
longneck
7
@MDMarra Se fosse rápido e fácil limpar um domínio de 120 DC que se estende por todo o mundo e existe desde o Win2k e foi atualizado em várias versões desde então ... então a empresa apenas solicitou ao zelador que o fizesse ... ;)
Ryan Ries
11
Sei que você tem um bilhão de controladores de domínio, mas quantos deles são realmente usados ​​pelos administradores para fazer alterações? Você pode começar fazendo essa limpeza apenas com os controladores de domínio e os controladores de domínio nesses sites e depois definir rigorosamente esses controladores de domínio. O continuar com os outros. Isso deve minimizar eventuais problemas
longneck