URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 60474
[ Назад ]

Исходное сообщение
"Openldap replica & problems"

Отправлено rm , 28-Сен-05 21:40 
Настроил репликацию между двумя серверами. Изменения на master реплицируются на slave. Но возникла проблема.....

Сервера выполняют одни и те же функции, у них одинаковые OS (freebsd 5.3) и используются одинаковые скрипты.
В некоторые моменты скрипты на серверах должны менять записи в своем LDAPе.

Работает система так: меняется что-то на Master, это сразу реплицируется на slave.

Но при этом slave server не может ничего изменить в своем ldap!
Без репликации тот же скрипт (вызывает ldapmodify)прекрасно работает. Стоит только закоментировать у slave строчки:
updatedn        "cn=replicator,o=org,c=ru"
updateref       ldap://localhost:636

Естественно, при этом не работает репликация!

Если же работает репликация, получаю ошибку

ldap_modify: Referral
ldif_record() = 10

и записи на slave посредством скрипта не меняются!

Как сделать, чтобы это работало одновременно?
Те нужно, чтобы:

Изменения на master реплицируются на slave
Причем сам slave мог самостоятельно менять записи в ldap (не нужно, чтобы это отображалось на master)

конфиги
MASTER

include         /usr/local/etc/openldap/schema/core.schema
include         /usr/local/etc/openldap/schema/cosine.schema
include         /usr/local/etc/openldap/schema/nis.schema
include         /usr/local/etc/openldap/schema/inetorgperson.schema
include         /usr/local/etc/openldap/schema/samba.schema
pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args
loglevel       64
database        ldbm
cachesize       10000
dbcachesize     1000000
threads         128
dbnosync
dbsync          2 12 5
sizelimit       10000

suffix          "o=org,c=ru"
rootdn          "cn=Manager,o=org,c=ru"
rootpw          secret


directory       /var/db/openldap-ldbm

replogfile      /var/log/slurpd.replog
replica         host=localhost:636
                binddn="cn=replicator,o=org,c=ru"
                bindmethod=simple
                credentials=my_replicator

index   objectClass           eq
index           uid           pres,eq
index           rid           eq
index           uidNumber     eq
index           gidNumber     eq
index           cn            eq,subinitial
index           memberUid     eq

index           gecos         eq
index           description   eq
index           default       sub

access to attr=userPassword,lmPassword,ntPassword
       by self write
       by * auth

access to *
       by * read

----------------
SLAVE:
----------------

include         /usr/local/etc/openldap/schema/core.schema
include         /usr/local/etc/openldap/schema/cosine.schema
include         /usr/local/etc/openldap/schema/nis.schema
include         /usr/local/etc/openldap/schema/inetorgperson.schema
include         /usr/local/etc/openldap/schema/samba.schema
pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args
loglevel        64

database        ldbm
cachesize       10000
dbcachesize     1000000
threads         128
dbnosync
dbsync          2 12 5
sizelimit       10000

suffix          "o=org,c=ru"
rootdn          "cn=Manager,o=org,c=ru"

rootpw          secret
directory       /var/db/openldap-ldbm

index   objectClass     eq
index           uid           pres,eq
index           rid           eq
index           uidNumber     eq
index           gidNumber     eq
index           cn            eq,subinitial
index           memberUid     eq

index           gecos         eq
index           description   eq
index           default       sub

updatedn        "cn=replicator,o=org,c=ru"
updateref       ldap://localhost:636

access to * attr=userPassword,lmPassword,ntPassword
       by dn="cn=replicator,o=org,c=ru" write
       by self write
       by * auth
access to *
       by dn="cn=replicator,o=org,c=ru" write
       by * read



Содержание

Сообщения в этом обсуждении
"Openldap replica & problems"
Отправлено rm , 29-Сен-05 12:30 
а вообще такое возможно или нужно делать двустороннюю репликацию?
куда вообще копать? :)

"Openldap replica & problems"
Отправлено ekc , 29-Сен-05 15:57 
>Настроил репликацию между двумя серверами. Изменения на master реплицируются на slave. Но
>возникла проблема.....
>
>Сервера выполняют одни и те же функции, у них одинаковые OS (freebsd
>5.3) и используются одинаковые скрипты.
>В некоторые моменты скрипты на серверах должны менять записи в своем LDAPе.
>
>
>Работает система так: меняется что-то на Master, это сразу реплицируется на slave.
>
>
>Но при этом slave server не может ничего изменить в своем ldap!
>
>Без репликации тот же скрипт (вызывает ldapmodify)прекрасно работает. Стоит только закоментировать у
>slave строчки:
>updatedn        "cn=replicator,o=org,c=ru"
>updateref       ldap://localhost:636
updateref должна ссылаться на master ldap (ldap://master.ldap.org)
>
>Естественно, при этом не работает репликация!
>
>Если же работает репликация, получаю ошибку
>
>ldap_modify: Referral
>ldif_record() = 10
>
>и записи на slave посредством скрипта не меняются!
>
>Как сделать, чтобы это работало одновременно?
>Те нужно, чтобы:
>
>Изменения на master реплицируются на slave
>Причем сам slave мог самостоятельно менять записи в ldap (не нужно, чтобы
>это отображалось на master)
>
>конфиги
>MASTER
>
>include         /usr/local/etc/openldap/schema/core.schema
>include         /usr/local/etc/openldap/schema/cosine.schema
>include         /usr/local/etc/openldap/schema/nis.schema
>include         /usr/local/etc/openldap/schema/inetorgperson.schema
>include         /usr/local/etc/openldap/schema/samba.schema
>pidfile         /var/run/openldap/slapd.pid
>argsfile        /var/run/openldap/slapd.args
>loglevel       64
>database        ldbm
>cachesize       10000
>dbcachesize     1000000
>threads         128
>dbnosync
>dbsync          2 12
>5
>sizelimit       10000
>
>suffix          "o=org,c=ru"
>rootdn          "cn=Manager,o=org,c=ru"
>rootpw          secret
>
>
>directory       /var/db/openldap-ldbm
>
>replogfile      /var/log/slurpd.replog
>replica         host=localhost:636
>            
>    binddn="cn=replicator,o=org,c=ru"
>            
>    bindmethod=simple
>            
>    credentials=my_replicator
>
>index   objectClass        
>  eq
>index           uid
>          pres,eq
>
>index           rid
>          eq
>
>index           uidNumber
>    eq
>index           gidNumber
>    eq
>index           cn
>          
>eq,subinitial
>index           memberUid
>    eq
>
>index           gecos
>        eq
>index           description
>  eq
>index           default
>      sub
>
>access to attr=userPassword,lmPassword,ntPassword
>       by self write
>       by * auth
>
>access to *
>       by * read
>
>----------------
>SLAVE:
>----------------
>
>include         /usr/local/etc/openldap/schema/core.schema
>include         /usr/local/etc/openldap/schema/cosine.schema
>include         /usr/local/etc/openldap/schema/nis.schema
>include         /usr/local/etc/openldap/schema/inetorgperson.schema
>include         /usr/local/etc/openldap/schema/samba.schema
>pidfile         /var/run/openldap/slapd.pid
>argsfile        /var/run/openldap/slapd.args
>loglevel        64
>
>database        ldbm
>cachesize       10000
>dbcachesize     1000000
>threads         128
>dbnosync
>dbsync          2 12
>5
>sizelimit       10000
>
>suffix          "o=org,c=ru"
>rootdn          "cn=Manager,o=org,c=ru"
>
>rootpw          secret
>directory       /var/db/openldap-ldbm
>
>index   objectClass     eq
>index           uid
>          pres,eq
>
>index           rid
>          eq
>
>index           uidNumber
>    eq
>index           gidNumber
>    eq
>index           cn
>          
>eq,subinitial
>index           memberUid
>    eq
>
>index           gecos
>        eq
>index           description
>  eq
>index           default
>      sub
>
>updatedn        "cn=replicator,o=org,c=ru"
>updateref       ldap://localhost:636
updateref должна ссылаться на master ldap (ldap://master.ldap.org)
>
>access to * attr=userPassword,lmPassword,ntPassword
>       by dn="cn=replicator,o=org,c=ru" write
>       by self write
>       by * auth
>access to *
>       by dn="cn=replicator,o=org,c=ru" write
>       by * read



"Openldap replica & problems"
Отправлено rm , 29-Сен-05 18:03 

>>updatedn        "cn=replicator,o=org,c=ru"
>>updateref       ldap://localhost:636
>updateref должна ссылаться на master ldap (ldap://master.ldap.org)


у меня репликация шифруется stunnel, т.е.

master,localhost:636-->шифруем-->slave,localhost:636--->расшифровываем-->slave,localhost,ldap:389



"Openldap replica & problems"
Отправлено rm , 29-Сен-05 19:27 
>
>>>updatedn        "cn=replicator,o=org,c=ru"
>>>updateref       ldap://localhost:636
>>updateref должна ссылаться на master ldap (ldap://master.ldap.org)
>
>
>у меня репликация шифруется stunnel, т.е.
>
>master,localhost:636-->шифруем-->slave,localhost:636--->расшифровываем-->slave,localhost,ldap:389

вернее даже не так, а

master,localhost:636 --> шифруем --> slave,slave IP:636 --> расшифровываем --> slave,localhost,ldap:389

так что мне в этом случае писать?

Или может возвожно сделать двустороннюю репликацию?
Я тут попробовал и в итоге нельзя было ничего исправить ни на master, ни на slave...к тому же загадочным способом удалилось 200 записей из ldap, хорошо что backup есть :)