我们目前有一台使用cn=config
后端的 OpenLDAP 服务器。我们想添加第二台 OpenLDAP 服务器并配置它们以进行多主复制。我们需要做什么才能
- 在现有服务器上启用复制并
- 使用现有数据初始化新服务器
到目前为止我所做的(以下本指南) 是:
同步配置
dn: cn=config 变更类型:修改 替换:olcServerID olcServerID: 1 ldap://foo.example.com olcServerID: 2 ldap://bar.example.com - 替换:olcSaslSecProps olcSaslSecProps:noanonymous dn:cn=模块,cn=配置 变更类型:修改 olcModuleLoad:同步 dn:olcDatabase=config,cn=config 变更类型:修改 olcRootDN: cn=admin,cn=config olcRootPW: abc123 添加:olcSyncRepl olcSyncRepl:rid=001 提供者=ldap://foo.example.com bindmethod=simple binddn="cn=admin,cn=config" 凭证=abc123 searchbase="cn=config" 类型=refreshAndPersist 重试=“5 5 300 5” 超时=3 olcSyncRepl:rid=002 提供者=ldap://bar.example.com bindmethod=simple binddn="cn=admin,cn=config" 凭证=abc123 searchbase="cn=config" 类型=refreshAndPersist 重试=“5 5 300 5” 超时=3 - 添加:olcMirrorMode olcMirrorMode: TRUE dn:olcOverlay=syncprov,olcDatabase=config,cn=config 更改类型:添加 对象类:olcOverlayConfig 对象类:olcSyncProvConfig olcOverlay:syncprov
这使得配置同步在两个方向上都可以进行。
同步数据
dn:olcDatabase=bdb,cn=config 变更类型:修改 添加:olcMirrorMode olcMirrorMode: TRUE - 添加:olcSyncrepl olcSyncrepl:rid=001 提供商=ldap://foo.example.com searchbase=dc=example,dc=com binddn="uid=ldapsync,ou=Special Accounts,dc=example,dc=com" credentials=xyz123 olcSyncrepl:rid=002 提供商=ldap://bar.example.com searchbase=dc=example,dc=com binddn="uid=ldapsync,ou=Special Accounts,dc=example,dc=com" credentials=xyz123 dn:olcOverlay=syncprov,olcDatabase=bdb,cn=config 更改类型:添加 对象类:olcOverlayConfig 对象类:olcSyncProvConfig olcOverlay:syncprov
我已验证这些更改已同步到第二台服务器,并且 ldapsync 用户可以进行身份验证并可以看到所需的所有数据。但是,bdb 数据似乎没有在任何一个方向上同步。我遗漏了什么?
答案1
此主题让我想到,olcMirrorMode
定义需要放在后行olcSyncrepl
。我停止了 ldap 服务器并手动编辑了 olcDatabase ldif 文件。这似乎已经使数据复制在两个方向上都起作用了。