当前位置: 首页 > 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
http://www.xdnf.cn/news/181819.html

相关文章:

  • 【KWDB创作者计划】_企业级多模数据库实战:用KWDB实现时序+关系数据毫秒级融合(附代码、性能优化与架构图)
  • OpenGl ES 3.0 笔记一:初步概念
  • 4.27 JavaScript核心语法+事件监听
  • 小球在摆线上下落的物理过程MATLAB代码
  • NL2SQL调研
  • 抗体品牌及产品介绍
  • 【三大特性】对象模型
  • 前端开发资源缓存策略
  • 全球城市范围30米分辨率土地覆盖数据(1985-2020)
  • 信奥赛之c++基础(常用数学函数)
  • 显存在哪里看 分享查看及优化方法
  • Milvus如何实现关键词过滤和向量检索的混合检索
  • 文本向量化
  • 深入解析Promise:从基础原理到async/await实战
  • 4月27日星期日今日早报简报微语报早读
  • 牟乃夏《ArcGIS Engine地理信息系统开发教程》学习笔记3-地图基本操作与实战案例
  • 二叉树遍历(C语言版)
  • 解决升级WIN11(WINSERVER2025)后 远程桌面内 部分内容 显示 花屏 替换文件
  • 【Luogu】动态规划六
  • Python中数据切片操作详解和代码示例
  • AI实战SEO关键词优化法
  • 【视频生成模型】通义万相Wan2.1模型本地部署和LoRA微调
  • 初中级前端面试全攻略:自我介绍模板、项目讲解套路与常见问答
  • LeetCode42_接雨水
  • 杭电oj(1010、1015、1241)题解
  • 【数据可视化-39】2009-2019年亚马逊50大畅销书数据集可视化分析
  • 迷你世界UGC3.0脚本Wiki世界模块管理接口 World
  • Mysql中隐式内连接和显式内连接的区别
  • (26)VTK C++开发示例 ---将点坐标写入PLY文件
  • linux:进程的替换