1

我目前正在四个节点上测试 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 多主机复制不是很可靠。

4

1 回答 1

4

我们对 OpenLDAP multi master 的经验是,它在 2 个 ldap 节点上是可靠的。使用 3 个(可能还有更多节点)复制在一点压力下就会出错。因此,我们可以使用 Apache JMeter 作为测试工具来重现这一点。主要是删除动作给了问题。

在 2 个节点的情况下,Apache JMeter 测试完全没有引起复制问题,随后在测试计划中添加、读取、更改和删除多达 8000 个条目的负载。

于 2017-05-01T07:27:55.233 回答