在 CentOS 8 上设置 OpenLDAP 多主复制 |
在之前的文章中,我们介绍了如何在 CentOS 8 上安装 OpenLDAP 以及如何设置 OpenLDAP 提供者-消费者复制。本指南将介绍如何设置主-主复制或消费者-消费者类型的设置。
OpenLDAP 附带了一个名为 LDAP SYNC 复制引擎 (syncrepl) 的模块,该模块负责多主复制。
在 CentOS 8 上配置 OpenLDAP 主主复制
在我们继续之前,我们需要准备好我们的主机。在我们的设置中,我们有以下主机:
- ldapmaster.computingforgeeks.com – 现有 OpenLDAP 节点
- ldapmaster02.computingforgeeks.com – 将用作第二个提供商的新主机。
OpenLDAP 中的复制涉及 LDAP 数据库和数据的同步。
配置NTP同步
我们需要同步服务器的时间。我们使用NTP来进行时间同步。下面的文章介绍了如何在 CentOS 8 中设置 NTP 同步。
如何在 RHEL 8/CentOS 8 上使用 Chrony 配置 NTP 服务器
在 CentOS 8 上安装和配置 OpenLDAP
按照下面指南中突出显示的步骤在 CentOS 8 上为两台服务器安装和配置 OpenLDAP 目录。
在 CentOS 8 上安装和配置 OpenLDAP 服务器
如果您有现有的 OpenLDAP 实例并且想要设置并行提供程序,则必须创建现有 OpenLDAP 数据和数据库的备份,然后将其恢复到您正在准备的新节点上。
请按照以下步骤创建和恢复 OpenLDAP 配置的备份:
将数据和配置文件从现有服务器复制到新服务器。
在现有服务器上运行以下命令以创建 OpenLDAP 数据库的副本:
slapcat -b cn=config -l openldap-config.ldif
或者
slapcat -n 0 -l openldap-config.ldif
创建 OpenLDAP 数据的备份:
slapcat -n 1 -l openldap-data.ldif
或者
slapcat -l openldap-data.ldif
将配置文件复制到新服务器
scp {openldap-data.ldif, openldap-config.ldif} [email :/opt
从现有服务器复制 SSL 证书。
scp /etc/pki/tls/ldapserver.{crt,key} [email :/etc/pki/tls
在新主服务器上恢复配置文件
在新主机上运行以下命令以恢复我们刚刚在上述步骤中复制的配置。
sudo rm -rf /etc/openldap/slapd.d/*
sudo rm -rf /var/lib/openldap/*
恢复 LDAP 数据库:
cd /opt
sudo slapadd -b cn=config -l openldap-config.ldif -F /etc/openldap/slapd.d/
#or
cd /opt && sudo slapadd -n 0 -l openldap-config.ldif -F /etc/openldap/slapd.d/
恢复 OpenLDAP 数据:
cd /opt && sudo slapadd -n 1 -l openldap-data.ldif -F /etc/openldap/slapd.d/
设置配置文件的正确文件所有权:
sudo chown -R ldap:ldap /etc/openldap/slapd.d/ /var/lib/openldap/
sudo chown ldap:ldap /etc/pki/tls/ldapserver.{crt,key}
CentOS 8 上的 OpenLDAP 复制
在两台服务器上成功安装并恢复配置文件后,我们现在可以继续配置复制。
启用 OpenLDAP 内容同步
我们需要通过在两台服务器上启用 syncprov 覆盖模块
来启用两个节点之间的内容同步(syncrepl 复制)。
为此,请在两个节点上创建包含以下内容的 LDIF 文件,然后更新 ldap 数据库。
# vim syncprov.ldif
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: syncprov.la
更新数据库:
ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov.ldif
定义服务器 ID
为了识别服务器,服务器 ID 非常重要。使用节点创建配置文件并更新数据库,如下所示:
# vim server-id.ldif
dn: cn=config
changetype: modify
add: olcServerID
olcServerID: 0 ldap://ldapmaster.computingforgeeks.com
olcServerID: 1 ldap://ldapmaster02.computingforgeeks.com
更新数据库:
ldapadd -Y EXTERNAL -H ldapi:/// -f server-id.ldif
请记住使用您的主机名作为上面的服务器 ID。
启用 OpenLDAP 配置复制
下一步是在两个节点上启用配置复制。为此,请在每台服务器上创建一个文件并添加以下内容,然后更新其数据库。
# vim syncprov-conf.ldif
dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
更新数据库:
ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov-conf.ldif
创建 rootDN 密码
在每个节点上创建 rootDN 密码。创建密码哈希如下:
# slappasswd
New password: StR0ngP@ssWord
Re-enter new password: StR0ngP@ssWord
{SSHA}h3B6R1AyyeiAVuB2JZGfNaQ2RYysN
您应该使用您选择的强密码来生成哈希值。
使用 ldif 文件设置密码:
# vim rootdn.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}h3B6R1AyyeiAVuB2JZGfNaQ2RYysN
更新每个节点上的数据库:
ldapmodify -Y EXTERNAL -H ldapi:/// -f rootdn.ldif
在每个节点上添加以下配置文件以启用节点之间的配置复制。请记住更新主机名和凭据以匹配您的环境。
# vim replication.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl:
rid=001
provider=ldaps://ldapmaster.computingforgeeks.com
binddn="cn=config"
bindmethod=simple
credentials="StR0ngP@ssWord"
searchbase="cn=config"
type=refreshAndPersist
timeout=0
network-timeout=0
retry="30 5 300 +"
olcSyncRepl:
rid=002
provider=ldaps://ldapmaster02.computingforgeeks.com
binddn="cn=config"
bindmethod=simple
credentials="StR0ngP@ssWord"
searchbase="cn=config"
type=refreshAndPersist
timeout=0
network-timeout=0
retry="30 5 300 +"
-
add: olcMirrorMode
olcMirrorMode: TRUE
更新每个节点上的 ldap 数据库:
ldapadd -Y EXTERNAL -H ldapi:/// -f replication.ldif
为 OpenLDAP 启用数据库复制
通过将以下配置添加到两个节点上的数据库来启用跨两个节点的数据库复制
# vim db-sync.ldif
dn: olcOverlay=syncprov,olcDatabase={1}mdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionlog: 100
更新数据库:
ldapadd -Y EXTERNAL -H ldapi:/// -f db-sync.ldif
启用 entryCSN 和 entryUID 索引以提高数据库性能:
# vim indexes.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: entryCSN eq
-
add: olcDbIndex
olcDbIndex: entryUUID eq
更新数据库:
ldapadd -Y EXTERNAL -H ldapi:/// -f indexes.ldif
在所有节点上定义数据库复制选项:
# vim db_options.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcSyncrepl
olcSyncrepl:
rid=003
provider=ldaps://ldapmaster.computingforgeeks.com
binddn="cn=admin,dc=ldapmaster,dc=computingforgeeks,dc=com"
bindmethod=simple
credentials="StR0ngP@ssW0rd"
searchbase="dc=ldapmaster,dc=computingforgeeks,dc=com"
type=refreshAndPersist
timeout=0
network-timeout=0
retry="30 5 300 +"
olcSyncrepl:
rid=004
provider=ldaps://ldapmaster02.computingforgeeks.com
binddn="cn=admin,dc=ldapmaster,dc=computingforgeeks,dc=com"
bindmethod=simple
credentials="StR0ngP@ssW0rd"
searchbase="dc=ldapmaster,dc=computingforgeeks,dc=com"
type=refreshAndPersist
timeout=0
network-timeout=0
retry="30 5 300 +"
-
add: olcMirrorMode
olcMirrorMode: TRUE
更新数据库:
ldapadd -Y EXTERNAL -H ldapi:/// -f db_options.ldif
至此,我们已经成功配置了跨两个节点的复制,并且两个节点都可以用作主节点。在这种情况下,数据库更新可以在任何节点上完成,并且复制将发生到其他服务器。
测试 OpenLDAP 多主复制
最后一步是验证我们的配置是否正常工作。为此,我们将从一个节点修改用户密码,并查看是否可以在另一节点上使用新密码进行身份验证。我们还将尝试相反的方法,看看它是否也有效。
我们有以下用户:
uid=vshamallah,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com
我们可以在ldapmaster.computingforgeeks.com上修改密码
[root@ldapmaster ~]# ldappasswd -H ldapi:/// -Y EXTERNAL -S "uid=vshamallah,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com"
根据提示输入新密码。
New password: N3wP@ssw0rd
Re-enter new password: N3wP@ssw0rd
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
在 ldapmaster02.computingforgeeks.com 上验证密码:
[root@ldapmaster02 ~]# ldapwhoami -x -h ldapmaster.computingforgeeks.com -D "uid=vshamallah,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com" -W
系统将提示您输入密码。如果更改已生效,输出将为您提供用户的详细信息。
Enter LDAP Password: N3wP@ssw0rd
dn:uid=vshamallah,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com
同样,如果您执行相反的操作,在 ldapmaster02.computingforgeeks.com 上重置密码,然后从 ldapmaster.computingforgeeks.com 进行验证,您应该得到相同的结果输出。
这标志着我们的指南的结束。感谢您的关注,请查看以下其他相关指南:
在 CentOS 8 上安装和配置 OpenLDAP 服务器
如何在 CentOS 8 上配置 OpenLDAP 服务器复制