我目前正在四个节点上测试 OpenLDAP 多主机复制,但我遇到的问题很少。
我遵循本教程:setup-openldap-multi-master-replication-centos-7并成功配置了四节点多主机复制。
如果所有节点都处于活动状态,则一切正常,数据将在所有四个节点之间复制。即使我停止一个/两个/三个节点,仅在生命节点上进行一些更改,当它们重新启动时,数据也会复制到节点。
但问题是,如果我在节点 ldap1、ldap2 和 ldap3 上停止并启动 slapd 服务,而我在节点 ldap4 上进行一些“多次”更改。
我遇到问题的一种情况:在一个节点上我启动脚本,用于在 ldap 中插入用户
for (( i=1; i<=5000; i++ )); do
> addUser.ldif
echo "
dn: uid=ldaptest$i,ou=People,dc=test,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: ldaptest
uid: ldaptest
uidNumber: 9988
gidNumber: 100
homeDirectory: /home/ldaptest
loginShell: /bin/bash
gecos: LDAP Replication Test User
userPassword: {crypt}x
shadowLastChange: 17058
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
" >> addUser.ldif
ldapadd -x -w xxxxx-D "cn=Manager,dc=test,dc=com" -f addUser.ldif
done
所有用户现在都在所有数据库中 - 一切都是同步的。
然后在一个节点上,我启动删除用户的脚本:
for (( i=1; i<=5000; i++ )); do
echo $i
ldapdelete -w xxxxx-D "cn=Manager,dc=test,dc=com" -x "uid=ldaptest$i,ou=People,dc=test,dc=com"
done
那时我在其他三个节点上停止/启动/停止/启动 slapd 服务。脚本删除完成后,ldap 数据库不再同步。
命令ldapsearch -x cn=ldaptest -b dc=test,dc=com |grep numEntries
返回:
ldap1: numEntries: 648
ldap4: numEntries: 0 (node where script was running)
ldap3: numEntries: 5
ldap2 numEntries: 24
这种行为对于 LDAP 是正常的还是我的配置有问题?
过程与教程中的相同,我只是添加了其他 olcSyncRepl 条目进行复制。就像是:
[root@ratitovec bkal]# cat ldap04_2.ldif
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=004
provider=ldap://192.168.26.180:389/
bindmethod=simple
binddn="cn=Manager,dc=test,dc=com"
credentials=iskratel
searchbase="dc=test,dc=com"
scope=sub
schemachecking=on
type=refreshAndPersist
retry="30 5 300 3"
interval=00:00:01:00
-
[root@ratitovec bkal]# ldapadd -Y EXTERNAL -H ldapi:/// -f ldap04_2.ldif
我的第一印象是,如果在我们在 ldap db 中插入或删除数据时重新启动节点,则 ldap 多主机复制不是很可靠。