首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ApacheDS多主配置

ApacheDS多主配置
EN

Stack Overflow用户
提问于 2014-10-24 08:15:48
回答 1查看 3.1K关注 0票数 3

我正在寻找一些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上启用复制处理程序

代码语言:javascript
复制
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)

代码语言:javascript
复制
[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 (没有生成错误)

代码语言:javascript
复制
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

代码语言:javascript
复制
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报告)

代码语言:javascript
复制
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中删除以下行,则可以启动服务器。

代码语言:javascript
复制
objectClass: ads-base  

10)调试(在LDAP1和LDAP2上)反映了复制正在工作。

代码语言:javascript
复制
[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 --在我看来,这个分区的复制不起作用?我错过了舞台吗?

更新--我已经在这方面取得了一些进展。在使用工具时,我无意中发现了Server配置选项卡(右键单击LDAP连接)。标签中有一个复制选项卡。这允许您添加消费者。在LDAP1上,我添加了一个指向LDAP2的使用者,在LDAP2上添加了一个消费者,指向LDAP1,其中BASEDN是ou=system。消费者ID似乎需要匹配在第5点/6中给出的ID。

然后,我重新启动了两个LDAP服务器。

当服务器重新启动时,我可以看到它们正在互相交谈(通过调试)。我在LDAP1上对LDAP1分区进行了编辑,并将其复制到LDAP2中。我在LDAP2上对LDAP2分区进行了编辑,并将其复制到LDAP1中。

我现在的问题是,无论使用者配置中的基本DN是什么,我都不能复制其他分区。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-24 14:52:59

我想我们今天在同一时间开始研究同一个问题。当您将分区的缓存设置为1000时,对自定义分区的复制似乎有效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26543958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档