我目前正在四个节点上测试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多主机复制不是很可靠。
答案 0 :(得分:2)
我们使用OpenLDAP多主机的经验是,它具有2个ldap节点是可靠的。有3个(可能还有更多的节点)复制在一点压力下出错了。因此,我们可以使用Apache JMeter作为测试工具重现这一点。主要是删除操作给出了问题。
对于2个节点,Apache JMeter测试完全没有问题,复制时最多可以添加,读取,更改和删除多达8000个条目作为测试计划中的操作。