作者:iceblood(刘宏光)
Openldap 2.4的同步机制已经和2.3完全不同,而网络上到处都是2.3的同步方案,因此本人写出这篇文章来作为记录。
我这里的同步机制采用的是镜像模式,并且双向镜像,因此可以说是两边的数据完全一样,其实双向同步2.4下非常简单。openldap的基本配置这里就不再描述,关键我这里贴出双向同步的方案。
假设两台服务器的IP为:
A LDAP 10.0.0.1
B LDAP 10.0.0.2
首先我们需要满足如下条件:
一、保证A和B两台服务器里都配置的一样的根dc,比如我的是:dc=lhg,dc=com。
二、两边的管理帐户都有cn=root,dc=lhg,dc=com,密码都为111111。
三、保证目前AB两台服务器的数据完全一致。如果闲麻烦可以先导出所有数据,然后删除当作全新安装,待同步完成后从其中一台导入即可。
以上条件满足了后开始设置A的配置文件
修改A服务器的slapd.conf内容,增加如下:
# 设置唯一ID号
serverID 1
# 开启同步
overlay syncprov
# 设置从B服务器获取信息
syncrepl rid=001 <----和B服务器保持一致,告诉B现在和你是同一组。
provider=ldap://10.0.0.2:389 <----B服务器LDAP的IP及端口
type=refreshAndPersist <----设置为持续同步
searchbase="dc=lhg,dc=com" <----从B服务器同步dc=lhg,dc=com
schemachecking=on <----schema验证开启
bindmethod=simple <----密码验证为简单模式(即明文,此处你可以改为加密)
binddn="cn=root,dc=lhg,dc=com" <----使用cn=root,dc=lhg,dc=com用户进行读取(B服务器上必须有该用户)
credentials=111111 <----密码为111111
retry="60 +" <----重试为60秒,60和“+”之间必须有空格
#以上几个都是syncrepl的参数,可以考虑在一行里完成,我这里在最前面用一个TAB做了换行。
mirrormode on <----开启镜像模式
修改B服务器的slapd.conf内容,增加如下:
# 设置唯一ID号和A不能一样
serverID 2
# 开启同步
overlay syncprov
# 设置从B服务器获取信息
syncrepl rid=001 <----和B服务器保持一致,告诉A现在和你是同一组。
provider=ldap://10.0.0.1:389 <----A服务器LDAP的IP及端口
type=refreshAndPersist <----设置为持续同步
searchbase="dc=lhg,dc=com" <----从A服务器同步dc=lhg,dc=com
schemachecking=on <----schema验证开启
bindmethod=simple <----密码验证为简单模式(即明文,此处你可以改为加密)
binddn="cn=root,dc=lhg,dc=com" <----使用cn=root,dc=lhg,dc=com用户进行读取(A服务器上必须有该用户)
credentials=111111 <----密码为111111
retry="60 +" <----重试为60秒,60和“+”之间必须有空格
#以上几个都是syncrepl的参数,可以考虑在一行里完成,我这里在最前面用一个TAB做了换行。
mirrormode on <----开启镜像模式
设置完成后重启openldap。这时在A或者B服务器上添加删除任意数据都将相互同步。该模式不支持对两台服务器同时写操作。