文档目的:
网络上大部分都是在一台服务器上安装多个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 主从配置
- 配置主从
-
- 主节点配置
在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
-
- 从节点配置
生成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:复制全部属性
-
- 主节点添加用户
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)