Ldap szinkronizálás

Sziasztok!

Tanácsot szeretnék kérni, hogy a következő dolgot ki hogyan oldaná meg.
Adott 30db szerver, 30 külön helyen. Tételezzük fel, hogy az internet kapcsolatban nem bízunk, tehát a vpn mint olyan kilőhető.
Mind a 30 szerver 1-1 samba domaint szolgálna ki, de most jön a csavar.
Mindezt úgy szeretném megoldani, hogy egy központi LDAP szerverben legyen az összes felhasználó és a "kis szerverek" csak szinkronizálják le az ldapot adott időközönként pl.
Valami ilyesmi lenne a struktúra:
[root]
|
---dc=egyes,dc=ceg,dc=hu
|
---dc=kettes,dc=ceg,dc=hu

A példában említett ágak közül az egyes szerverre kellene syncelni az egyes ágat, de csakis azt, a kettes szerverre a "kettes" ágat.

Van valakinek erre valami jó ötlete? Vagy már kész program, akármi.
Vagy ezt az egész bohóckodást nekem kell valami perl/php/bármi megoldással megcsinálni?

Előre is köszi!

Üdv.

Hozzászólások

Nem kell semmit bohóckodnod, az LDAP erre jó, nagyjából ezért van létjogosultsága, hogy lehessen orrba-szájba replikálni...

Tanulmányozd a syncrepl replikációt:
http://www.openldap.org/doc/admin23/syncrepl.html

A lényeg, hogy van a master szervered, ezt beállítod, mint syncrepl provider:
index objectclass,entryCSN,entryUUID eq

overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100

ehhez ennyi kell, a consumer (tehát a "kis" szerverek) pedig a syncrepl=... (elég sok paramétere van) beállítással mehetnek, a searchbase pedig lehet dc=egyes,dc=xxx, másik szerveren dc=kettes,dc=xxx
Hogy még biztonságos is legyen, létrehozhatsz minden kis szervernek egy-egy replicator dn-t, pl. cn=replicator,dc=egyes,dc=xxx cn=replicator,dc=kettes,dc=xxx, az ACL-eket úgy állítod be, hogy ez a replicator user csak a saját fáját tudja lekeresni, az "egyes" szerveren pedig a syncrepl opcióiba binddn="cn=replicator,dc=egyes,dc=xxx", a "kettesen" binddn="cn=replicator,dc=kettes,dc=xxx", stb.

Szia!

Kicsit régi ugyan a hozzászólás, de nagyjából hasonló problémám van nekem is. Mindösszesen 2 szervert szeretnék szinkronizálni, de nem sikerül:
Master-en hozzáadva:
moduleload syncprov
index objectclass,entryCSN,entryUUID eq

overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100

Slave-en:
syncrepl rid=1
provider=ldap://192.168.1.3
type=refreshAndPersist
scope=sub
searchbase=”dc=example,dc=com”
filter=”(objectClass=*)”
attrs="*"
schemachecking=off
bindmethod=simple
binddn=”cn=admin,dc=example,dc=com”
credentials=Password
updateref ldap://192.168.1.3

Master rendben elindul, slave viszont:
Error: Malformed "syncrepl" line in slapd config file, missing provider searchbase.

Sajnos a google segítségével nem jutok semmire, ha valakinek van működő megoldása vagy ötlete szívesen látom.

Csak magamnak, a megoldás:
syncrepl rid=1
provider=ldap://192.168.1.3
binddn=”cn=replicator,dc=example,dc=com”
credentials=Password
type=refreshAndPersist
scope=sub
searchbase=”dc=example,dc=com”
filter=”(objectClass=*)”
attrs="*"
schemachecking=off
bindmethod=simple
overlay syncprov

Az updateref sor kimarad és szükséges egy replicator felhasználó, mert a leírások szerint az admin userrel nem megy...

Most működik.

Elmélet: ha van 501 db replikálandó entryd viszont meg van mondva hogy a maximálisan visszaadható bejegyzések száma 500, akkor a végtelenségig fog pörögni a replikáció, hiszen soha sem tudja befejezni a tranzakciót.

OpenLDAP-ban:


limits dn.exact="cn=repl,dc=encegem,dc=hu" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited

Én csak kóstolgatom az LDAP-ot, úgyhogy inkább kérdezek, mint állítok: A lekérdezéseknél, ha be van állítva az 500-as limit, az első lekérdezésnél megkapok max. 500 rekordot, ha van még, a következő lekérdezésnél kapom a többit, szintén 500-anként. Nem tudom, ez a replikációnál hogyan működik...

koszi - en is epp ezt tanulmanyoztam.....

Még egy nagy kérdés maradt azért :)
Ha mindezt én arra akarom használni h. egy Samba DOMAIN paramétereit és felhasználóit tároljam, akkor a replikának írhatónak kellene lennie és valamilyen úton módon visszafelé is kellene működjön a szinkronizálás (pl. LastLogin attribútumot a távoli Samba server a távoli Ldap szerveren fogja írni is...)

Erre valami ötlet esetleg?
Vagy én néztem el és a syncrepl erre is jó?

Pl. így:

serverID 999

include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/samba.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/ppolicy.schema

modulepath /usr/lib/ldap
moduleload back_bdb
moduleload syncprov
moduleload valsort

pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
logfile /var/log/slapd.log

loglevel 0

backend bdb

database bdb
suffix "dc=ceg,dc=hu"
rootdn "cn=admin,dc=ceg,dc=hu"
directory /var/lib/ldap
lastmod on

checkpoint 512 30

index default pres,eq,sub

access to attrs=userPassword
by dn="cn=replicator,dc=ceg,dc=hu" write
by anonymous auth
by self write
by * none

access to dn.base=""
by * read

access to *
by dn="cn=replicator,dc=ceg,dc=hu" write
by * read

overlay valsort
valsort-attr uid ou=People,dc=ceg,dc=hu alpha-ascend

overlay syncprov
syncprov-checkpoint 2 60
syncprov-sessionlog 1000

syncrepl rid=001
provider=ldap://172.16.1.254
bindmethod=simple
binddn="cn=replicator,dc=ceg,dc=hu"
credentials=TITKOS JELSZO
searchbase="ou=FTP,dc=ceg,dc=hu"
schemachecking=on
type=refreshAndPersist
retry="60 +"

syncrepl rid=999
provider=ldap://127.0.0.1
bindmethod=simple
binddn="cn=replicator,dc=ceg,dc=hu"
credentials=TITKOS JELSZO
searchbase="ou=FTP,dc=ceg,dc=hu"
schemachecking=on
type=refreshAndPersist
retry="60 +"

mirrormode on

A serverid-t változtatod, mert mindegyik gépen ua. a konfig...
Több gépet is felvehetsz... természetesen más és más rid-del...

--
Debian Linux rulez... :D

Sziasztok!
A fenti szálat szeretném folytatni!
A problémám jóval egyszerűbb, mint a téma indítóé:
Adott egy működő OpenLDAP szerver, aminek a teljes fáját szeretném replikálni egy másik szerverre:

A masteren be van lőve a fent leírt:
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100

A slaven pedig a
rootdn=”cn=admin,dc=example,dc=com”
syncrepl rid=123
provider=ldap://192.168.10.250
binddn=”cn=replicator,dc=example,dc=com”
credentials=Password
type=refreshAndPersist
scope=sub
searchbase=”dc=example,dc=com”
schemachecking=off
bindmethod=simple
overlay syncprov

A masterrel nem hinném, hogy gond lenne, mert korábban már replikáltam róla, ment simán.
A slave hibaüzenet nélkül elindul, de az
id ldapuser
szerint nincs ilyen felhasználó. Tehát nem csinálja meg a replikációt.

Mit kellene még megnéznem, ellenőriznem?
A logokban nem találok semmit (de lehet, hogy csak nem tudom mire figyeljek:-( )