Wednesday, November 21st, 2007...9:35 pm

Porównanie OpenLDAP i ADAM – polemika cz.2

Jump to Comments

… and now the conclusion.W poprzedniej notce rozpoczÄ…Å‚em krótkÄ… polemikÄ™ z dokumentem dotyczÄ…cym porównania OpenLDAP oraz ADAM jako platform serwera LDAP. Jako że artykuÅ‚ wyszedÅ‚ cokolwiek przydÅ‚ugi, postanowiÅ‚em go podzielić i oto część druga. Jeżeli nie czytaÅ‚eÅ› części pierwszej to sugerujÄ™ rozpoczÄ™cie lektury wÅ‚aÅ›nie od niej – ta notka jest kontynuacjÄ… bez dÅ‚ugiego wstÄ™pu, wiÄ™c może przydać siÄ™ krótkie wprowadzenie do tematu.

Zaczęłem … trzeba brnąć dalej.

Krótkie przypomnienie – w ramach serii notek próbujÄ™ przedstawić elementy i stwierdzenia dotyczÄ…ce technologii ADAM, które pojawiÅ‚y sie w dokumencie opublikowanym przez firmÄ™ Symas, zajmujÄ…cÄ… siÄ™ rozwijaniem i wsparciem platformy OpenLDAP.

W tej części dokończenie czyli co jeszcze przykuło moją uwagę podczas czytania tego dokumentu.

7/ Kontrola dostępu

W dokumencie Symas możemy przeczytać (s.18) następujące stwierdzenie:

(…) Users/groups from one ADAM naming context cannot be added to groups in another naming context. This means that an operations group created in o=company.com cannot be given administrative privileges to modify schema entries under CN=Schema,CN=Configuration,CN={GUID}.(…)

W zasadzie stwierdzenia sÄ… dwa:

  • Users/groups from one ADAM naming context cannot be added to groups in another naming context – które nie jest prawdziwe.
  • operations group created in o=company.com cannot be given administrative privileges to modify schema entries under CN=Schema,CN=Configuration,CN={GUID} – a to akurat jest prawdÄ….

Schizofrenia ADAM? Niekoniecznie, już tłumaczę. W ramach zestawu replik ADAM replikowane są zawsze dwie partycje schematu i konfiguracji oraz partycje aplikacyjne. Z tych ostatnich, nie każda partycja musi znajdować się na każdej instancji ADAM. W związku z tym, nadanie uprawnień do partycji schematu użytkownikowi z partycji aplikacyjnej, która nie jest dostępna w danej instancji, powodowałoby niespójność danych w ramach list ACL.

Prosty eksperyment (do wykonania w ramach pracy domowej dla czytelnika) szybko wykaże, że bez problemu można nadać uprawnienia grupie z partycji schematu do obiektów w ramach partycji aplikacyjnej. Co znaczy, że można nadawać uprawnienia pomiędzy kontekstami nazewniczymi (partycjami), jednak jest to ograniczone przez przyjęte zasady wymuszenia spójności informacji.

Można zadać pytanie – a dlaczego w Active Directory to dziaÅ‚a? Dlatego, że w Active Directory dodatkowo istnieje coÅ› takiego jak Global Catalog, który zawiera informacjÄ™ o wszystkich obietkach istniejÄ…cych w ramach lasu, dziÄ™ki czemu możliwe jest zawsze zweryfikowanie informacji o obiekcie pomiÄ™dzy poszczególnymi partycjami katalogu, nawet jeżeli dana partycja nie jest dostÄ™pna lokalnie w ramach danej instancji katalogu.

8/ Ograniczenia replikacji danych

W tej części dokumentu możemy wyróżnić trzy podstawowe obiekcje dotyczące replikacji danych pomiędzy instancjami ADAM (s.19):

  • (…)The complexity of these replication arrangements appears, based on the language used in the various technical documents, to be a reaction to slow and/or fragile networks. There are discussions of the use of SMTP protocols instead of RPC over such unreliable or slow links, for example. (…) – Replikacja dancych z użyciem SMTP ma za zadanie zapewnić replikacjÄ™ danych w scenariuszach z asynchronicznym dostÄ™pem pomiÄ™dzy systemami i może replikować tylko i wyÅ‚Ä…cznie dane partycji konfiugracji i schematu. To tak gwoli wyjaÅ›nienia. Nie wynika to ze wspomnianego “problemu z wydajnoÅ›ciÄ…” a z faktu zaadresowania scenariusza, w którym replikacja musi zachodzić pomiÄ™dzy serwerami, które niekoniecznie sÄ… równoczeÅ›nie podÅ‚Ä…czone do sieci. SwojÄ… drogÄ… nigdy nie widziaÅ‚em implementacji tego scenariusza, co nie oznacza że takowe nie istniejÄ….
  • (…) Multivalued attribute conflict resolution is essentially non-existent. (…) – Jak autorzy sami przyznajÄ…, w chwili obecnej OpenLDAP również nie zapewnia tej funkcjonalnoÅ›ci. Faktem jest, że tak to dziaÅ‚a. Niestety nic mi nie wiadomo o tym, aby zostaÅ‚o to zmienione w kolejnych wersjach . LVR pozwala na replikacjÄ™ pojedynczych wartoÅ›ci, ale tylko w przypadku atrybutów poÅ‚Ä…czonych.
  • I w nastÄ™pnym zdaniu (…) We conjecture that this replication is a symptom of the performance problems discussed elsewhere in this document (…) – hmmm … ja bym poÅ‚Ä…czyÅ‚ to bardziej z zapewnieniem ciÄ…gÅ‚oÅ›ci replikacj na wypadek awarii jednego z Å‚Ä…czy etc. KCC i topologia replikacji AD \ ADAM ma za zadanie wyznaczenie topologii replikacji i jej dynamicznÄ… modyfikacjÄ™ w reakcji na zmiany w sieci.

Do wspomnianych problemów z wydajnością replikacji trudno mi się odnieść, w całym dokumencie nie pojawia się źródło takiej informacji, a jest ona jedynie stwierdzeniem autorów na podstawie ich domysłów i założeń co do ADAM.

9/ Brakujące elementy układanki

Ostatnia część dokumentu poświęcona jest funkcjonalności, jaka dostępna jest w innych rozwiązaniach, a jakiej brakuje w ramach ADAM. Przyjrzyjmy się więc niektórym z przedstawionych w tej części zagadnień.

9.1/ Replikacja

W ramach tej części dokumentu, znajdujemy znowu stwierdzenie (s.22), że protokół replikacji danych używany do replikacji danych LDAP jest niezbyt wydajny i może powodować problemy w sieci. Jedyny dowód na to w dokumencie stanowi interpretacja przez autorów następującego fragmentu dokumentacji Microsoft:

(…) For example, data for an application might contain highly volatile information, causing high replication traffic that could strain network resources if it is stored in the NOS directory.(…)

Interpretacja tego fragmentu przez autora jest następująca:

(…)This clearly states a concern that AD and its replication is threatened by large numbers of updates and the load from replication.(…)

Moja prywatna interpretacja jest następująca: jeżeli w katalogu będziemy mieli 100 tys. obiektów, dla których będą następowały szybkie zmiany atrybutów, to po prostu wygeneruje to określony ruch sieciowy związany z replikacją. Wielkość tego ruchu zależeć będzie od wielkości danych zawartych w atrybutach + narzut, związanych z samym protokołem. Niezależnie od protokołu dane te trzeba przesłać i może to po prostu wygenerować duży ruch sieciowy.

Postaram siÄ™ jeszcze wrócić do tego tematu w osobnej notce – w tej chwili nie mogÄ™ znaleźć danych dotyczÄ…cych ruchu replikacji w Active Directory w Windows 2003 i późniejszym. DostÄ™pny jest artykuÅ‚ przedstawiajÄ…cy dane dla Windows 2000, jednak w przypadku Windows 2003 dużo siÄ™ zmieniÅ‚o, szczególnie w zakresie replikacji czÅ‚onkostwa w grupach Active Directory.

Nie udało mi się znaleźć takich danych dotyczących OpenLDAP, jeżeli ktoś zna link do artykułu lub prowadził tego typu testy z chęcią zapoznam się z ich wynikami.

9.2/ Zapewnienie wysokiej dostępności usługi (HA)

Tutaj szczerze się przyznam, że jestem trochę zdziwiony dlaczego Symas umieścił ten punkt na liście funkcjonalności, których brakuje w ADAM. W ramach opisu funkcjonalności OpenLDAP w tym zakresie czytamy (s.23):

(…) With mirrormode, a backup copy of the Master server’s database is maintained (using standard syncrepl replication) on a machine appropriately configured and managed to be ready to take over the Master Server’s workload. A software TCP/IP application load balancer/scheduler uses an application monitor to frequently verify that the Master Server is functioning properly. (…)

Usługa ADAM posiada wbudowany mechanizm replikacji danych pomiedzy wieloma serwerami wchodzącymi w skład zestawu konfiguracji. Każdy z tych serwerów posiada równoważną kopię katalogu i jest w stanie zarówno odpowiadać na zapytania jak i modyfikowac dane katalogu. W celu zapewnienia wysokiej dostępności usług ADAM stosuje się load balancing usługi na poziomie sieci poprzez usługę WLBS systemu Windows Server lub odpowiednie urządzenie sieciowe (w zasadzie można użyć też DNS round robin, ale to raczej obejście problemu niż rozwiązanie).

W przypadku, gdy jeden z serwerów ADAM wchodzący w skład konfiguracji HA ulegnie awarii, mechanizmy load balancing przekierują ruch do serwerów, które nadal są dostępne.

Różnica pomiÄ™dzy OpenLDAP a ADAM wynika z przedstawionego opisu taka, że w przypadku OpenLDAP mechanizm load balancing jest częściÄ… serwera Symas. W przypadku konfiguracji HA dla serwerów ADAM mechanizm ten dostÄ™pny jest na poziomie systemu operacyjnego (mechanizm replikacji danych nadal zapewniany jest natywnie przez ADAM). Cóż … jak dla mnie nic tutaj nie brakuje. Ale to moje zdanie :).

9.3/ Praca w trybie multi-master

W tym przypadku, również trudno o uzasadnienie, dlaczego akurat ten punkt znalazł się w części dokumentu opisującego brakujące elementy funkcjonalności w ADAM. AD i ADAM od początku swojego istnienia obsługują replikacje zmian i pracę w trybie multi-master.

Jedna z funkcji, których w AD\ADAM brakuje, i do której może się odnosić ta uwaga, to replikacja danych w ramach atrybutów wielowartościowych, dla tych atrybutów, dla których nie jest stosowany mechanizm LVR. AD\ADAM replikuje w takim wypadku całą zawartość atrybutu, a nie poszczególne wartości. Powoduje to, że w przypadku modyfikacji danych atrybutu na dwóch różnych serwerach równocześnie, jedna z modyfikacji nadpiszę drugą (zgodnie z algorytmem rozwiązywania konfliktów itp.).

W przypadku atrybutów połączonych (linked attributes) metadane replikacji przechowywane są dla każdej wartości i pozwala to na replikacje i rozwiązywanie ewentualnych konfliktów na poziomie pojedynczych wartości a nie całego atrybutu.

Tak więc ADAM jak najbardziej pozwala na pracę katalogu w trybie multimaster.

Podsumowanie

Szczerze jestem zdziwiony, że ktoÅ› doczytaÅ‚ aż do tego fragmentu :). Zdzwiony jestem, że sam tu dotarÅ‚em. Tym bardziej, że pierwsza wersja sprzed okoÅ‚o dwóch tygodni zostaÅ‚a “przypadkowo” skasowana (oczywiÅ›cie nie byÅ‚o kopii zapasowej 🙂 ).

Kryteria wyboru fragmentów do analizy nie były bardzo skomplikowane. Wskazałem te rzeczy, które na pierwszy rzut oka wydały mi się przedstawione błędnie lub niepoprawnie. Jeżeli ktoś z czytelników uważa, że powinienem rozwinąć jeszcze jakiś temat z tego dokumentu, to proszę o e-mail \ komentarz. W wolnym czasie postaram się odpowiedzieć :).

Z niektórymi uwagami z dokumentu muszę się zgodzić i przyznaję, że mi również brakuje w ADAM kilku funkcjonalności. Na mojej prywatnej liście, z rzeczy wymienionych i niewymienionych w tym dokumencie w zakresie funkcjonalności brakującej w ADAM, umieściłbym:

  • brak limitu liczby wartoÅ›ci atrybutu wielowartoÅ›ciowego innego niż atrybut poÅ‚Ä…czony (czasami przydaÅ‚by siÄ™ w scenariuszach migracji innych katalogów, szczególnie z systemów Unix).
  • opcjonalna weryfikacja uprawnieÅ„ po obu stronach atrybutu poÅ‚Ä…czonego (brakowaÅ‚o mi tego kiedyÅ› w jednym projekcie 🙂 ),
  • dynamiczne ACL okreÅ›lane na podstawie reguÅ‚,
  • rozszerzenia funkcjonalnoÅ›ci katalogu poprzez rozszerzenia (API), wywoÅ‚ywane przez okreÅ›lone zadarzenia na obiekcie po stronie katalogu ,
  • zestawu narzÄ™dzi administracyjnych pozwalajÄ…cych na proste zarzÄ…dzanie obiektami i dostÄ™pnych”z pudeÅ‚ka”. LDP.EXE, ADSIEdit i inne tego typu narzÄ™dzia sÄ… wystarczajÄ…ce, ale nie sÄ… one szczytem możliwoÅ›ci z punktu widzenia ergonomii pracy i “przyjaznoÅ›ci” dla wiÄ™kszoÅ›ci użytkowników.

Zapewne każdy, kto pracował z tą usługą, dodałby do tej listy jeszcze kilka innych rzeczy. Co tylko pokazuje, że nadal jest przestrzeń do rozwoju dla tego produktu.

Jeżeli jednak ktoÅ› zadaÅ‚by mi pytanie, czy ADAM nadaje siÄ™ do zastosowania w dużej organizacji – odpowiedziaÅ‚bym “tak”.

Czy nadaje się do zastosowania w przypadku jego konkretnej aplikacji? Tutaj odpowiedziałbym pytaniem: Jakie są założenia i wymagania tej aplikacji? Osobiście już zdarzało mi się w projekcie wyjść od zastosowania ADAM, aby w końcowym rezultacie użyć bazy danych SQL. Kwestia dostosowania rozwiązania do wymagań, nie odwrotnie (w końcu to nie SAP).

Koniec … na dzisiaj …

Woo-hoo

Leave a Reply