当前位置: 首页 > news >正文

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-02.4.44192.168.1.129互为主节点/提供者端
ldap-12.4.44192.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

相关文章:

  • 在 Cursor 中 配置 GitHub MCP Server
  • AI 应用同质化:一场看不见的资源 “吞噬战”
  • 软考:软件设计师考试数据结构知识点详解
  • HTML5 新特性详解:语义化标签、表单与音视频嵌入
  • 底层源码和具体测试解析HotSpot JVM的notify唤醒有序性(5000字详解)
  • JimuBI 积木报表 v1.9.5发布,大屏和仪表盘,免费数据可视化
  • 当AI浏览器和AI搜索替代掉传统搜索份额时,老牌的搜索引擎市场何去何从。
  • ubuntu 日志文件清空方式的解读
  • Ubuntu22.04/24.04 P104-100 安装驱动和 CUDA Toolkit
  • FFmpeg之三 录制音频并保存, API编解码从理论到实战
  • C++初阶-STL简介
  • Unity 和 Unreal Engine(UE) 两大主流游戏引擎的核心使用方法
  • 司法大模型构建指南
  • 模方ModelFun工程操作教程
  • Deep Dark Sea 局域網文件共享即時匿名聊天去數據庫部署
  • 1、Linux操作系统下,ubuntu22.04版本切换中英文界面
  • mAh 与 Wh:电量单位的深度解析
  • 学习海康VisionMaster之路径提取
  • self-attention计算过程
  • JavaEE-多线程实战02
  • 柴德赓、纪庸与叫歇碑
  • 影子调查|23岁男子驾照拟注销背后的“被精神病”疑云
  • 魔都眼·上海车展⑥|周六客流超13.5万人次,创开展新高
  • 西北大学党委副书记吕建荣调任西安财经大学党委书记
  • 饶权已任国家文物局局长
  • 精准滴灌“种企业”,苏南强县常熟新的进阶密码