Ldap高效数据同步- MirrorMode双主复制模式配置详解(上)
#作者:朱雷
文章目录
- 一、Syncrepl 复制和MirrorMode复制
- 1.1. 什么是复制模式
- 1.2. 什么是 syncrepl同步复制
- 1.3. 什么是 MirrorMode 复制(双主模式)
- 1.4. 双数据中心配置镜像模式架构
- 二、Ldap环境部署
- 三、配置Mirror复制类型
- 3.1. 配置节点1配置文件
- 3.2. 配置节点2配置文件
一、Syncrepl 复制和MirrorMode复制
1.1. 什么是复制模式
OpenLDAP有各种配置选项可用于创建复制目录。在以前的版本中,复制是指主服务器和一定数量的从属服务器。主服务器接受来自其他客户端的目录更新,而从属服务器仅接受来自(单个)主服务器的更新。复制结构定义严格,任何特定数据库只能充当一个角色,即主服务器或从属服务器。OpenLDAP 2.4 引入的另一个术语是多主服务器。由于 OpenLDAP 现在支持多种复制拓扑,这些术语已被弃用,取而代之的是提供者/多提供者和消费者。
提供者可以接受外部写入操作并使其可供消费者检索,消费者向提供者请求复制更新。与严格定义的主/从关系不同,提供者/消费者角色非常灵活,消费者收到的复制更新可以由该消费者进一步传播到其他服务器,因此消费者也可以同时充当提供者。此外,消费者不必是实际的LDAP服务器,它可能只是一个 LDAP客户端。
1.2. 什么是 syncrepl同步复制
Syncrepl 使用 LDAP 内容同步协议(简称 LDAP Sync)作为消费者同步协议。LDAP Sync 提供状态复制,支持基于拉取和基于推送的同步,并且不强制使用历史记录存储。在基于拉取的复制中,消费者会定期轮询提供者以获取更新。在基于推送的复制中,消费者会实时监听提供者发送的更新。由于该协议不需要历史记录存储,因此提供者不需要维护它收到的任何更新日志。
Syncrepl 通过维护和交换同步 cookie 来跟踪复制内容的状态。由于 syncrepl 消费者和提供者维护其内容状态,消费者可以轮询提供者内容以执行增量同步,方法是请求使消费者与提供者内容保持最新状态所需的条目。Syncrepl 还通过维护复制状态实现了对消费者的方便管理。消费者数据库可以从处于任何同步状态的消费者端或提供者端备份构建。Syncrepl 可以自动重新同步消费者数据库,使其与当前提供者内容保持最新状态。
1.3. 什么是 MirrorMode 复制(双主模式)
MirrorMode 是一种混合配置,服务器互相推送信息的方式同步用户数据,它提供单提供商复制的所有一致性保证,同时还提供多提供商的高可用性。在 MirrorMode 中,两个提供商设置为相互复制(作为多提供商配置),但使用外部前端将所有写入定向到两个服务器中的其中一个。如果第一个提供商崩溃,则第二个提供商将仅用于写入,此时前端将切换到将所有写入定向到第二个提供商。当崩溃的提供商修复并重新启动时,它将自动追上正在运行的提供商上的任何更改并重新同步。
- 为目录写入提供高可用性 (HA) 解决方案(副本处理读取)
- 只要一个提供程序正常运行,就可以安全地接受写入
- 提供程序节点相互复制,因此它们始终保持最新状态并可以随时接管(热备用)
- Syncrepl 还允许提供商节点在任何停机后重新同步
1.4. 双数据中心配置镜像模式架构
二、Ldap环境部署
主机node | 版本 | IP | 备注 |
---|---|---|---|
ldap-0 | 2.4.44 | 192.168.1.129 | 互为主节点/提供者端 |
ldap-1 | 2.4.44 | 192.168.1.130 | 互为从节点/消费者端 |
三、配置Mirror复制类型
3.1. 配置节点1配置文件
[root@ldap-0 openldap]# egrep -v '^$|#' /usr/local/etc/openldap/slapd.conf
serverID 1
include /usr/local/etc/openldap/schema/corba.schema
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/duaconf.schema
include /usr/local/etc/openldap/schema/dyngroup.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/java.schema
include /usr/local/etc/openldap/schema/misc.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/openldap.schema
include /usr/local/etc/openldap/schema/pmi.schema
include /usr/local/etc/openldap/schema/ppolicy.schema
pidfile /usr/local/var/run/slapd.pid
argsfile /usr/local/var/run/slapd.args
logfile /usr/local/var/slapd.log
modulepath /usr/local/libexec/openldap
moduleload syncprov.la
database mdb
maxsize 85899345920
suffix "dc=zltest,dc=com"
rootdn "cn=admin,dc=zltest,dc=com"
rootpw {SSHA}qKw4zhjOu7o+fpSCOUuMMnviWRavEdK0
directory /usr/local/var/openldap-mirror-data
index objectclass,entryCSN,entryUUID eq
overlay syncprov
syncprov-checkpoint 2 1
syncprov-sessionlog 100
syncrepl rid=001provider=ldap://192.168.1.130:389bindmethod=simplebinddn="cn=admin,dc=zltest,dc=com" credentials=123456searchbase="dc=zltest,dc=com"scope=subschemachecking=ontype=refreshAndPersistretry="60 +"interval=00:00:01:00
mirrormode on
3.2. 配置节点2配置文件
[root@ldap-1 openldap]# egrep -v '^$|#' /usr/local/etc/openldap/slapd.conf
serverID 2
include /usr/local/etc/openldap/schema/corba.schema
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/duaconf.schema
include /usr/local/etc/openldap/schema/dyngroup.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/java.schema
include /usr/local/etc/openldap/schema/misc.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/openldap.schema
include /usr/local/etc/openldap/schema/pmi.schema
include /usr/local/etc/openldap/schema/ppolicy.schema
pidfile /usr/local/var/run/slapd.pid
argsfile /usr/local/var/run/slapd.args
logfile /usr/local/var/slapd.log
modulepath /usr/local/libexec/openldap
moduleload syncprov.la
database mdb
maxsize 85899345920
suffix "dc=zltest,dc=com"
rootdn "cn=admin,dc=zltest,dc=com"
rootpw {SSHA}qKw4zhjOu7o+fpSCOUuMMnviWRavEdK0
directory /usr/local/var/openldap-mirror-data
index objectclass,entryCSN,entryUUID eq
overlay syncprov
syncprov-checkpoint 2 1
syncprov-sessionlog 100
syncrepl rid=001provider=ldap://192.168.1.129:389bindmethod=simplebinddn="cn=admin,dc=zltest,dc=com"credentials=123456searchbase="dc=zltest,dc=com"scope=subschemachecking=ontype=refreshAndPersistretry="60 +"interval=00:00:01:00
mirrormode on