在CentOS 8上设置OpenLDAP Master-Master复制
在本指南中,我们将学习如何在CentOS 8上设置OpenLDAP Master-Master复制。 OpenLDAP支持多种复制拓扑,例如 provider-slave
, provider-provider
拓扑。因此,多提供商(也称为多主复制)是一种使用 LDAP Sync Replication engine
(Syncrepl
)将数据复制到多个提供程序(“主”)目录服务器。
在CentOS 8上设置OpenLDAP Master-Master复制
在我们的设置中,我们使用两个OpenLDAP服务器节点:
- 提供者节点01:
ldapmaster01.kifarunix-demo.com
- 提供者节点02:
ldapmaster02.kifarunix-demo.com
我们的复制涉及两个OpenLDAP配置(olcDatabase={0}config,cn=config
)和数据库(olcDatabase={1}mdb,cn=config
)复制。
设置时间同步
在继续设置OpenLDAP多主复制之前,请确保OpenLDAP服务器的时钟已同步。
请参考以下链接在CentOS 8上设置NTP服务器。
在CentOS 8上使用Chrony设置NTP服务器
安装和设置OpenLDAP服务器
在我们的设置中,我们将复制整个OpenLDAP配置和数据目录。这样,安装,设置和配置提供程序节点之一。请遵循以下指南在CentOS 8上安装OpenLDAP服务器。
在CentOS 8上安装和设置OpenLDAP
一旦配置了一个OpenLDAP节点,就将其克隆以创建处于相同配置状态的第二个节点。
如果您无法克隆OpenLDAP节点,则只需安装和设置其他OpenLDAP节点,然后备份已经设置的节点的配置和数据目录,并将其还原到其他节点上。确保所有必需的目录,文件和权限都已相应设置。
启用LDAP同步提供程序(syncprov)覆盖模块
为了启用LDAP内容同步(syncrepl复制),您需要启用 syncprov叠加模块 在所有提供者节点上。
要启用Syncprov叠加模块,您可以创建如下所示的LDIF文件并使用 ldapmodify
要么 ldapadd
命令以更新OpenLDAP数据库配置。
vim enable-syncprov-module.ldif
dn: cn=module{0},cn=config changetype: modify add: olcModuleLoad olcModuleLoad: syncprov.la
请注意,此LDIF文件假定 syncprov.la
模块位于已定义的模块路径下, /usr/libexec/openldap
。验证模块路径;
slapcat -n 0 | grep -i modulepath
olcModulePath: /usr/libexec/openldap
更新OpenLDAP数据库配置;
ldapadd -Y EXTERNAL -H ldapi:/// -f enable-syncprov-module.ldif
如果您不想使用LDIF文件,只需执行 ldapadd
命令如下所示;
ldapadd -Y EXTERNAL -H ldapi:/// -Q
命令运行后,将以下内容粘贴;
dn: cn=module{0},cn=config changetype: modify add: olcModuleLoad olcModuleLoad: syncprov.la
按ENTER键并添加修改数据库上的条目。
modifying entry "cn=module{0},cn=config"
添加条目后,按 Ctrl+d
停止命令。
如果您要创建一个新的 module
条目,只需在LDIF文件中或使用以下内容作为输入即可 ldapadd
要么 ldapmodify
命令。
dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulePath: /usr/libexec/openldap olcModuleLoad: syncprov.la
分配服务器ID
在每个OpenLDAP节点上,您需要为其分配一个ID,以唯一地标识提供者。服务器ID以以下格式指定:
olcServerID:[ ]
因此,在每个节点上,运行以下命令分配ID。
vim assign-server-ID.ldif
在两个提供者节点上;
dn: cn=config changetype: modify add: olcServerID olcServerID: 1 ldap://ldapmaster01.kifarunix-demo.com olcServerID: 2 ldap://ldapmaster02.kifarunix-demo.com
更新数据库配置。
ldapadd -Y EXTERNAL -H ldapi:/// -f assign-server-ID.ldif
设置OpenLDAP主-主复制设置
启用同步提供程序模块并设置提供程序节点ID后,请继续配置复制设置。
启用OpenLDAP配置复制
启用OpenLDAP配置的复制(olcDatabase={0}config,cn=config
),使用下面的内容创建LDIF文件并更新OpenLDAP数据库 在所有提供者节点上。
vim syncprov-config-options.ldif
dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov
咨询 man slapo-syncprov
有关上面使用的选项的说明。
使用上面定义的复制选项更新OpenLDAP数据库。
ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov-options.ldif
接下来,设置OpenLDAP配置数据库的根DN密码 在所有提供者节点上。
由于我们没有设置OpenLDAP配置RootDN密码,如下面的命令所示;
ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config olcDatabase={0}config olcRootDN olcRootPW -LLL -Q
dn: olcDatabase={0}config,cn=config olcRootDN: cn=config ...
生成密码哈希。
slappasswd
New password: [email protected] Re-enter new password: [email protected] {SSHA}tq3ZI0S1AyyeiAVuB2JZGfNaQ2RYVtZn
设置数据库配置密码。
vim rootpwd.ldif
dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}h97GS2nwkHFkwMCbhYmeoRqhJ2ROrMLJ
添加数据库根密码。
ldapmodify -Y EXTERNAL -H ldapi:/// -f rootpwd.ldif
确认;
ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config olcDatabase={0}config olcRootDN olcRootPW -LLL -Q
dn: olcDatabase={0}config,cn=config olcRootDN: cn=config olcRootPW: {SSHA}6Gdu7FnwaSRYpbCFwMastAyN1CAgHY4n
接下来,在以下位置为OpenLDAP配置启用复制选项 所有节点。
vim enable-config-replication.ldif
确保根据您的环境设置替换此处使用的选项。
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl:
rid=001
provider=ldaps://ldapmaster01.kifarunix-demo.com
binddn="cn=config"
bindmethod=simple
credentials="VifreabOrk9"
searchbase="cn=config"
type=refreshAndPersist
timeout=0
network-timeout=0
retry="30 5 300 +"
olcSyncRepl:
rid=002
provider=ldaps://ldapmaster02.kifarunix-demo.com
binddn="cn=config"
bindmethod=simple
credentials="VifreabOrk9"
searchbase="cn=config"
type=refreshAndPersist
timeout=0
network-timeout=0
retry="30 5 300 +"
-
add: olcMirrorMode
olcMirrorMode: TRUE
使用上面的复制设置更新OpenLDAP数据库。
ldapadd -Y EXTERNAL -H ldapi:/// -f enable-config-replication.ldif
启用OpenLDAP数据库复制
要启用OpenLDAP数据库的复制,只需创建具有以下内容的LDIF文件。 确保对定义的选项进行必要的更改。
注意,在我们的情况下,我们已经有一个Root DN绑定用户和为数据存储数据库设置的密码。
ldapsearch -Y EXTERNAL -H ldapi:/// -b olcDatabase={1}mdb,cn=config olcRootDN olcRootPW -LLL -Q
dn: olcDatabase={1}mdb,cn=config olcRootDN: cn=admin,dc=ldapmaster,dc=kifarunix-demo,dc=com olcRootPW: {SSHA}DoFW9xVBNRBy4it31167J82ZJ83Qoj1v ...
如果您没有Root DN用户名和密码,请先创建一个或重新设置,然后再继续。
为OpenLDAP数据库启用同步提供程序 在所有提供商上。
vim enabl-mdb-syncprov.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 enabl-mdb-syncprov.ldif
启用 entryCSN
和 entryUID
索引分别提高提供程序上的数据库扫描速度和会话日志的性能。
vim enable-indexing.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 enable-indexing.ldif
接下来,定义数据库复制选项 在所有提供商上。
vim enable-database-repl.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcSyncrepl
olcSyncrepl:
rid=003
provider=ldaps://ldapmaster01.kifarunix-demo.com
binddn="cn=admin,dc=ldapmaster,dc=kifarunix-demo,dc=com"
bindmethod=simple
credentials="[email protected]"
searchbase="dc=ldapmaster,dc=kifarunix-demo,dc=com"
type=refreshAndPersist
timeout=0
network-timeout=0
retry="30 5 300 +"
olcSyncrepl:
rid=004
provider=ldaps://ldapmaster02.kifarunix-demo.com
binddn="cn=admin,dc=ldapmaster,dc=kifarunix-demo,dc=com"
bindmethod=simple
credentials="[email protected]"
searchbase="dc=ldapmaster,dc=kifarunix-demo,dc=com"
type=refreshAndPersist
timeout=0
network-timeout=0
retry="30 5 300 +"
-
add: olcMirrorMode
olcMirrorMode: TRUE
更新数据库。
ldapadd -Y EXTERNAL -H ldapi:/// -f enable-data-replication.ldif
请教 man slapd-config
以上LDIF文件中使用的复制选项。
验证OpenLDAP主-主复制
现在已完成OpenLDAP提供程序-提供程序(主-主)复制配置。要确认这一点,请尝试对提供者之一进行任何更改。
例如,添加用户,重置密码,更新任何ACL。这应该反映在任何一个提供程序上。
为了演示的目的,让我们在下面的提供者01上重置用户输入的密码, ldapmaster01.kifarunix-demo.com。
uid=linus,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com
[[email protected] ~]# ldappasswd -H ldapi:/// -Y EXTERNAL -S "uid=linus,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com"
New password: newpassword Re-enter new password: newpassword SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0
验证提供者02上的密码更改, ldapmaster02.kifarunix-demo.com。
[[email protected] ~]# ldapwhoami -x -h ldapmaster01.kifarunix-demo.com -D "uid=linus,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com" -W
Enter LDAP Password: newpass dn:uid=linus,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com
同样,尝试在提供者02上重置用户密码, ldapmaster02.kifarunix-demo.com。
[[email protected] ~]# ldappasswd -H ldapi:/// -Y EXTERNAL -S "uid=koromicha,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com"
New password: mypassword Re-enter new password: mypassword SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0
在提供者01上进行验证;
[[email protected] ~]# ldapwhoami -x -h ldapmaster01.kifarunix-demo.com -D "uid=koromicha,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com" -W
Enter LDAP Password: mypassword dn:uid=koromicha,ou=people,dc=ldapmaster,dc=kifarunix-demo,dc=com
大。您已经在CentOS 8上成功设置了OpenLDAP Master-master(提供者-提供者)。
这标志着我们有关如何在CentOS 8上安装和设置OpenLDAP Master-Master复制的指南的结尾。
参考:
相关指南
在CentOS 8上设置OpenLDAP主从复制
如何配置DokuWiki OpenLDAP身份验证
实施OpenLDAP密码策略
如何通过OpenLDAP服务器配置SUDO
。