我正在寻找一些ApacheDS多主解决方案的帮助。我对LDAP解决方案的设置并不熟悉,所以我很可能犯了一些非常基本的错误。
我有两个CentOS VM正在运行-- LDAP1和LDAP2。每个VM都有一个正在运行的ApacheDS解决方案。LDAP1在端口10389上运行ApacheDS,LDAP2在端口10399上运行ApacheDS。
我可以使用连接到两个服务器,没有任何问题,并且可以看到默认的结构。
然后,我将SevenSeas结构导入到LDAP1中,并通过取消/instances/default/conf/log4j.properties中的行注释,为LDAP1和LDAP2启用了用于复制的调试。
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.SyncReplRequestHandler2)然后通过导入与上面相同的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 successfully5)然后在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=SevenSeas6)然后在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=SevenSeas7)然后尝试重新启动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 successfully11)然后登录到LDAP2,没有看到分区o=SevenSeas --在我看来,这个分区的复制不起作用?我错过了舞台吗?
更新--我已经在这方面取得了一些进展。在使用工具时,我无意中发现了Server配置选项卡(右键单击LDAP连接)。标签中有一个复制选项卡。这允许您添加消费者。在LDAP1上,我添加了一个指向LDAP2的使用者,在LDAP2上添加了一个消费者,指向LDAP1,其中BASEDN是ou=system。消费者ID似乎需要匹配在第5点/6中给出的ID。
然后,我重新启动了两个LDAP服务器。
当服务器重新启动时,我可以看到它们正在互相交谈(通过调试)。我在LDAP1上对LDAP1分区进行了编辑,并将其复制到LDAP2中。我在LDAP2上对LDAP2分区进行了编辑,并将其复制到LDAP1中。
我现在的问题是,无论使用者配置中的基本DN是什么,我都不能复制其他分区。
发布于 2014-10-24 14:52:59
我想我们今天在同一时间开始研究同一个问题。当您将分区的缓存设置为1000时,对自定义分区的复制似乎有效。
https://stackoverflow.com/questions/26543958
复制相似问题