Docker+Openldap 主从复制

Docker + Openldap 实现主从复制

文档目的:
网络上大部分都是在一台服务器上安装多个Docker Openldap 来实现主从复制,如果单台服务器出现故障呢?服务器硬盘出现故障?网络不可访问?那岂不是没有任何意义?所以本文档实现方式在多台服务器上安装 Docker Openldap 来实现跨服务器主从,并且可以加上高可用。
文档风格:
简单、粗暴,按照文档步骤即可实现部署完成并投入使用。

Docker Openldap 安装

  • 安装 docker

    此处不做过多说明,网络上很多文档随便搜一篇

  • 部署 OpenLdap<简单说就是启动 openldap docker 进行,但是要做细微的配置>

此处对参数如果不是很了解的话,可以移步到本博客内有关 LDAP 的说明及独立部署文档查看

# 多节点使用同样的配置进行启动即可
 docker run \
    --env LDAP_ORGANISATION="Magic Inc." \  # 指定组织名称
    --env LDAP_DOMAIN="${LDAP_DOMAIN}" \  # LDAP Domain
    --env LDAP_BASE_DN="dc=magic,dc=com" \  # LDAP BASE DN
    --env LDAP_ADMIN_PASSWORD="${MASTER_LDAP_PWD}" \  # 自定义 LDAP 管理员密码
    --env LDAP_CONFIG_PASSWORD="conf1g" \  # 自定义配置文件密码
    --env LDAP_READONLY_USER="false" \  # 是否添加只读用户
    --env LDAP_RFC2307BIS_SCHEMA="false" \  # 使用RFC2307BIS架构而不是NIS架构
    --env LDAP_BACKEND="mdb" \  # 数据库类型
    --env LDAP_TLS="false" \  # 关闭 TLS 认证
    -p 389:389 \
    --name ${LDAP_CONTAINER_NAME} \
    --detach ${LDAP_NAME}:${LDAP_VERSION}

Docker OpenLdap 主从配置

  • 配置主从
      1. 主节点配置

      在master上启用添加syncprov模块来实现主从复制功能点,通过ldif文件来增加syncprov模块,无需重启ldap server

      cat mod_syncprov.ldif
      dn: cn=module{0},cn=config
      changetype: modify
      add: olcModuleLoad
      olcModuleload: syncprov.la
      
      $ 应用配置
      docker cp mod_syncprov.ldif ${LDAP_CONTAINER_NAME}:/
      docker exec ${LDAP_CONTAINER_NAME} ldapadd -Y EXTERNAL -H ldapi:/// -f /mod_syncprov.ldif
      

      生成 syncprov 配置

      cat syncprov.ldif
      # 此处注意如果你启动指定的数据库类型 dbd,此处要更改为 dbd
      dn: olcOverlay=syncprov,olcDatabase={1}mdb,cn=config
      objectClass: olcOverlayConfig
      objectClass: olcSyncProvConfig
      olcOverlay: syncprov
      olcSpCheckpoint: 100 10
      olcSpSessionLog: 100
      
      $ docker cp syncprov.ldif ${LDAP_CONTAINER_NAME}:/
      $ docker exec ${LDAP_CONTAINER_NAME} ldapadd -Y EXTERNAL -H ldapi:/// -f /syncprov.ldif
      
      1. 从节点配置

      生成syncrepl配置

      dn: olcDatabase={1}mdb,cn=config
      changetype: modify
      add: olcSyncRepl
      olcSyncRepl: rid=002    
        provider=ldap://192.168.1.153:389/
        bindmethod=simple
        binddn="cn=admin,dc=magic,dc=com"
        credentials=123456
        searchbase="dc=magic,dc=com"
        scope=sub
        schemachecking=on
        type=refreshAndPersist
        retry="5 5 300 +"
        attrs="*,+"
      
      $ docker cp syncrepl.ldif ${LDAP_CONTAINER_NAME}:/
      $ docker exec ${LDAP_CONTAINER_NAME} ldapadd -Y EXTERNAL -H ldapi:/// -f /syncrepl.ldif
      
      • provider:主服务器
      • bindmethod:绑定协议
      • binddn:管理员用户,登录dn
      • credentials:管理用户密码,登录密码
      • searchbase:选择要同步的独立域,根节点
      • scope:设置所有的条目匹配
      • schemachecking:设置同步更新时间检测
      • type:同步模式为(refreshOnly:同步模式为拉,拒绝修改)
      • retry:同步更新重试次数和时间刚开始的5秒重试5次,以后每300秒重试一次
      • attrs:复制全部属性

Docker Openldap 主从验证

  • 主节点添加用户
cat new_user.ldif
# test2, magic.com
dn: cn=test2,dc=magic,dc=com
sn: lab_user
uid: test2
mail: test2@qq.com
objectClass: inetOrgPerson
objectClass: mailAccount
objectClass: uidObject
cn: test2
userPassword:: e1NTSEF9RFA5YVZhTTE3U0tMZnpMd2JvT1EyZzZIRm90M0IrS0E=

$ docker cp new_user.ldif openldap_cluster_1:/new_user.ldif
$ docker exec openldap_cluster_1 ldapadd -Y EXTERNAL -H ldapi:/// -f/new_user.ldif
  • 从节点验证用户是否同步
docker exec ${LDAP_CONTAINER_NAME} ldapsearch -x -H ldap://127.0.0.1 -b dc=magic,dc=com -D "cn=admin,dc=magic,dc=com" -w a876814e38f3d1e67879cad69c984317
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值