在 CentOS 8 上设置 OpenLDAP 多主复制 |在 CentOS 8 上设置 OpenLDAP 多主复制 |在 CentOS 8 上设置 OpenLDAP 多主复制 |在 CentOS 8 上设置 OpenLDAP 多主复制 |
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

在 CentOS 8 上设置 OpenLDAP 多主复制 |

发表 admin at 2025年2月28日
类别
  • 未分类
标签

在之前的文章中,我们介绍了如何在 CentOS 8 上安装 OpenLDAP 以及如何设置 OpenLDAP 提供者-消费者复制。本指南将介绍如何设置主-主复制或消费者-消费者类型的设置。

OpenLDAP 附带了一个名为 LDAP SYNC 复制引擎 (syncrepl) 的模块,该模块负责多主复制。

在 CentOS 8 上配置 OpenLDAP 主主复制

在我们继续之前,我们需要准备好我们的主机。在我们的设置中,我们有以下主机:

  1. ldapmaster.computingforgeeks.com – 现有 OpenLDAP 节点
  2. 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 服务器复制

©2015-2025 Norria support@alaica.com