本文介绍在CentOS 8服务器上配置OpenLDAP多主复制(OpenLDAP Multi-Master Replication)的方法。OpenLDAP附带了一个名为LDAP SYNC复制引擎(syncrepl)的模块,该模块负责多主复制。
在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 如果您有一个现有的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上进行验证,您应该得到相同的输出。
相关主题 |