原文: http://www.openldap.org/doc/admin24/replication.html

基础

OpenLDAP复制基于syncrepl进程。它有两个角色。一个是provider,另一个是consumer。以下是配置ProviderConsumer

Provider

1
2
3
4
5
6
#Add for repl
index objectclass,entryCSN,entryUUID eq  #要注释系统原来的那一条。不能重复
moduleload syncprov.la
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100

官方示例文档中,数据库用的是mdb,而且有maxsize。这是好大一个坑!!如果真这样配置,在通过LDAP Admin导入时,会循环导入。。。就是People下面有几十个People。只要增加以上内容即可

Consumer

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
moduleload syncprov.la
syncrepl rid=002
    provider=ldap://192.168.0.58:389
    type=refreshOnly
    interval=00:00:01:00  #一分钟同步一次
    searchbase="dc=my-domain,dc=com"
    filter="(objectClass=*)"  #同步所有的条目,也可以指定条目
    scope=sub
    attrs="*"  #同步所有的属性
    schemachecking=off
    bindmethod=simple
    binddn="cn=Manager,dc=my-domain,dc=com" #provider的管理员
    credentials=1234    #provider的管理员密码

其实这样就已经会同步了。Consumer会同步Provider的。 再配合在两台OpenLDAP服务器上安装keepalived+ipvsadm。就可以实现高可用了。

其他说明

如果consumer因为provider停止时间过久,不同步了。可以把consumer/var/lib/ldap/*下面的内容全删除。再启动consumer。就又会立即从provider中同步最新的内容。并保持同步关系