ApacheDS Multi Master配置

时间:2014-10-24 08:15:49

标签: apache apacheds

我正在寻找ApacheDS Multi Master解决方案的帮助。 我是设置LDAP解决方案的新手,因此我很可能会犯一些非常基本的错误。

我有两台CentOS VM正在运行 - LDAP1和LDAP2。每个VM都有一个运行的ApacheDS解决方案。 LDAP1在端口10389上运行ApacheDS,LDAP2在端口10399上运行ApacheDS。

我可以使用Apache Directory Studio连接到两台服务器,没有任何问题,可以看到列出的默认结构。

然后我将SevenSeas结构导入LDAP1,并通过取消注释,为LDAP1和LDAP2启用DEBUG进行复制 /instances/default/conf/log4j.properties

中的行

log4j.logger.org.apache.directory.server.PROVIDER_LOG = DEBUG log4j.logger.org.apache.directory.server.CONSUMER_LOG = DEBUG

然后我尝试按照本指南创建MultiMaster配置:http://joacim.breiler.com/apacheds/ch08s02.html

1)我通过导入以下LDIF

在LDAP1上启用复制处理程序
dn: ads-serverId=ldapServer,ou=servers,ads-directoryServiceId=default,ou=config 
changetype: modify 
add: ads-replReqHandler 
ads-replReqHandler: org.apache.directory.server.ldap.replication.provider.SyncReplRequestHandler

2)然后我通过导入与上面相同的LDIF

在LDAP2上启用复制处理程序

3)然后我重新启动LDAP1和LDAP2 ApacheDS服务器。

4)服务器重新启动后,检查apacheDS.log并查看以下条目(在LDAP1和LDAP2上)

[08:41:28] DEBUG [org.apache.directory.server.PROVIDER_LOG] - initializing the syncrepl provider
[08:41:28] DEBUG [org.apache.directory.server.PROVIDER_LOG] - Starting the replication consumer manager
[08:41:28] DEBUG [org.apache.directory.server.PROVIDER_LOG] - no replica logs found to initialize
[08:41:28] DEBUG [org.apache.directory.server.PROVIDER_LOG] - syncrepl provider initialized successfully

5)然后我在LDAP2上导入以下LDIF(没有生成错误)

dn: ads-replConsumerId=1,ou=replConsumers,ads-serverId=ldapServer,ou=servers,ads-directoryServiceId=default,ou=config 
objectClass: ads-base 
objectClass: ads-replConsumer 
objectClass: top 
ads-replAliasDerefMode: never 
ads-replAttributes: * 
ads-replConsumerId: 1 
ads-replProvHostName: ldap1
ads-replProvPort: 10389 
ads-replRefreshInterval: 60000 
ads-replRefreshNPersist: true 
ads-replSearchFilter: (objectClass=*) 
ads-replSearchScope: sub 
ads-replSearchSizeLimit: 0 
ads-replSearchTimeOut: 0 
ads-replUserDn: uid=admin,ou=system 
ads-replUserPassword:: c2VjcmV0 
ads-searchBaseDN: o=SevenSeas

6)然后我在LDAP1上导入以下LDIF

dn: ads-replConsumerId=2,ou=replConsumers,ads-serverId=ldapServer,ou=servers,ads-directoryServiceId=default,ou=config 
objectClass: ads-base 
objectClass: ads-replConsumer 
objectClass: top 
ads-replAliasDerefMode: never 
ads-replAttributes: * 
ads-replConsumerId: 2 
ads-replProvHostName: ldap2
ads-replProvPort: 10399 
ads-replRefreshInterval: 60000 
ads-replRefreshNPersist: true 
ads-replSearchFilter: (objectClass=*) 
ads-replSearchScope: sub 
ads-replSearchSizeLimit: 0 
ads-replSearchTimeOut: 0 
ads-replUserDn: uid=admin,ou=system 
ads-replUserPassword:: c2VjcmV0 
ads-searchBaseDN: o=SevenSeas

7)然后我尝试重新启动LDAP1和LDAP2 apacheDS服务器,并在两台服务器上遇到以下错误。 (在ApacheDS.log中报告

08:52:42] ERROR [org.apache.directory.server.config.ConfigPartitionReader] - An error occured while reading the configuration DN 'ou=replConsumers,ads-serverId=ldapServer,ou=servers,ads-directoryServiceId=default,ou=config' for the objectClass 'ads-replConsumer':
ERR_04274 Can't find an OID for the name ads-base
[08:52:42] ERROR [org.apache.directory.server.UberjarMain] - Failed to start the service.
org.apache.directory.server.config.ConfigurationException: An error occured while reading the configuration DN 'ou=replConsumers,ads-serverId=ldapServer,ou=servers,ads-directoryServiceId=default,ou=config' for the objectClass 'ads-replConsumer':
ERR_04274 Can't find an OID for the name ads-base
        at org.apache.directory.server.config.ConfigPartitionReader.read(ConfigPartitionReader.java:641)
        at org.apache.directory.server.config.ConfigPartitionReader.read(ConfigPartitionReader.java:600)
        at org.apache.directory.server.config.ConfigPartitionReader.read(ConfigPartitionReader.java:600)
        at org.apache.directory.server.config.ConfigPartitionReader.readConfig(ConfigPartitionReader.java:754)
        at org.apache.directory.server.config.ConfigPartitionReader.readConfig(ConfigPartitionReader.java:718)
        at org.apache.directory.server.config.ConfigPartitionReader.readConfig(ConfigPartitionReader.java:690)
        at org.apache.directory.server.ApacheDsService.start(ApacheDsService.java:177)
        at org.apache.directory.server.UberjarMain.start(UberjarMain.java:76)
        at org.apache.directory.server.UberjarMain.main(UberjarMain.java:54)

8)然后我将配置恢复到导入之前以允许我重新启动服务器

9)如果我从第5/6点使用的LDIF中删除以下行,我就可以启动服务器。

objectClass: ads-base  

10)调试(在LDAP1和LDAP2上)反映出复制正在运行

[09:02:31] DEBUG [org.apache.directory.server.PROVIDER_LOG] - initializing the syncrepl provider
[09:02:31] DEBUG [org.apache.directory.server.PROVIDER_LOG] - Starting the replication consumer manager
[09:02:31] DEBUG [org.apache.directory.server.PROVIDER_LOG] - no replica logs found to initialize
[09:02:31] DEBUG [org.apache.directory.server.PROVIDER_LOG] - syncrepl provider initialized successfully

11)然后我登录LDAP2并且看不到分区o = SevenSeas - 对我说哪个复制还没有起作用?我错过了一个舞台吗?

更新 我已经能够在这方面取得更多进展。在使用Apache Directory Studio工具时 - 我偶然发现了服务器配置选项卡(右键单击LDAP连接)。选项卡中包含“复制”选项卡。 这允许您添加消费者。在LDAP1上,我添加了一个使用者指向LDAP2,在LDAP2上我添加了一个使用者指向LDAP1,其中BASEDN是ou = system。消费者ID似乎需要与第5/6点中给出的ID相匹配。

然后我重启了两台LDAP服务器。

当服务器重新启动时,我可以看到他们正在相互通话(通过调试)。我对LDAP1上的ou_system分区进行了编辑,并将其复制到LDAP2。我对LDAP2上的ou = system分区进行了编辑,并将其复制到LDAP1。

我现在的问题是我无法复制其他分区 - 无论消费者配置中的BASE DN是什么。

1 个答案:

答案 0 :(得分:1)

我想我们今天同时开始处理同一个问题。当您为分区设置缓存为1000时,复制到自定义分区似乎有效。