云网牛站
所在位置:首页 > Linux云服务器 > 在CentOS 8服务器上配置OpenLDAP多主复制的方法

在CentOS 8服务器上配置OpenLDAP多主复制的方法

2021-05-29 15:20:57作者:叶云稿源:云网牛站

本文介绍在CentOS 8服务器上配置OpenLDAP多主复制(OpenLDAP Multi-Master Replication)的方法。OpenLDAP附带了一个名为LDAP SYNC复制引擎(syncrepl)的模块,该模块负责多主复制。

在CentOS 8服务器上配置OpenLDAP多主复制的方法

 

在CentOS 8上配置OpenLDAP Master-Master复制

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

1]、ldapmaster.computingforgeeks.com–现有的OpenLDAP节点。

2]、ldapmaster02.computingforgeeks.com–将用作第二个提供程序的新主机。

OpenLDAP中的复制涉及LDAP数据库和数据的同步。

1、配置NTP同步

我们需要让服务器的时间同步。我们使用NTP进行时间同步。参考在RHEL 8系统上使用Chrony配置NTP服务器

2、需要在CentOS 8上配置OpenLDAP

可参考第23章 使用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} root@ldapmaster02.computingforgeeks.com:/opt

从现有服务器复制SSL证书:

scp /etc/pki/tls/ldapserver.{crt,key} root@ldapmaster02.computingforgeeks.com:/etc/pki/tls

3、在新的主服务器上恢复配置文件

在新的master上运行以下命令以恢复我们在上述步骤中刚刚复制的配置:

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复制

在两台服务器上成功安装和恢复配置文件后,我们现在可以继续配置复制。

1、启用OpenLDAP内容同步

我们需要通过在两台服务器上启用syncprov overlay module来启用两个节点之间的内容同步(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

2、定义服务器IDs

为了识别服务器,拥有服务器IDs很重要。使用节点创建配置文件并更新数据库,如下所示:

# 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

请记住将您的主机名用于上述服务器IDs。

3、启用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

4、创建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

5、为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

至此,我们已经成功配置了跨两个节点的复制,并且都可以作为master使用了。在这种情况下,数据库更新可以在任何节点上完成,复制将发生在另一台服务器上。

 

测试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上进行验证,您应该得到相同的输出。

 

相关主题

在Debian 10上安装和配置OpenLDAP服务器,包括LDAP帐户管理器

精选文章
热门文章