实现LDAP的主主复制

本文详细介绍如何在两台Sun LDAP服务器之间配置主主复制功能,确保任一服务器的数据更新都能同步到另一台服务器。文章提供了详细的命令及步骤说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 现有两台机器,分别是ldap-1.example.com和ldap-2.example.com,
 已经分别按照http://yang8787jie-126-com.iteye.com/admin/blogs/671693安装了端口为389的sun-ldap实例。
 现按照下面的步骤实现在两个实例间的主主复制,即修改任何一个实例中的数据,另一个实例中的数据同样会被修改。

 
 以下命令在机器ldap-1.example.com上进行操作:
 步骤一:
使用以下命令看是否已经配置了允许LDAP实例主主复制,
#./dsconf  list-suffixes -p 389 -v
SUFFIX_DN            entry-count  repl-role       repl-agmts  repl-priorities  indexes  encr-attrs 
-------------------  -----------  --------------  ----------  ---------------  -------  ---------- 
dc=zju,dc=edu,dc=cn          402  not-replicated         N/A              N/A       29           0

如果repl-role=not-replicated,则表示既没有启用主主复制也没有启用主从复制。
如果repl-role=consumer,表示已经启用主从复制,则需要先删除主从复制的设置,
使用命令./dsconf disable-repl -h ldap-1.example.com -p 389 dc=zju,dc=edu,dc=cn进行删除。
当然也可以使用升级命令或降级命令来实现,
详见dsconf的参数详见http://docs.sun.com/app/docs/doc/820-2767/dsconf-1m?l=zh_TW&a=view。


#./dsconf enable-repl -h ldap-1.example.com -p 389 -d 3891 master dc=zju,dc=edu,dc=cn
上面命令中-d后面跟的是REPL_ID的值,范围是1到65534,并且特别注意,绝对不能跟ldap-2.example.com上设置的REPL_ID相同。

否则,会出现如下情况:

[

[root@localhost bin]# ./dsconf init-repl-dest -h localhost -p 389 dc=zju,dc=edu,dc=cn ldap-2.example.com:389
Enter "cn=Directory Manager" password: 
Initialization of "ldap-2.example.com:389" failed
Server exit code: "810"
Server exit message: "Replication error initializing replica: Total update failed - Cons and supp RUV match"
The "init-repl-dest" operation failed on "localhost:389".

]
#./dsconf  list-suffixes -p 389 -v
 步骤三:
为LDAP实例修改复制管理器的密码:
#echo replmanager > pwd.txt
#cat pwd.txt
#./dsconf set-server-prop -h ldap-1.example.com -p 389 def-repl-manager-pwd-file:pwd.txt
 步骤五:
 为每个LDAP实例创建复制协议:
#./dsconf list-repl-agmts -h localhost -p 389 -v dc=zju,dc=edu,dc=cn
#./dsconf create-repl-agmt -h ldap-1.example.com -p 389 dc=zju,dc=edu,dc=cn ldap-2.example.com:389
#./dsconf list-repl-agmts -h localhost -p 389 -v dc=zju,dc=edu,dc=cn
 步骤七:
 初始化LDAP实例的复制协议:
#./dsconf show-repl-agmt-status -h ldap-1.example.com -p 389 dc=zju,dc=edu,dc=cn ldap-2.example.com:389
#./dsconf init-repl-dest -h ldap-1.example.com -p 389 dc=zju,dc=edu,dc=cn ldap-2.example.com:389

上面的命令运行后, 机器ldap-2.example.com上的389实例将被初始化跟 ldap-1.example.com上389实例一样
#./dsconf show-repl-agmt-status -h ldap-1.example.com -p 389 dc=zju,dc=edu,dc=cn ldap-2.example.com:389
 步骤九:
 验证主主复制是否已经成功工作:
#cd /ldap/install/dsrk6/bin
#./ldapmodify -a -h ldap-1.example.com -p 389 -D cn=admin,cn=Administrators,cn=config -w admin123

dn: ou=test,dc=zju,dc=edu,dc=cn
objectclass: top
objectclass: organizationalUnit
ou: test
description: Container for user entries
每输入一行,按回车键进入下一行的输入,全部输入完毕后,按2次回车,再按ctrl+c确定并退出。


 以下命令在机器ldap-2.example.com上进行操作
 步骤二:
#./dsconf  list-suffixes -p 389 -v
#./dsconf enable-repl -h ldap-2.example.com -p 389 -d 3892 master dc=zju,dc=edu,dc=cn
#./dsconf  list-suffixes -p 389 -v
 步骤四:
#echo replmanager > pwd.txt
#cat pwd.txt
#./dsconf set-server-prop -h ldap-2.example.com -p 389 def-repl-manager-pwd-file:pwd.txt
 步骤六:
#./dsconf list-repl-agmts -h localhost -p 389 -v dc=zju,dc=edu,dc=cn
#./dsconf create-repl-agmt -h ldap-2.example.com -p 389 dc=zju,dc=edu,dc=cn ldap-1.example.com:389
#./dsconf list-repl-agmts -h localhost -p 389 -v dc=zju,dc=edu,dc=cn
 步骤八:

#./dsconf show-repl-agmt-status -h ldap-2.example.com -p 389 dc=zju,dc=edu,dc=cn ldap-1.example.com:389

#./dsconf init-repl-dest -h ldap-2.example.com -p 389 dc=zju,dc=edu,dc=cn ldap-1.example.com:389
#./dsconf show-repl-agmt-status -h ldap-2.example.com -p 389 dc=zju,dc=edu,dc=cn
ldap-1.example.com:389

 步骤十:
 用以下命令查看新创建的实体是否已经复制过来:
#cd /ldap/install/dsrk6/bin
#./ldapsearch -b "dc=zju,dc=edu,dc=cn" -p 389 -D "cn=Directory Manager" -w admin123 "objectclass=organizationalUnit"

### LDAP 主主部署配置与最佳实践 #### 配置概述 LDAP (轻量级目录访问协议) 的主主复制允许两个或多个服务器之间同步数据更改。这种设置提高了系统的可用性和冗余度,确保即使一台服务器发生故障,其他服务器仍然可以提供服务。 对于Windows环境下的AD LDS(Active Directory Lightweight Directory Services),可以通过多主机复制来实现主主架构[^1]。然而,在Linux环境中更常见的OpenLDAP则提供了更为灵活的配置选项用于搭建高可用性的LDAP集群。 #### 实现步骤详解 ##### 一、安装并初始化LDAP实例 在每台计划作为主节点的机器上分别安装相同版本的OpenLDAP软件包,并完成基本配置文件`/etc/openldap/slapd.d/cn=config.ldif`中的必要修改以启用模块支持和定义数据库后端。 ```bash sudo apt-get install slapd ldap-utils -y ``` ##### 二、创建初始条目结构 利用LDIF格式的数据交换文件导入基础组织单元(OUs), 用户账户以及其他资源对象到各个独立运行的服务进程中去。 ```ldif dn: dc=example,dc=com objectClass: top objectClass: domain dc: example description: Root entry for Example Inc. ``` ##### 三、配置同步提供者(Sync Provider) 编辑第一个master server上的slapd.conf或者通过命令行工具添加syncprov overlay至cn=config下对应的database section内: ```bash # Add syncprov module if not already present modrdn "cn={0}module{NN},cn=config" add olcModuleLoad=syncprov.la ``` 接着指定replica uri指向第二个master server地址以及相应的bind credentials: ```ldif dn: cn=config changetype: modify add: olcSyncRepl olcSyncRepl: rid=001 provider=ldap://secondary.example.com bindmethod=simple binddn="cn=admin,dc=example,dc=com" credentials=<password> searchbase="dc=example,dc=com" ``` 重复上述过程于另一台server之上但是调整provider URI使其指向前者即可形成双向互连关系。 ##### 四、验证功能正常运作 最后一步就是测试整个体系能否正确处理更新操作并向对方传播变更记录。这通常涉及到向任一端点提交新实体或是属性值变动请求随后确认这些改动是否及时出现在所有关联成员之中。 --- 为了保障生产环境下稳定可靠的性能表现,建议遵循如下几项指导原则: - **定期备份**:始终维持最新的全量快照副本以防意外丢失重要资料; - **监控状态**:借助第三方插件持续跟踪连接质量统计指标以便快速定位潜在隐患; - **权限控制**:严格限定哪些主体有权发起写入动作从而减少误操作风险; - **日志审计**:开启详细的活动追踪机制帮助排查异常情况的发生原因;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值