首页 > 其他分享 >Docker安装Open LDAP并启用syncrepl镜像同步

Docker安装Open LDAP并启用syncrepl镜像同步

时间:2022-08-24 09:45:25浏览次数:78  
标签:dn cn com dc openldap LDAP Docker Open

简单介绍如何快速通过docker启动openldap服务,并通过syncrepl机制实现目录数据的镜像复制。本文只涉及关键步骤,相关技术的入门请移步入门教程。所有本文的配置和脚本只针对bitnami/openldap镜像,并不一定具备通用性,请根据实际项目的openldap版本做对应的修改。在开始配置同步之前请确保各个节点的时间和外部导入的schema是同步并一致的。

 

本文使用的镜像:

https://hub.docker.com/r/bitnami/openldap

本文使用的ldap管理工具:

https://directory.apache.org/studio/

很强大的ldap管理工具,本地安装即可,很方便地操作ldap的数据和导入或导出ldif文件。

 

启动openldap服务

先拉取最新版本的openldap镜像并推送到本地集群中。然后通过docker stack deploy命令或其他UI工具(Portainer)启动openldap服务。

version: '3.6'
services:
  openldap-01:
    image: cluster2:5000/bitnami/openldap:2.6.1
    volumes:
        - /data/docker/website/mes/openldap/data:/bitnami/openldap
    ports:
      - target: 1389
        published: 1389
        protocol: tcp
        mode: host
    environment:
      - LDAP_ADMIN_USERNAME=admin
      - LDAP_ADMIN_PASSWORD=admin
      - LDAP_CONFIG_ADMIN_ENABLED=yes
      - LDAP_CONFIG_ADMIN_USERNAME=admin
      - LDAP_CONFIG_ADMIN_PASSWORD=admin
      - LDAP_ROOT=dc=demo,dc=com
      - LDAP_ALLOW_ANON_BINDING=no
      - LDAP_USER_DC=people
    deploy:
        replicas: 1
        placement:
            constraints: [node.labels.openldap == 01]
            
  openldap-02:
    image: cluster2:5000/bitnami/openldap:2.6.1
    volumes:
        - /data/docker/website/mes/openldap/data:/bitnami/openldap
    ports:
      - target: 1389
        published: 1389
        protocol: tcp
        mode: host
    environment:
      - LDAP_ADMIN_USERNAME=admin
      - LDAP_ADMIN_PASSWORD=admin
      - LDAP_CONFIG_ADMIN_ENABLED=yes
      - LDAP_CONFIG_ADMIN_USERNAME=admin
      - LDAP_CONFIG_ADMIN_PASSWORD=admin
      - LDAP_ROOT=dc=demo,dc=com
      - LDAP_ALLOW_ANON_BINDING=no
      - LDAP_USER_DC=people
    deploy:
        replicas: 1
        placement:
            constraints: [node.labels.openldap == 02]

以上配置启动了两个openldap实例,openldap-01和openldap-02。

根dc:dc=demo,dc=com

管理员dn:cn=admin,dc=demo,dc=com

管理员密码:admin

配置管理员:cn=admin,cn=config

配置管理员密码:admin

服务启动成功后就可以用通过以上凭证访问ldap服务。其中管理员用于管理目录服务,配置管理用于管理config和schema等配置相关的内容。

 

启用syncrepl镜像同步

为每一个openldap服务添加同步用的用户

需要使用管理账号登录,分别在01和02节点导入以下配置。

syncrepl_user.ldif

version: 1

dn: uid=rpuser,ou=people,dc=demo,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: simpleSecurityObject
objectClass: shadowAccount
objectClass: inetOrgPerson
cn: rpuser
sn: rpuser
uid: rpuser
userPassword: {SSHA}oBWZtlM7e3CbUagQeUPqkVeFUmg2+4liXvRfVQ==

用户dn:rpuser,ou=people,dc=demo,dc=com"

密码:rpuser

 

节点openldap-01的配置

需要使用配置管理账号登录,在01节点导入以下配置。

syncrepl_01.ldif

#enable syncprov module
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /opt/bitnami/openldap/lib/openldap
olcModuleLoad: syncprov.so

#enable syncprov for every folder
dn: olcOverlay=syncprov,olcDatabase={2}mdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionlog: 100

#unlimit fetch size
dn: cn=config
changetype: modify
replace: olcSizeLimit
olcSizeLimit: 10000

#set server id
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1

#syncrepl directive
dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldap://openldap-02:1389/
  bindmethod=simple
  binddn="uid=rpuser,ou=people,dc=demo,dc=com"
  credentials=rpuser
  searchbase="dc=demo,dc=com"
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="5 +"
  interval=00:00:30:00
-
add: olcMirrorMode
olcMirrorMode: TRUE

 

节点openldap-02的配置

需要使用配置管理账号登录,在01节点导入以下配置。

syncrepl_02.ldif

#enable syncprov module
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /opt/bitnami/openldap/lib/openldap
olcModuleLoad: syncprov.so

#enable syncprov for every folder
dn: olcOverlay=syncprov,olcDatabase={2}mdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionlog: 100

#unlimit fetch size
dn: cn=config
changetype: modify
replace: olcSizeLimit
olcSizeLimit: 10000

#set server id
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 2

#syncrepl directive
dn: olcDatabase={2}mdb,cn=config
changetype: modify
replace: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldap://openldap-01:1389/
  bindmethod=simple
  binddn="uid=rpuser,ou=people,dc=demo,dc=com"
  credentials=rpuser
  searchbase="dc=demo,dc=com"
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="5 +"
  interval=00:00:30:00
-
add: olcMirrorMode
olcMirrorMode: TRUE

节点1和节点2的配置区别在Server ID和同步的提供者不一样。该脚本设置了搜索的大小限制为10000,从dc=demo,dc=com搜索并同步数据,每30秒同步一次,失败会在5秒后重试。请根据实际的环境和项目要求进行修改。

 

遇到的问题

错误1:

rid=001 LDAP_RES_SEARCH_RESULT (4) Size limit exceeded
rid=001 (4) Size limit exceeded

错误描述:同步过程中发生的错误,同步了部分数据后达到了最大的大小限制而停止,一般默认是500。

解决办法:把以下指令保存成.ldif文件导入或执行。

dn: cn=config
changetype: modify
replace: olcSizeLimit
olcSizeLimit: 10000

 

参考

 

转载请注明出处: https://www.cnblogs.com/keitsi/p/16618565.html

标签:dn,cn,com,dc,openldap,LDAP,Docker,Open
From: https://www.cnblogs.com/keitsi/p/16618565.html

相关文章

  • docker中的mysql中文乱码解决办法
    博主最近在做谷粒商城,因为要使用docker安装mysql,但是由于安装的时候没有指定mysql的数据库的utf8格式,导致插入的时候就出现了中文是问号的情况,到处百度终于解决,于是打......
  • OpenCV CMake VSCode Windows 平台下运行配置及其解决方案
    前言最近在搞计算机图形学相关的东西,有个demo用到了opencv,找了google一圈,发现国内都没有比较好的配置和解决的办法,要不就是几年前的教程,最近正好踩坑完,其中经历了自......
  • docker 学习第一篇 Linux 安装docker
    1、下载docker,下载地址https://docs.docker.com/engine/install/centos/2、卸载旧的docker,sudoyumremovedocker\docker-client\......
  • IOS OpenGL ES 波浪特效
    目录一.OpenGLES波浪特效效果演示1.原始图片2.效果演示二.OpenGLES波浪特效源码下载三.猜你喜欢零基础OpenGLES学习路线推荐:OpenGLES学习目录>>......
  • 标准IO-fopen-fclose
    函数type参数打开方式关闭......
  • opencv-python常用函数
    一、安装pipinstallopencv-python二、图像读写cv2.imread(path,flag)返回值类型:np.ndarraycv2.imwrite(filename,image)三、常用绘图cv2.rectangle(image,......
  • 3090服务器构建docker
    dockerbuild-f/data1/home/liyuanzhou/ubuntu/dockerfile-tliyz_yolo:666.使用dockerfile构建镜像FROMnvcr.io/nvidia/pytorch:21.10-py3RUNaptupdate&&apt......
  • Docker部署jenkins
    https://www.cnblogs.com/hiyong/p/14405561.html1.下载Image[root@server/]#dockerpulljenkins/jenkinsUsingdefaulttag:latestlatest:Pullingfromjenkin......
  • docker compose ipv6的处理
    简介:dockercompose是我常用的容器编排工具,至今没有升级到K8S,汗那么compose的yaml配置的容器如何互联呢?常见的恐怕就是上次折腾nginx的那一次了。一个nginx,反向代理a......
  • ubantu16.04,docker-ce-17.09,docker runc容器逃逸漏洞(CVE-2021-30465)修复
    背景ubantu16.04TLSdocker-ce-17.09.1(比较老的版本可能都有这个漏洞,而且dockerversion查不到runc版本,也没有runc文件,只有docker-runc一个文件)解决方案下载对接系统......