openldap mirrormode 配置

LDAP的主从同步从2.4版本以后有了很大的改动,新版本的主从同步有5中模式:


Syncrepl

该方式是slave服务器以拉的方式同步master的用户数据

  该方式缺点:当你修改一个条目中的一个属性值(or大批量的万级别的某1属性值),它不是简单的同步过来这些属性,而是把修改的条目一起同步更新来。

Delta-syncrepl

比上一条多了个功能:基于日志同步:

    你在master每更改1条记录,肯定会产生1条日志,那么slave会通过你的master日志进行相应的修改,这就克服了上一条的缺点。

N-Way Multi-Master多主方式同步LDAP信息
MirrorMode

该方式是服务器互相推送信息的方式同步用户数据

MirrorMode只支持2个主master(2个主master可以+N个slave),但是你如果非得加了3 、4 台master后,那么其余的都只能从前2台master上获取数据,而不能将本身的数据推送过去。

如果你有类似需求,也可以使用这个方式。(比如,你企业分散点多,然后不希望都具有修改功能,可以使用它)

Syncrepl Proxy

代理同步。

意思是将主master隐藏起来,而代理机上边通过Syncrepl从master主机以拉的方式同步master用户数据,当代理主机发生改变时,代理主机的LDAP又以推的方式将数据更新到下属的slave LDAP服务器上。slave LDAP 只有对代理LDAP服务器的读权限。


MirrorMode配置

用的比较多的模式可能是MirrorMode

在测试环境中,我只研究了MirrorMode模式的配置,下面是具体的操作过程。

1、首先安装两台openldap服务器,要求配置一样,即域名、管理员账号、密码完全一样。

如果不清楚如何安装,可以参考前面的文档CentOS6.5部署LDAP Server


环境:

LDAP SERVER1 172.16.42.136

LDAP SERVER2 172.16.42.137


域名:beyond.org   

管理员账号:admin

密码:123456

注意:在做主主同步配置前,确保两台服务器时间一致。并确保两台LDAP服务器的slapd服务正常启动,并且能用phpLDAPadmin管理工具正常登陆。


mirromode配置

1、编辑两台机器上的/etc/openldap/slapd.conf文件,(该配置文件之前最好备份下)

将注释掉的下面三行指令启用, 即将

1
2
3
modulepath  /usr/lib/openldap
modulepath  /usr/lib64/openldap
moduleload syncprov.la

三行前面的“#”删除掉。


2、LDAP SERVER1的配置

编辑/etc/openldap/slapd.conf文件,在文件结尾追加以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
index objectclass,entryCSN,entryUUID  eq
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
serverID    1
syncrepl      rid=123
               provider=ldap: //172 .16.42.137
               bindmethod=simple
               binddn= "cn=admin,dc=beyondh,dc=org"
               credentials=123456
               searchbase= "dc=beyondh,dc=org"
               schemachecking=on
               type =refreshAndPersist
               retry= "60 +"
mirrormode on

注意:由于原文件中有下面这条指定

1
index objectClass          eq ,pres

所以当加入

1
index objectclass,entryCSN,entryUUID  eq

后会报错,提示objectclass已定义。所以我将原文件中的

1
index objectClass          eq ,pres

注释掉了,然后就不报错了。


3、LDAP SERVER2的配置

编辑/etc/openldap/slapd.conf文件,在文件结尾追加以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
index  objectClass,entryCSN,entryUUID  eq
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
serverID    2
syncrepl      rid=123
               provider=ldap: //172 .16.42.136
               bindmethod=simple
               binddn= "cn=admin,dc=beyondh,dc=org"
               credentials=123456
               searchbase= "dc=beyondh,dc=org"
               schemachecking=on
               type =refreshAndPersist
               retry= "60 +"
mirrormode on

可以看到,两台服务器上serverID不一样,provider配置的是对方的IP地址,其他配置完全一致


注意:修改了配置文件,别以为重启服务器就好了,你需要删除原slapd.d目录中的文件,然后重新生成新的配置文件。删除就得配置缓存(暂且这么理解吧)

1
2
3
4
rm  -rf  /etc/openldap/slapd .d/*
#生成新的
slaptest -f  /etc/openldap/slapd .conf -F  /etc/openldap/slapd .d/
chown  -R ldap.ldap  /etc/openldap/slapd .d

启动slapd服务

1
/etc/init .d /slapd  restart


附上其中一台服务器的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
[root@localhost openldap] # cat slapd.conf | egrep -v "^$|^#"
include          /etc/openldap/schema/corba .schema
include          /etc/openldap/schema/core .schema
include          /etc/openldap/schema/cosine .schema
include          /etc/openldap/schema/duaconf .schema
include          /etc/openldap/schema/dyngroup .schema
include          /etc/openldap/schema/inetorgperson .schema
include          /etc/openldap/schema/java .schema
include          /etc/openldap/schema/misc .schema
include          /etc/openldap/schema/nis .schema
include          /etc/openldap/schema/openldap .schema
include          /etc/openldap/schema/ppolicy .schema
include          /etc/openldap/schema/collective .schema
allow bind_v2
pidfile          /var/run/openldap/slapd .pid
argsfile         /var/run/openldap/slapd .args
modulepath  /usr/lib/openldap
modulepath  /usr/lib64/openldap
moduleload syncprov.la
TLSCACertificatePath  /etc/openldap/certs
TLSCertificateFile  "\"OpenLDAP Server\""
TLSCertificateKeyFile  /etc/openldap/certs/password
database config
access to *
         by dn.exact= "gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"  manage
         by * none
database monitor
access to *
         by dn.exact= "gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"  read
         by dn.exact= "cn=Manager,dc=my-domain,dc=com"  read
         by * none
database        bdb
suffix           "dc=beyondh,dc=org"
checkpoint      1024 15
rootdn           "cn=admin,dc=beyondh,dc=org"
rootpw {SSHA}dA8Pvv20Tr4rMM99dVtRmp6tYwh8OrKs
directory        /var/lib/ldap
index ou,cn,mail,surname,givenname       eq ,pres,sub
index uidNumber,gidNumber,loginShell     eq ,pres
index uid,memberUid                      eq ,pres,sub
index nisMapName,nisMapEntry             eq ,pres,sub
loglevel  296
cachesize 1000
index objectclass,entryCSN,entryUUID  eq  
overlay syncprov  
syncprov-checkpoint 100 10  
syncprov-sessionlog 100  
  
serverID    1  
syncrepl      rid=123  
               provider=ldap: //172 .16.42.137
               bindmethod=simple  
               binddn= "cn=admin,dc=beyondh,dc=org"  
               credentials=123456 
               searchbase= "dc=beyondh,dc=org"  
               schemachecking=on 
               type =refreshAndPersist  
               retry= "60 +"  
mirrormode on


验证:

登录LDAP SERVER1,创建一个组HR

wKioL1jUhROBcvHIAAFXNHnKUzk813.png

登录LDAP SERVER2,可以看到HR组已经同步过来了。表示双组同步没有问题。

wKiom1jUhSGQMgz7AAFbDzlCaqA413.png











本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1909924,如需转载请自行联系原作者

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值