-Strict uzun süre çok sayıda DC'de ayarlandığında kalan nesneleri nasıl düzgün bir şekilde kaldırabilirim?


16

Son zamanlarda dünya çapında 100'den fazla tesiste 120 etki alanı denetleyicisinin bulunduğu bir ortamdaydım. Bu etki alanı Windows 2000 döneminde başladı ve zamanla yükseltildi, bu nedenle katı çoğaltma tutarlılığı hiçbir zaman yeni DC'ler için varsayılan olarak ayarlanmadı ve hiçbir DC'de hiçbir zaman etkinleştirilmedi. Dizinde kalan nesneler var ve bu nedenle düzenli olarak iyi sayıda çakışan nesne görüyorsunuz.

Kullanmak repadmin /removelingeringobjectsiçin iki şey bilmek gerekir:

  1. Hangi DC (ler) in veritabanında kalan nesneleri var

  2. Referans DC olarak kullanmak için üzerinde kalıcı nesne olmayan bir DC.

Açıkçası, gelecekte bu ortam, tüm yeni DC'lerin sıkı çoğaltma tutarlılığı uygulanacak ve repadmin /options * +stricttüm mevcut DC'lerin sıkı çoğaltma tutarlılığı kullanmasını sağlamak için çalıştırılmalıdır, ancak bu, nesneleri temizlemeden çoğaltmayı bozacaktır .

Yani, sorum şu: Hangi DC'lerin hangi nesnelere sahip olduğunu ve hangilerinin olmadığını bilmiyorum, repadmin /removelingeringobjectskullanmak için iyi bir referans DC'yi nasıl belirleyebilirim ve tüm 120+ DC'ler, sıkı çoğaltma tutarlılığı uygulamadan ve çoğaltmayı bozmadan önce kalan nesneleri temizliyor mu? Ya da, katı modu açmak ve repadmin /replsumneyin kırıldığını görmek ve onunla başa çıkmak için izlemek daha mı kolay ?

Yanıtlar:


11

Bunu düzeltmek biraz zaman alacaktır.

Tüm çoğaltmayı durdurmak için şunu çalıştırın:

repadmin /options +DISABLE_OUTBOUND_REPL

Tüm DC'lerde. Yukarıdaki ayarın, yönetici (siz) çalışan repadmin /syncall /APedvb. Gibi manuel çoğaltma işlemlerini engellemediğini unutmayın . Ancak bu iyi bir şeydir, çünkü düzenli çoğaltmayı yeniden etkinleştirmeden önce tüm DC'lerinizi tamamen senkronize etmenizi sağlar.

Repadmin, nesne ServerA'da var, ancak ServerB'de bulunmuyorsa, bunun kalıcı bir nesne olduğunu belirler; burada ServerB, referans DC'dir. Yeni oluşturulan nesneleri çoğaltmak ve varolan nesnelere güncellemeleri çoğaltmak arasındaki fark anahtardır. Yeni oluşturulan nesneleri çoğaltma = iyi. Mevcut nesnelere güncellemeleri çoğaltma = iyi. Hedefte var olmayan nesnelere yapılan güncelleştirmeleri çoğaltma DC = kötü.

Tüm DC'ler iyi bir referans DC'nizle eşleşene kadar sadece köpürtmek, durulamak, tekrarlamanız gerekir. Ardından, her yerde katı tutarlılığı açın, ardından çoğaltmayı yeniden etkinleştirin. Evet, referans DC'nize çoğaltılmamış diğer uzak DC'lerde oluşturulan meşru nesneleri silme riskiniz vardır.

" Active Directory Çoğaltma Modeli Nasıl Çalışır " makalesinden:

Çoğaltma Tutarlılığı Ayarı

Kalan bir nesnenin nitelikleri hiçbir zaman değişmezse, nesne asla çoğaltma için dikkate alınmaz. Ancak, bir özellik değişirse, bu özellik giden çoğaltma için dikkate alınır. Hedef etki alanı denetleyicisi çoğaltılan özniteliğin nesnesini tutmadığından, bir güncelleştirme gerçekleştirilemez. Bu koşulun nasıl çözüleceği, etki alanı denetleyicisindeki çoğaltma tutarlılığı ayarına bağlıdır.

Windows Server 2003 veya Windows 2000 Server SP3 çalıştıran etki alanı denetleyicilerindeki bir kayıt defteri ayarı, etki alanı denetleyicisinin tüm diğer eşlemelerden silinen güncelleştirilmiş bir nesneyi çoğaltıp yeniden canlandırıp yeniden canlandırmayacağını veya bu tür nesnelerin çoğaltılmasının tekrarlanıp tekrarlanmayacağını belirleyen bir tutarlılık değeri sağlar. engelledi. Windows 2000 Server SP3 ve Windows Server 2003 çalıştıran etki alanı denetleyicilerinde varsayılan ayarlar farklıdır.

Sıkı Çoğaltma Tutarlılığı

Silinmiş nesnelerin yeniden canlandırılmasıyla ilgili sorunları önlemek için, yeni oluşturulmuş (yükseltilmemiş) Windows Server 2003 ormanında Windows Server 2003 çalıştıran bir etki alanı denetleyicisi, sahip olmadığı bir nesneye yönelik bir güncelleştirme aldığında varsayılan olarak gelen çoğaltmayı engeller .

Not • Active Directory çoğaltması, yeni oluşturulan bir nesneyi çoğaltma ile varolan bir nesnenin özniteliğini güncelleme arasında ayrım yapmak için güncelleme izlemeyi kullanır. Kalan bir nesnenin çoğaltılması, nesne olmadığından, hedef etki alanı denetleyicisinin güncelleyemediği bir nesnenin özniteliğini veya özniteliklerini güncelleme girişimidir.

Yinelenen nesne, kaynak etki alanı denetleyicisinden kaldırılana veya katı çoğaltma tutarlılığı ayarı devre dışı bırakılana kadar, nesnenin dizin bölümünde çoğaltma durdurulur.

ServerB, ServerA: "Hey, varolan objectA için bazı güncelleştirmeler yapıldı." Sonra ServerA diyor ki: "Bekle? Hiç objectA bile yok. Bana tüm nesneyi gönder!" Eğer katı bir tutarlılık yoksa . Sıkı bir tutarlılık varsa, ServerA şöyle diyor: "Ne bekle? Varolmayan bir nesneyi güncellememi nasıl bekliyorsun? Git git!"

Bir etki alanı denetleyicisinde kalan nesnelerin olup olmadığını bulmak için:

repadmin /removelingeringobjects ServerName ServerGUID DirectoryPartition /advisory_mode 

ServerGUID bilinen iyi referans DC'dir. Bunu zaten bildiğinizi biliyorum ... ve tüm DC'lerde çalıştırmak için yukarıdaki satırı nasıl yazacağınız ... ( foreach ($DC In $(Get-ADDomain).ReplicaDirectoryServers) { }) ...

Karşılaştırma yapmak için iyi bir DC kaynağına ihtiyacınız var. İyi bilinen bir DC kaynağınız yoksa veya bilmiyorsanız, sadece bir tane seçmeniz gerekir. Elbette yazılabilir bir GC olmalıdır. Göreceli - tüm etki alanı denetleyicileri bir nesnenin varlığını ve bu nesnenin niteliklerini kabul ederse ... o zaman kalıcı bir nesne değildir.

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

Bu, ormandaki her GC'nin dizin bölümünü GUID olarak belirtmeniz gereken bilinen iyi bir kaynakla yeniden senkronize eder.

Sonra tüm etki alanı denetleyicilerinizi bir kez daha kabul ettikten ve çoğaltma mutlu olduktan sonra ... o zaman git ve hepsine sıkı bir tutarlılık göstermeye başlıyorsunuz.

Düzenleme: Bu , Microsoft'un bu konudaki parti hattıdır ve muhtemelen sizi konuşacaklardı.

Son olarak, bu sorunlara neden olmadıkça düzeltmek için değerinden daha fazla sorun olabilir. Bunu söylemekten nefret ediyorum, ama AD hala içinde kalan nesnelerle normal şekilde çalışabilir.


4

Temiz bir DC'yi tanımlayamadığınız bir durumda genel prensip şöyledir:

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

Bu işlem burada açıklanmıştır: http://blogs.technet.com/b/glennl/archive/2007/07/26/clean-that-active-directory-forest-of-lingering-objects.aspx

Ancak ReplDiag'a bir göz atın . repadminTüm kaynak ve hedef DC kombinasyonlarına karşı çalıştırarak işlemi otomatik hale getirir . Daha sonra /advisory_onlykalan nesneleri kontrol etmek için bunu takip eder .


Bu hala geçecek olan 14.400 bütünleşmedir, bu süre zarfında dizin boyunca ek kalan nesneler çoğaltılabilir. Çoğaltmanın bundan kaçınması için önce + katı öğelerin etkinleştirilmesi önerilir mi? 14.400 yineleme, bu boyuttaki bir dizinde daha kötü çoğaltmanın gerçekleşmesine izin verecek kadar uzun sürecektir.
MDMarra

Bir şeyle paralelleştirebilir misiniz?
Tom O'Connor

@ TomO'Connor İlginç bir fikir. PowerShell uzaktan kumanda ile bu mümkün olmalıdır. Sonra her DC repadminPARALLEL kendisi için çalıştırmak alabilir !!!
longneck

7
@MDMarra Dünyayı kapsayan ve Win2k'den bu yana yerinde olan ve o zamandan beri çeşitli sürümlerde yükseltilen 120-DC etki alanını temizlemek hızlı ve kolay olsaydı ... o zaman şirket sadece hademe alacaktı ... ;)
Ryan Ries

1
Bazilyon DC'lerinizin olduğunu anlıyorum, ancak bunların kaç tanesi yöneticiler tarafından değişiklik yapmak için kullanılıyor? Bu temizlemeyi yalnızca bu DC'lerle ve bu sitelerdeki DC'lerle yaparak başlayabilir ve daha sonra bu DC'lere katılabilirsiniz. Diğerleriyle devam edin. Bu olası sorunları en aza indirmelidir
longneck
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.