1、背景
在很多组织中,需要对用户和系统进行统一的身份认证和授权管理。为了实现这一目标,通常会使用LDAP(轻量级目录访问协议)来构建集中化的身份认证和授权服务。而在生产环境中,为了保证高可用性和可扩展性,需要构建OpenLDAP主从集群来提供稳定的身份认证服务。
2、环境
在开始部署之前,需要准备以下环境:
- 操作系统:Centos7
- OpenLDAP版本:OpenLDAP: slapd 2.4.44
- 服务器数量:2台(1台主服务器和1台从服务器)
- 网络环境:两台服务器应在同一局域网内,确保网络连接稳定
3、主节点安装
清参考下方链接
https://blog.csdn.net/heian_99/article/details/138963912
4、从节点安装
假设master节点的地址为192.168.102.20。对于master节点,完全参照前述章节操作并配置好。
对于slave节点,也参照前述章节安装并配置,但只到执行ldapdomain.ldif文件后就行。也就是设置了管理员用户账号就行,不用添加部门或其它人员信息。另外,phpLDAPadmin可以安装。
1、配置master节点
在master节点上,我们需要导入相关的信息。
创建syncprov_mod.ldif文件:
cat > syncprov_mod.ldif << "EOF"
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la
EOF
执行:
ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov_mod.ldif
创建syncprov.ldif文件:
cat > syncprov.ldif << "EOF"
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpCheckpoint: 1 1
olcSpSessionLog: 1024
EOF
执行:
ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov.ldif
2、配置slave节点
在slave节点上配置主从。
创建rp.ldif文件:
cat > rp.ldif << "EOF"
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001provider=ldap://192.168.102.20:389bindmethod=simplebinddn="cn=Manager,dc=fujfu,dc=com"credentials=examplePasswordsearchbase="dc=fujfu,dc=com"scope=subschemachecking=ontype=refreshAndPersistretry="30 5 300 3"attrs="*,+"interval=00:00:02:00
EOF
provider表示master的地址,其他的都是些基础信息。需要注意的是认证用户一定要使用超级管理员,如果使用普通用户连接master的话,slave将不会同步用户的密码字段信息。credentials是管理员的密码。
执行:
ldapmodify -Y EXTERNAL -H ldapi:/// -f rp.ldif
除此之外,为了优化openldap的查询速度,我们添加了相关字段属性的索引。
cat > index.ldif << "EOF"
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: uid eq,pres
olcDbIndex: uniqueMember eq,pres
olcDbIndex: uidNumber,gidNumber eq,pres
olcDbIndex: member,memberUid eq,pres
olcDbIndex: entryUUID eq
olcDbIndex: entryCSN eq
EOF
执行:
ldapadd -Y EXTERNAL -H ldapi:/// -f index.ldif
3、验证主从正确性
slave机器上配置完毕后,无需重启master机器和slave机器的slapd服务。
在slave机器上查看openldap日志,如下:
journalctl -u slapd -n 100 -f
通过上图,我们可以很明显的看到slave机器上slapd服务没有报错,而且已经在同步相关openldap数据。
现在切换到master机器上查看openldap日志,如下:
journalctl -u slapd -n 100 -f
通过上图我们也可以发现master没有报错,而且也看到slave机器已经在同步信息了。
现在我们再使用phpLDAPadmin工具,登录slave查看相关信息,如下:
通过上图,我们可以看到slave节点上已经有账号信息了。这也就说明OpenLDAP的master-slave已经在正常同步数据。
4、测试
可测试如下两点:
1、在master节点上修改用户字段信息,slave节点上应能同步到修改信息。
2、在slave节点修改用户字段信息,应该无法操作。因为我们采用的主从模式中,slave节点是自读的。
如果测试无问题,说明我们的主从的确正常运行。
LDAP查看命令
附ldap查看配置命令:
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config
ldapsearch -x cn=test -b dc=local,dc=cn