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

Ldap高效数据同步- Delta-Syncrepl复制模式配置实战手册(上)

#作者:朱雷

文章目录

  • 一、Syncrepl 和Delta-syncrepl 回顾对比
    • 1.1. 什么是复制模式
    • 1.2. 什么是 syncrepl同步复制
    • 1.3. syncrepl同步复制的缺点
    • 1.4. 什么是Delta-syncrepl 复制
  • 二、Ldap环境部署
  • 三、配置复制类型
    • 3.1. 编译安装
    • 3.2. 提供者端配置

一、Syncrepl 和Delta-syncrepl 回顾对比

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. syncrepl同步复制的缺点

syncrepl 同步复制是一种基于对象的复制机制。当提供程序上复制对象中的任何属性值发生更改时,每个消费者都会获取并处理完整的更改对象,包括复制期间更改和未更改的属性值。这种方法的一个优点是,当单个对象发生多项更改时,无需保留这些更改的精确顺序;只有条目的最终状态才重要。但是,当使用模式涉及对多个对象的单次更改时,这种方法可能会存在缺陷。

例如,假设您的数据库包含 102,400 个对象,每个对象大小为 1 KB。此外,假设您定期运行一个批处理作业来更改提供程序上这 102,400 个对象中每个对象中出现的单个双字节属性值。不计算 LDAP 和 TCP/IP 协议开销,每次运行此作业时,每个消费者将传输并处理100 MB数据来处理200 KB 的更改!

在这种情况下,99.98% 的传输和处理数据都是冗余的,因为这些数据代表了未发生改变的值。这浪费了宝贵的传输和处理带宽,并可能导致不可接受的复制积压。虽然这种情况比较极端,但它确实揭示了某些 LDAP 部署中经常遇到的一个问题。

1.4. 什么是Delta-syncrepl 复制

Delta-syncrepl 是一种基于变更日志的 syncrepl 变体,旨在解决syncrepl同步复制的缺点。
Delta-syncrepl 的工作原理是在提供程序上的单独数据库中维护可选深度的变更日志。复制消费者会检查变更日志以查找所需的更改,只要变更日志包含所需的更改,消费者就会从变更日志中获取更改并将其应用于其数据库。但是,如果消费者的同步程度太低(或完全为空),则使用常规 syncrepl 使其保持最新状态,然后复制将切换回 delta-syncrepl 模式。

二、Ldap环境部署

主机node版本IP备注
ldap-02.4.44192.168.1.129主节点/提供者端
ldap-12.4.44192.168.1.130从节点/消费者端

三、配置复制类型

3.1. 编译安装

要启用Delta-syncrepl 复制模式需要在编译软件时启用如下模块:

./configure CPPFLAGS="-I/usr/local/BerkeleyDB.5.1/include -D_GNU_SOURCE" LDFLAGS="-L/usr/local/BerkeleyDB.5.1/lib" --enable-syslog=yes --enable-debug=yes --enable-dynamic=yes --enable-modules=yes --enable-overlays=yes

报错安装:

checking for ltdl.h... no
configure: error: could not locate libtool ltdl.h
rpm -qa | grep libtool-ltdl
yum install -y libtool-ltdl libtool-ltdl-devel

编译安装:

make depend
make 
make test
make install

安装结果:

[root@ldap-0 openldap-2.4.44]# echo $?
0
[root@ldap-0 openldap-2.4.44]# ll /usr/local/libexec/
total 2.0M
drwxr-xr-x 2 root root 4.0K Dec 25 10:44 openldap
-rwxr-xr-x 1 root root 2.0M Dec 25 14:35 slapd
[root@ldap-0 openldap-2.4.44]# ll /usr/local/libexec/openldap/
total 0
[root@ldap-0 openldap-2.4.44]# ll /usr/local/sbin/sl*  -rth
lrwxrwxrwx 1 root root 16 Dec 25 14:35 /usr/local/sbin/slapadd -> ../libexec/slapd
lrwxrwxrwx 1 root root 16 Dec 25 14:35 /usr/local/sbin/slapcat -> ../libexec/slapd
lrwxrwxrwx 1 root root 16 Dec 25 14:35 /usr/local/sbin/slapdn -> ../libexec/slapd
lrwxrwxrwx 1 root root 16 Dec 25 14:35 /usr/local/sbin/slapindex -> ../libexec/slapd
lrwxrwxrwx 1 root root 16 Dec 25 14:35 /usr/local/sbin/slappasswd -> ../libexec/slapd
lrwxrwxrwx 1 root root 16 Dec 25 14:35 /usr/local/sbin/slaptest -> ../libexec/slapd
lrwxrwxrwx 1 root root 16 Dec 25 14:35 /usr/local/sbin/slapauth -> ../libexec/slapd
lrwxrwxrwx 1 root root 16 Dec 25 14:35 /usr/local/sbin/slapacl -> ../libexec/slapd
lrwxrwxrwx 1 root root 16 Dec 25 14:35 /usr/local/sbin/slapschema -> ../libexec/slapd

3.2. 提供者端配置

[root@ldap-0 openldap]# egrep -v '^$|#' /usr/local/etc/openldap/slapd.conf
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
loglevel        -1# 模块配置
modulepath	/usr/local/libexec/openldap
moduleload back_mdb.la
moduleload accesslog.la
moduleload syncprov.la#同步数据库配置
database mdb
suffix cn=accesslog
rootdn cn=accesslog
directory /usr/local/var/openldap-delta-data
maxsize 85899345920
index default eq
index entryCSN,objectClass,reqEnd,reqResult,reqStart,reqDN#启用 syncprov 覆盖层模块,用于支持 LDAP 服务器的增量同步功能
overlay syncprov
#禁用同步过程中的“Present”阶段(默认行为),仅同步新增、修改或删除操作。此值仅应针对日志数据库(例如由 accesslog overlay 管理的数据库)之上的 syncprov 实例设置为 TRUE。默认值为 FALSE
syncprov-nopresent TRUE
#使用 accesslog 覆盖层实现基于增量的 syncrepl 复制支持时,必须将其设置为 TRUE。默认值为 FALSE
syncprov-reloadhint TRUE# 主数据库定义
database	mdb
maxsize		1073741824
suffix		"dc=zltest,dc=com"
rootdn		"cn=admin,dc=zltest,dc=com"
rootpw		{SSHA}qKw4zhjOu7o+fpSCOUuMMnviWRavEdK0
directory	/usr/local/var/openldap-data
index objectclass,entryCSN,entryUUID eq# syncrepl Provider for primary db
overlay syncprov
#用于控制OpenLDAP同步提供者(Provider)的变更日志检查点机制,通过‌操作数量‌和‌时间间隔‌两个维度触发日志截断与持久化:
#	2: 每累积 ‌2次写操作‌ 后触发检查点,将未提交的日志数据写入磁盘
#	1: 每隔 ‌1秒‌ 强制触发一次检查点,无论操作数是否达到阈值‌
syncprov-checkpoint 2 1
#accesslog overlay definitions for primary db
overlay accesslog
logdb cn=accesslog
logops writes
logsuccess TRUE
#每天扫描访问日志数据库,并清除超过 7 天的条目
logpurge 07+00:00 01+00:00

相关文章:

  • 第 4 篇:平稳性 - 时间序列分析的基石
  • Github 热点项目 Jumpserver开源堡垒机让服务器管理效率翻倍
  • 前端笔记-Axios
  • 云原生与AI的关系是怎么样的?
  • Unreal Engine中FRotator与FQuat在赛车游戏方向盘控制中的协同应用解析
  • Android Kotlin+Compose首个应用
  • SpringBoot整合JWT Token:构建安全无状态认证体系的最佳实践
  • 把dll模块注入到游戏进程的方法_远线程注入
  • 目标检测篇---R-CNN梳理
  • linux驱动框架——i2c驱动模块的probe过程
  • 重构便携钢琴专业边界丨特伦斯便携钢琴V30Pro定义新一代便携电钢琴
  • 120.在 Vue3 中使用 OpenLayers 实现清空删除所有图层功能
  • AI驱动下的企业学习:人力资源视角下的范式重构与价值觉醒
  • 【数据结构和算法】3. 排序算法
  • java多线程的内存可见性问题,volatile是干什么的?
  • 基于Python(Django)+SQLite实现(Web)校园助手
  • Time to event :Kaplan-Meier曲线、Log Rank检验与Shiny R
  • 线上地图导航小程序源码介绍
  • django入门
  • 介绍XML
  • 对话地铁读书人|豪宅房产经纪人:读书使我免于抑郁
  • 机器人马拉松背后的五大启示:未来社会与机器人的深度融合
  • 商务部:中国加快推进服务业扩大开放综合试点为世界注入更多确定性
  • 文化中国行|1500年水镇枫泾有座丁聪美术馆
  • 一周人物| 萨韦利上海画展,陆永安“从董源到塞尚”
  • 玉渊谭天丨先爆视频再爆订单,美关税影响下企业因短视频火出圈