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,如需转载请自行联系原作者

目录
相关文章
|
9月前
|
NoSQL 测试技术 PHP
新手从事直播软件源码开发搭建经验与技巧
新手技术从事直播软件源码开发,从需求调研、技术架构、功能逻辑、技术语言、压力测试等全面剖析。
|
11月前
|
数据采集 Web App开发 iOS开发
使用Selenium时,如何模拟正常用户行为?
使用Selenium时,如何模拟正常用户行为?
|
编解码 小程序
无影云电脑产品使用黑神话悟空之:游戏服务器更新/配置问题
该文档主要介绍了使用无影云电脑玩《黑神话:悟空》时可能遇到的问题及解决方法,包括游戏服务器更新、配置问题、画质建议及如何开启帧数显示等内容,并提供了详细的步骤指导与参考链接。
|
监控 网络协议 物联网
一款轻量级的通信协议---MQTT (内含Linux环境搭建)
**MQTT协议摘要** MQTT是一种轻量级的发布/订阅型网络协议,适用于低带宽、高延迟或不可靠的网络环境,尤其适合物联网(IoT)设备。其主要特点包括: 1. **发布/订阅模型**:设备通过主题进行通信,发布者无需知道订阅者,订阅者也不需知道消息来源。 2. **轻量级**:协议头部小,减少网络负载,适合资源受限的设备。 3. **断线重连**:支持客户端在失去连接后重新连接,保持通信。 4. **服务质量级别(QoS)**:提供0(最多一次)、1(至少一次)和2(恰好一次)三种级别,保证消息传递的可靠性。
310 0
|
应用服务中间件 nginx
Nginx的referer参数的用法和原理
总结:referer参数可以用于Nginx配置,以限制或允许特定来源网站的访问,提高安全性或控制流量。它通过valid_referers指令来定义合法的Referer来源,并根据配置对请求进行处理。但需要注意,Referer字段内容可以被伪造,因此不应作为唯一的安全措施。
1257 0
|
Linux
Linux下采集摄像头的图像再保存为JPG图片存放到本地(YUYV转JPG)
Linux下采集摄像头的图像再保存为JPG图片存放到本地(YUYV转JPG)
2230 2
Linux下采集摄像头的图像再保存为JPG图片存放到本地(YUYV转JPG)
|
应用服务中间件 nginx
nginx如何重载配置
nginx如何重载配置
|
Ubuntu Apache Ruby
|
弹性计算 大数据 测试技术
2024年新版阿里云服务器价格表整理汇总,阿里云服务器收费报价详情
随着云计算技术的日益成熟,阿里云作为国内领先的云服务提供商,不断推出适应市场需求的云服务器产品。今天,我们就来详细解析一下阿里云新版云服务器的收费价格,帮助大家更好地选择适合自己的云服务器。2024年阿里云服务器租用价格表更新,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核4G服务器30元3个月,幻兽帕鲁4核16G和8核32G服务器配置,云服务器ECS可以选择经济型e实例、通用算力u1实
|
数据采集
运行爬虫时报错AttributeError—— 'str' object has no attribute 'capabilities'
运行爬虫时报错AttributeError—— 'str' object has no attribute 'capabilities'
1319 0