FSMO Rolleri: Görüntüleme, Taşıma ve Seize
Active Directory'deki beş FSMO rolünün görevlerini öğreniyor, rolleri netdom ve PowerShell ile görüntülüyor, DC01'den DC02'ye taşıyor ve DC çöktüğünde seize işlemini uyguluyoruz.
Önceki yazıda DC02'yi firma.local domain'ine ikinci domain controller olarak eklemiş ve replikasyonu doğrulamıştık. Active Directory çoklu yöneticili (multi-master) bir yapıdadır; yani bir kullanıcıyı DC01'de de DC02'de de oluşturabilirsiniz. Ancak bazı işlemler çakışmaya tahammül edemez ve yalnızca tek bir DC tarafından yapılmalıdır. Bu görevlere FSMO (Flexible Single Master Operations) rolleri denir. Bu yazıda rolleri tanıyacak, görüntüleyecek, taşıyacak ve en kötü senaryoda seize edeceğiz.
Beş FSMO Rolü
Rollerin ikisi forest genelinde, üçü her domain için birer tanedir:
- Schema Master (forest): AD şemasında değişiklik yapılabilen tek DC'dir. Exchange kurulumu veya forest seviyesi yükseltme gibi şema genişletmelerinde gerekir.
- Domain Naming Master (forest): Forest'a domain eklenmesini ve kaldırılmasını yönetir.
- RID Master (domain): Her DC'ye nesne oluştururken kullanacağı 500'lük RID (Relative ID) havuzlarını dağıtır. Erişilemezse DC'ler havuzlarını bitirdiğinde yeni kullanıcı ve grup oluşturulamaz.
- PDC Emulator (domain): En kritik roldür. Parola değişikliklerini öncelikli alır, hesap kilitleme işlemlerini yönetir, domain'in zaman kaynağıdır ve GPO düzenlemelerinde varsayılan olarak kullanılır.
- Infrastructure Master (domain): Başka domain'lerdeki nesnelere yapılan referansları günceller. Tek domain'li ortamlarda veya tüm DC'ler Global Catalog ise pratikte etkisi yoktur.
Tek domain'li küçük bir ortamda beş rolün de aynı DC'de durması normaldir ve önerilen düzendir. Asıl mesele, rollerin hangi DC'de olduğunu bilmek ve DC'yi kapatmadan önce rolleri taşımaktır.
FSMO Rollerini Görüntülemek
En hızlı yöntem netdom komutudur:
netdom query fsmo
PowerShell ile forest ve domain rollerini ayrı ayrı görebilirsiniz:
Get-ADForest | Select-Object SchemaMaster, DomainNamingMaster
Get-ADDomain | Select-Object PDCEmulator, RIDMaster, InfrastructureMaster
Bir DC'nin üzerindeki rolleri tek satırda görmek için:
Get-ADDomainController -Filter * | Select-Object Name, OperationMasterRoles
Kurulumdan sonra beş rolün de DC01.firma.local üzerinde olduğunu görmelisiniz, çünkü forest'taki ilk DC tüm rolleri üstlenir.
Rolleri Taşımak (Transfer)
Transfer, rolü elinde tutan DC çalışır durumdayken yapılan kontrollü devirdir. İki DC de çevrimiçidir, rol kayıpsız ve güvenle aktarılır. DC01'i bakıma alacağınızı ya da emekliye ayıracağınızı düşünelim. Önce replikasyonun sağlıklı olduğundan emin olun:
repadmin /replsummary
Ardından beş rolü DC02'ye taşıyın. Schema Master için Schema Admins, Domain Naming Master için Enterprise Admins üyeliği gerekir:
Move-ADDirectoryServerOperationMasterRole -Identity "DC02" `
-OperationMasterRole SchemaMaster, DomainNamingMaster, PDCEmulator, RIDMaster, InfrastructureMaster
Komut her rol için onay ister. Onay istemeden çalıştırmak için -Confirm:$false ekleyebilirsiniz. Rolleri sayısal değerleriyle de belirtebilirsiniz: 0 PDCEmulator, 1 RIDMaster, 2 InfrastructureMaster, 3 SchemaMaster, 4 DomainNamingMaster.
# Yalnizca PDC Emulator ve RID Master'i tasimak
Move-ADDirectoryServerOperationMasterRole -Identity "DC02" -OperationMasterRole 0, 1 -Confirm:$false
Taşıma sonrası netdom query fsmo ile sonucu doğrulayın.
PDC Emulator ve Zaman Ayarı
PDC Emulator'ı taşıdığınızda zaman kaynağını da taşımanız gerekir. Domain'deki tüm bilgisayarlar zamanı hiyerarşi içinde alır, en üstte PDC Emulator vardır ve o da dış bir NTP sunucusuna bakmalıdır. Yeni PDC Emulator olan DC02'de:
w32tm /config /manualpeerlist:"0.tr.pool.ntp.org 1.tr.pool.ntp.org" /syncfromflags:manual /reliable:yes /update
net stop w32time && net start w32time
w32tm /resync
w32tm /query /status
Artık PDC olmayan DC01'i domain hiyerarşisinden zaman alacak şekilde geri döndürün:
w32tm /config /syncfromflags:domhier /reliable:no /update
net stop w32time && net start w32time
w32tm /query /source
DC01'in kaynağı olarak DC02 görünmelidir. Bu adımı atlarsanız iki DC birbirinden farklı zaman kaynaklarına bakar ve ilerleyen günlerde Kerberos hataları başlar.
Rolleri Seize Etmek
Seize, rolü elinde tutan DC kalıcı olarak kaybedildiğinde, örneğin donanımı tamamen bozulduğunda yapılan zorla devralmadır. Eski DC'nin onayı alınmaz; yeni DC rolü kendisine yazar.
Seize kararını vermeden önce şunları bilin:
- Geri dönüş yoktur: Rolü seize edilen DC bir daha asla ağa bağlanmamalıdır. Özellikle eski RID Master geri gelirse aynı RID'lerin iki kez dağıtılması ve SID çakışması yaşanabilir.
- Acele etmeyin: PDC Emulator dışındaki rollerin birkaç saat erişilemez olması çoğu zaman fark edilmez. DC'nin onarılabileceği ihtimali varsa bekleyin.
- Son değişiklikler kaybolabilir: Çöken DC'de henüz replike edilmemiş değişiklikler kaybolur.
PowerShell ile seize işlemi, aynı komuta -Force eklenerek yapılır. Komut önce transfer dener, eski DC'ye ulaşamazsa rolü seize eder:
Move-ADDirectoryServerOperationMasterRole -Identity "DC02" `
-OperationMasterRole SchemaMaster, DomainNamingMaster, PDCEmulator, RIDMaster, InfrastructureMaster `
-Force -Confirm:$false
Aynı işlemi klasik ntdsutil ile de yapabilirsiniz. DC02 üzerinde:
ntdsutil
roles
connections
connect to server DC02
quit
seize schema master
seize naming master
seize rid master
seize pdc
seize infrastructure master
quit
quit
Her seize komutu için bir onay penceresi açılır. Kontrollü taşıma için aynı menüde seize yerine transfer kullanılır.
Seize işleminden sonra çöken DC'nin AD'deki kayıtlarını, yani metadata'sını temizlemeniz gerekir. Bu konuyu serinin son yazısında ayrıntılı olarak ele alacağız.
Rollerin Sağlığını Kontrol Etmek
Rollerin bilindiğini ve erişilebilir olduğunu doğrulamak için:
dcdiag /test:knowsofroleholders /v
dcdiag /test:fsmocheck
dcdiag /test:ridmanager /v
ridmanager testi, mevcut RID havuzunu ve kalan RID miktarını gösterir.
Rolleri Nereye Yerleştirmeli?
Küçük ve orta ölçekli ortamlarda en basit ve önerilen yaklaşım, beş rolün tamamını tek bir güçlü ve iyi izlenen DC'de tutmaktır. Rollerin hepsi aynı yerde olduğunda hangi DC'nin kritik olduğunu herkes bilir, bakım planlaması kolaylaşır ve sorun giderme sırasında "PDC hangisiydi?" sorusu ortadan kalkar.
Büyük ortamlarda ise şu ayrımları düşünebilirsiniz:
- PDC Emulator: En çok yük alan roldür. Kullanıcıların yoğun olduğu merkezi site'ta, en iyi donanıma sahip DC'de tutun.
- RID Master: PDC Emulator ile aynı DC'de durması önerilir; ikisi de domain seviyesinde sık kullanılır.
- Schema ve Domain Naming Master: Nadiren kullanılır. Forest root domain'deki bir DC'de, birlikte tutulabilir.
- RODC'ler: Salt okunur DC'ler hiçbir FSMO rolünü üstlenemez.
Hangi düzeni seçerseniz seçin, rollerin yerini ve taşıma tarihlerini dokümante edin. Bir felaket anında bu bilgiyi aramak zorunda kalmak istemezsiniz.
Sık Karşılaşılan Hatalar
- DC'yi kapatmadan önce rolleri taşımamak: Rolleri, DC'yi kaldırmadan önce
Move-ADDirectoryServerOperationMasterRoleile kontrollü olarak taşıyın. Sunucuyu demote etmeden doğrudan kapatıp silmek seize gerektirir. - Seize edilen DC'yi geri açmak: Ciddi tutarsızlıklara yol açar. Eski DC'yi diskini sıfırlamadan ağa bağlamayın.
- PDC taşındıktan sonra zamanı ayarlamamak: Saat kaymaları ve oturum açma hataları ortaya çıkar.
w32tm /query /sourceile her DC'yi kontrol edin. - "Access is denied" hatası: Schema Master için Schema Admins, Domain Naming Master için Enterprise Admins üyeliği gerekir.
- Replikasyon hatası varken taşıma yapmak: Önce
repadmin /replsummarytemiz olmalıdır, aksi halde yeni rol sahibinin verisi eksik kalır. - Infrastructure Master ile Global Catalog'u çok domain'li yapıda aynı DC'de tutmak: Tüm DC'ler GC değilse referans güncellemeleri yapılmaz. AD Recycle Bin açıksa her DC referansları kendisi güncellediği için bu kısıt ortadan kalkar.
Bir sonraki yazıda AD Sites and Services ile site, subnet ve site link yapılandırmasını yapacağız.