Replikacja – czyli podróż przez katalog tam i z powrotem Tomasz Onyszko Senior Consultant | Microsoft
O mnie ... … przy klawiaturze od dobrych 18 lat, z tego ostatnie 9 zawodowo … grafomańsko prowadzę blog W2K.PL (jak i angielską wersję na stronach DirTeam.Com) … udzielam się czasami na wss.pl (5.5k+ ) i grupach Usenet … w wolnych od powyższego chwilach pracuję w Microsoft Consulting Services jako Senior Consultant (Identity & Access Management) Speakers: Please use this slide as a master slide.
Agenda Anatomia DC Topologia replikacji Mechanika raplikacji Linked Value Replication (LVR) Urgent replication Replikacja haseł Speakers: This slide is ONLY for agenda. Use next slide to all presentations slides.
Anatomia DC
DC jaki jest każdy widzi ... FQDN ... czyli po prostu nazwa DNS: MTSLHFDC01.W2K.PL NTDS.DIT Kontekst domeny Partycje aplikacyjne DC GUID: objectGUID: 04b1beca-e875-4378-8fd2-59f7b98c13e8; Invocation ID: invocationId: 04b1beca-e875-4378-8fd2-59f7b98c13e8; Partycje katalogu: DN: DC=W2K, ...... DN:DC=Configuration, ....
Identyfikatory DC DC GUID: Wartość atrybutu objectGUID instancji obiektu NTDSDSA kontrolera Identyfikator rejestrowany w ramach _msdcs Rekord wymagany do poprawnej replikacji Używany w ramach Topologii replikacji generowanej przez KCC High-Watermark Vector (HVM) Niezmienny w okresie życia DC NTDS == Domain Information Tree (Table) NTDS.DIT Kontekst domeny Partycje aplikacyjne
Identyfikatory DC Invocation ID Wartość atrybut invocationID instancji obiektu NTDSDSA kontrolera Domyślnie taki sam jak DC GUID Zmieniany po: Odtworzeniu bazy danych DC (poprawnym !!!) Re-host partycji aplikacyjnej (+, -, +) Wymuszoniu przez wpis w rejestrze Poprzednie wartości przechowywane są w retiredReplDSASignatures NTDS == Domain Information Tree (Table) NTDS.DIT Kontekst domeny Partycje aplikacyjne
Naming Context (NC) Kontekst nazewniczy (NC) Partycja katalogu LDAP Partycje w ramach bazy danych DIT DIT == Directory Information Tree Wyznaczają granice replikacji danych Typy Domeny Konfiguracji Schemat Aplikacyjna NDNC == Non-Domain Naming Context Kontrolowany zakres replikacji Pokazać na szybko w LDP.EXE gdzie to wszystko się znajduje NTDS.DIT Kontekst domeny Partycje aplikacyjne
Topologia replikacji
Metoda replikacji Replikacja katalogu (Intra-site) == Notify & pull Zmiany wprowadzone na DC1 DC1 wysyła powiadomienie do partnerów replikacji (DC2) (notify) W ramach lokacji: Windows 2000: 5 minut (+ 30 sek) Windows 2003 i późniejsze: 15 sekund (+ 5 sek) DC2 żąda zmian (pull) DC1 wysyła zmiany do DC1 W przypadku replikacji Inter-site brak powiadmień (domyślnie) == Store & Forward Replikacja wg ustalonego harmonogramu NTDS == Domain Information Tree (Table)
Topologia replikacji Topologia replikacji generowana jest przez KCC \ ISTG KCC == Knowledge Consistancy Checker ISTG == Inter-Site Topology Generator Rola przydzielana per-site Domyślnie pierwszy DC w lokacji, chyba że: Zostanie zmieniony przez administratora: nTDSSiteSettings -> interSiteTopologyGenerator Nastąpi failover w wyniku braku oznak życia obecnego ISTG Topologia replikacji generowana w oparciu o obiekty lokacji (site), łączy (site links) i powiązanych z nimi kosztem (cost) NTDS == Domain Information Tree (Table)
Tworzona według kolejności GUID DC Topologia intra-site DC2 DC5 DC1 Powyżej 7 DC w ramach lokacji dodawane są dodatkowe obiekty połączeń (losowo) DC3 DC4 DC6 Tworzona według kolejności GUID DC
Change notification Replikacja inter-site domyślnie podlega harmonogramowi Możliwe jest włączenie powiadomień o zmianach: Atrybut options: Obiektu łącza (site link): 1 bit (0001) Obiektu połączenia (connection): 3 bit (0100) Wymaga wydajnego łącza WAN Efektywnie replikacja jak w ramach jednej lokacji NTDS == Domain Information Tree (Table)
Mechanika replikacji
Replikacja katalogu AD Multimaster Oparta na numerach sekwencyjnych USN Dotyczy Utworzenia \ zmian obiektów Poza atrybutami „non-replicated” Usunięcie obiektu Poprzez obiekty „tombstone” Poza obietami tymczasowymi Originating update Informacja o DC, na którym dokonana została zmiana Replicated update Wszystkie inne zmiany NTDS == Domain Information Tree (Table)
USN Update Sequence Number 64-bitowy numer Utrzymywany lokalnie dla każdego DC Przypisany do każdej wykonanej transakcji Niezależne od czasu Do czasu USN przypisane do obiektu usnCreated, usnChanged USN przypisane do atrybutu Lokalny USN, originating USN NTDS == Domain Information Tree (Table)
DB GUID == InvocationID Jak to działa? Dodanie nowego użytkownika: DC: DC 1 Lokalny USN: 1000 USN: 1000 usnCreated = 1000 usnChanged = 1000 Atrybut Wartość USN # Wersji Czas Originating DC GUID Originating USN Name Jan Kowalski 1000 1 <time> <DC1 DB GUID> Sn Kowalski givenName Jan samAccountName Jan.kowalski NTDS == Domain Information Tree (Table) DB GUID == InvocationID
DB GUID == InvocationID Jak to działa? Replikacja nowego użytkownika DC: DC2 Lokalny USN: 2500 USN: 2500 usnCreated = 2500 usnChanged = 2500 Atrybut Wartość USN # Wersji Czas Originating DC GUID Originating USN Name Jan Kowalski 2500 1 <time> <DC1 DB GUID> 1000 Sn Kowalski givenName Jan samAccountName Jan.kowalski NTDS == Domain Information Tree (Table) DB GUID == InvocationID
DB GUID == InvocationID Jak to działa? Zmiana atrybutu obiektu na DC2 USN: 2501 givenName: Marian givenName: Jan usnCreated = 2500 usnChanged = 2501 Atrybut Wartość USN # Wersji Czas Originating DC GUID Originating USN Name Jan Kowalski 2500 1 <time> <DC1 DB GUID> 1000 Sn Kowalski givenName Marian 2501 2 <DC2 DB GUID> samAccountName Jan.kowalski NTDS == Domain Information Tree (Table) DB GUID == InvocationID
DB GUID == InvocationID Jak to działa? USN: 1701 Replikacja zmiany z DC2 na DC1 givenName: Marian givenName: Jan givenName: Marian usnCreated = 1000 usnChanged = 1701 Atrybut Wartość USN # Wersji Czas Originating DC GUID Originating USN Name Jan Kowalski 1000 1 <time> <DC1 DB GUID> Sn Kowalski givenName Marian 1701 2 <DC2 DB GUID> 2501 samAccountName Jan.kowalski NTDS == Domain Information Tree (Table) DB GUID == InvocationID
High-Watermark vector Utrzymywany per-DC, dla każdej z partycji katalogu Zawiera informację o najwyższych numerach USN zreplikowanych od partnera replikacji Przechowywany w atrybucie repsFrom obiektu partycji katalogu DC1 USN: 1500 DC4 USN: 2350 DC InvocationID Highest known USN DC2 GUID 34565 DC4 GUID 2350 NTDS == Domain Information Tree (Table) repadmin /showrepl /verbose DC2 USN: 34565 DC3 USN: 15432
Up-to-dateness vector Utrzymywany per-DC, dla każdej partycji katalogu Zawiera informację o najwyższych numerach originating USN dla „wszystkich” DC Przechowywany w atrybucie replUpToDateVector obiektu partycji katalogu DC1 USN: 1000 DC4 USN: 1111 DC InvocationID Highest originating USN Timestamp DC2 GUID 2501 <UT> DC4 GUID 1111 DC3 GUID 12456 NTDS == Domain Information Tree (Table) repadmin /showutdvec DC2 USN: 2501 DC3 USN: 12456
Up-to-dateness vector Up-to-date vector: DC1 DC InvocationID Highest originating USN DC2 GUID 2501 DC4 GUID 1111 DC1 USN: 1001 DC1 USN: 1000 DC4 USN: 1111 Up-to-date vector: DC4 NTDS == Domain Information Tree (Table) DC InvocationID Highest originating USN DC1 GUID 1001 DC2 GUID 2501 DC3 GUID 12456 DC InvocationID Highest originating USN DC1 GUID 1000 DC3 GUID 12456 DC2 USN: 2501 DC3 USN: 12456
Metadane replikacji w praktyce
LVR
Replikacja wielowartości Jan Jan Borys Borys Tomek Tomek Tomek @ 2:14 Czarek @2:13 DC2 DC1 Replikacja danych + rozwiązanie konfliktu Replikacja wielowartości (na przykładzie grup): Użytkownik dodany do grupy na DC2 W tym samym czasie dodany zostaje inny użytkownik na DC1 Według standardowych reguł rozwiązywania konfliktów Zachowana zostaje ostatnia zmiana Zmiany z DC2 zostają utracone NTDS == Domain Information Tree (Table)
Linked Value Replication Jan Jan Borys Borys Tomek Czarek Tomek @ 2:14 Czarek @2:13 DC2 DC1 Tomek Replikacja danych Każda z wartości to osobna zmiana Czarek Replikacja wielowartości z użyciem LVR: Użytkownicy dodani na różnych DC w tym samym czasie Każda z wartości posiada własne metadane replikacji -> BRAK KONFLIKTU DANYCH Usuwa ograniczenie do 5 tys członków w grupie NTDS == Domain Information Tree (Table) repadmin /showvalue <DC> <object DN>
Linked Value Replication
Urgent replication
Urgent replication „Pilna” replikacja danych Wyzwalana w wypadku: Wywoływana przez SAM lub LSA, nigdy przez zmiany z użyciem LDAP Wyzwalana w wypadku: Zmiany hasła LSA Replikacji informacji o zablokowaniu konta (lockout) Zresetowaniu hasła użytkownika Wymuszenie wygaśnięcia hasła konta użytkownika Zmiana właściciela roli RID Master Zmiana wartości atrybutu userAccountControl Pilna oznacza: Wymuszenie natychmiastowe cykly replikacji w ramach lokacji Ustawienie flagi „urgent” dla powiadomienia o zmianach NTDS == Domain Information Tree (Table)
Kolejki replikacji
Replikacja haseł
Replikacja hasła Użytkownik zmienia hasło Zmiana hasła Bezpośrednie wywołanie RPC Replikacja danych katalogu DC1 PDC Użytkownik zmienia hasło Domyślnie hasło jest przekazywane do PDC Emulator -> bezpośrednie wywołanie RPC -> „best effort”, czyli nie ma gwarancji dostarczenia hasła do PDCE AvoidPDConWAN (rejestr) -> Standardowa replikacja danych NTDS == Domain Information Tree (Table)
PDC chaining Administrator resetuje hasło \ zmiana na innym DC Logowanie Zmiana hasła DC1 PDC Administrator resetuje hasło \ zmiana na innym DC Użytkownik loguje się -> błąd hasła DC przekazuje hasło do PDC Emulator -> Poprawnie zweryfikowane hasło PDC Emulator inicjuję replikację danych -> Replicate single object (repadmin.exe) Użytkownik może się zalogować NTDS == Domain Information Tree (Table)
Podsumowanie
Oceń moją sesję Ankieta dostępna na stronie www.mts2008.pl Dodatkowe komentarze mile widziane: E-mail: t.onyszko@w2k.pl Blog: http://www.w2k.pl Speakers: Please do not remove nor edit this slide! This is information about evaluation form.