OpenLDAPのcn = configが完全にコピーされていません。

OpenLDAPのcn = configが完全にコピーされていません。

OpenLDAP 2.4.39マスターレプリカとリードレプリカがありますcn=config「OLC」構成(以前の方法とは反対slapd.conf

ldapmodifyレプリケーションはデータ(ユーザーアカウントなど)に対しては機能しますが、構成には機能しません。たとえば、マスターで設定を変更すると、dn: cn=config変更がレプリカに表示され、contextCSN: ...タイムスタンプが更新されますが、/etc/openldap/slapd.d/cn=config.ldif変更されたデータは許可されません。たとえば、プロパティを変更してolcGentleHUP: ...テストします。

マスターではレコードがタイムスタンプで更新されolcGentleHUP: ...、レプリカではタイムスタンプだけがマスターとまったく同じ値で更新されます。/etc/openldap/slapd.d/cn=config.ldifcontextCSN: ...contextCSN: ...

何が起こっているのか知っていますか?どのようにデバッグできますか?

更新済み(2015年2月7日)

私たちは奴隷環境searchbase="cn=schema,cn=config"にいることがわかりました。次に、設定全体を同期するようにolcSyncrepl変更します。searchbase="cn=config"

答え1

olcDatabase={0}config,cn=configのデータに加えて、OLCの複製を設定しましたかoldDatabase={1}hdb,cn=config?デフォルトでcn=configは、コピーには特別なブートストラップが必要です。マニュアルに記載されています。

マイジョブ設定(ミラーモード)は次のとおりです。

dn: olcDatabase={0}config,cn=config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
olcRootDN: cn=config
olcRootPW:: hogehogehogehoge==
olcSyncrepl: {0}rid=001 provider=ldap://server1/ starttls=critical tls_reqcert=demand bindmethod=simple binddn="cn=config" credentials=secret searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1
olcSyncrepl: {1}rid=002 provider=ldap://server2/ starttls=critical tls_reqcert=demand bindmethod=simple binddn="cn=config" credentials=secret searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1
olcMirrorMode: TRUE

dn: olcOverlay={0}syncprov,olcDatabase={0}config,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: {0}syncprov

dn: olcDatabase={1}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=your,dc=domain
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by .... read by .... write by dn="cn=config" read
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by .... write by * read
olcLastMod: TRUE
olcRootDN: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
olcSyncrepl: {0}rid=011 provider=ldap://server1/ starttls=critical tls_reqcert=demand bindmethod=simple binddn="cn=config" credentials=secret searchbase="dc=your,dc=domain" type=refreshAndPersist retry="60 +" timeout=1
olcSyncrepl: {1}rid=012 provider=ldap://server2/ starttls=critical tls_reqcert=demand bindmethod=simple binddn="cn=config" credentials=secret searchbase="dc=your,dc=domain" type=refreshAndPersist retry="60 +" timeout=1
olcMirrorMode: TRUE
olcDb....: ... (other hdb configuration)

dn: olcOverlay={0}syncprov,olcDatabase={1}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: {0}syncprov

要点は、ピアサーバーにバインドするレプリケータ()の資格情報を有効にしてolcRootDN設定olcRootPWすることです。また、同僚からすべてを得るために適切に設定する必要があります。自分のローカルデータベースを更新する方法が既にわかっているので、書き込み権限を付与する必要はありません。cn=configsyncprovolcAccess

関連情報