首页 > 代码库 > openldap mirrormode 配置
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文件,(该配置文件之前最好备份下)
将注释掉的下面三行指令启用, 即将
modulepath /usr/lib/openldap modulepath /usr/lib64/openldap moduleload syncprov.la
三行前面的“#”删除掉。
2、LDAP SERVER1的配置
编辑/etc/openldap/slapd.conf文件,在文件结尾追加以下内容
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
注意:由于原文件中有下面这条指定
index objectClass eq,pres
所以当加入
index objectclass,entryCSN,entryUUID eq
后会报错,提示objectclass已定义。所以我将原文件中的
index objectClass eq,pres
注释掉了,然后就不报错了。
3、LDAP SERVER2的配置
编辑/etc/openldap/slapd.conf文件,在文件结尾追加以下内容
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目录中的文件,然后重新生成新的配置文件。删除就得配置缓存(暂且这么理解吧)
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服务
/etc/init.d/slapd restart
附上其中一台服务器的配置文件
[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
登录LDAP SERVER2,可以看到HR组已经同步过来了。表示双组同步没有问题。
参考链接:
http://www.tuicool.com/articles/7FfQZbr
http://407711169.blog.51cto.com/6616996/1529506
http://www.iyunv.com/thread-158662-1-1.html
本文出自 “zengestudy” 博客,请务必保留此出处http://zengestudy.blog.51cto.com/1702365/1909924
openldap mirrormode 配置