如何在CentOS 7上设置OpenLDAP多主复制

时间:2020-03-05 15:29:33  来源:igfitidea点击:

OpenLDAP是开源的地址目录软件。
与设计用于在小型计算机(例如台式计算机)上运行的X.500相比,它“更轻”或者“更小”。
在OpenLDAP中,数据信息的排列方式像一棵树的树枝,这与其他常用数据库种类有很大的不同。
在OpenLDAP中,对地址目录的访问权限基于slapd中的两类功能,即访问控制列表和授权功能。
在Linux/Unix中,对文件系统的访问权限基于文件/目录权限。
LDAP客户端绑定(登录)到LDAP服务器,该LDAP服务器提交查询以请求信息或者提交要更新的信息。
然后,访问权由服务器评估,并在授予访问权时,服务器以回答或者通过引荐到另一个LDAP服务器的方式响应,客户端可以在该服务器上为查询提供服务。

在本文中,我们将在CentOS 7上设置OpenLDAP服务器的多主复制。
当目录很大且有很多客户端时,这会在目录服务器上产生大量流量,因此很难满足SLA。
因此,我们必须借助复制功能来分散具有多台服务器的客户端的负载。
Openldap具有多种复制配置,例如主要使用Master-Master复制和Master-Consumer复制。

基本设置:

在多主复制拓扑中,两个或者两个以上的服务器可以充当主服务器,所有这些主服务器都对目录服务器中的任何更改具有权威性。

在本教程中,我们将使用两个测试服务器通过以下主机名和IP地址简化该过程。

LDAP1.TEST.COM IP地址172.25.10.176
LDAP2.TEST.COM IP地址192.25.10.177

使用root用户凭据登录到两个服务器,打开“主机”文件以使用IP地址更新两个服务器的名称,以便它们应该能够解析其他系统的主机名。

#vim /etc/hosts
127.0.0.1 localhost.localdomain localhost
172.25.10.176 LDAP1.TEST.COM LDAP1
192.25.10.177 LDAP2.TEST.COM LDAP2

安装OpenLDAP服务器:

为了设置多个主OpenLDAP复制,首先,我们将在两台CentOS 7服务器上安装并配置基本LDAP服务器设置。

让我们运行以下命令来安装OpenLDAP服务器软件包。

# yum install openldap-servers openldap-clients

安装后,将示例openldap DB配置复制到以下位置,如图所示。

# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

然后更改文件所有者并启动“ slapd”服务。

# chown ldap. /var/lib/ldap/DB_CONFIG
# systemctl start slapd

设置OpenLDAP管理员密码:

通过运行slappasswd命令生成加密的密码并提供密码,然后复制生成的加密字符串并指定上面为“ olcRootPW”部分生成的密码。

# slappasswd
New password:
Re-enter new password:
{SSHA}xcsCNH2eMVrNsf4dU7LRJFY5kULU01p4
#vim chrootpw.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW:{SSHA}xcsCNH2eMVrNsf4dU7LRJFY5kULU01p4

保存并关闭文件,然后运行以下命令启动身份验证。

# ldapadd -Y EXTERNAL -H ldapi:///-f chrootpw.ldif

运行以下命令以导入架构。

# ldapadd -Y EXTERNAL -H ldapi:///-f /etc/openldap/schema/cosine.ldif
# ldapadd -Y EXTERNAL -H ldapi:///-f /etc/openldap/schema/nis.ldif
# ldapadd -Y EXTERNAL -H ldapi:///-f /etc/openldap/schema/inetorgperson.ldif

在LDAP DB上设置域名:

让我们先生成目录管理器的密码,然后打开“ chdomain.ldif”以其中输入文本,但是请确保将我们自己的域名替换为“ dc = ***,dc = ***”部分并指定生成的密码对于“ olcRootPW”部分。

# slappasswd
New password:
Re-enter new password:
{SSHA}xIE0NEjoshYdxkvdBaudyuo8NA2IlisgsN7MvXT
# vim chdomain.ldif
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"
read by dn.base="cn=Manager,dc=srv,dc=world" read by * none
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=test,dc=com
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=test,dc=com
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}IcE0NEjoshYdxkvdBaudyuo8NA2IlisgsN7MvXT
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
dn="cn=Manager,dc=test,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=test,dc=com" write by * read

保存文件并运行以下命令以启动身份验证。

# ldapmodify -Y EXTERNAL -H ldapi:///-f chdomain.ldif
#vim basedomain.ldif
dn: dc=test,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: Test Domain
dc: Test
dn: cn=Manager,dc=test,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager
dn: ou=People,dc=test,dc=com
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=test,dc=com
objectClass: organizationalUnit
ou: Group
# ldapadd -x -D cn=Manager,dc=test,dc=com -W -f basedomain.ldif
Enter LDAP Password:
adding new entry "dc=test,dc=com objectClass: top objectClass: dcObject objectclass: organization o: Test Domain dc: Test"
adding new entry "cn=Manager,dc=test,dc=com"
adding new entry "ou=People,dc=test,dc=com"
adding new entry "ou=Group,dc=test,dc=com"

在另一个节点上重复这些步骤,然后转到多主复制。

OpenLDAP多主复制:

完成基本LDAP设置后,请执行以下步骤来配置和设置多主复制。
为此,首先我们将通过打开以下文件并其中添加以下配置来添加“ syncprov”模块。

#vim mod_syncprov.ldif
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la

保存并关闭文件,然后运行以下命令启动身份验证。

# ldapadd -Y EXTERNAL -H ldapi:///-f mod_syncprov.ldif

然后打开以下给定的文件,并将提到的配置放入其中。

# vim syncprov.ldif
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionLog: 100

现在,在添加配置后,再次运行以下命令。

# ldapadd -Y EXTERNAL -H ldapi:///-f syncprov.ldif

现在,我们将最重要的配置包括在内,将以下配置放入每个主节点的文件中,从而配置复制。

但是不要忘记根据服务器更改“ olcServerID”和“ provider = xxx”信息,并在每台服务器上设置不同的值。

# vim ldap01.ldif
# create new
dn: cn=config
changetype: modify
replace: olcServerID
# specify unique ID number on each server
olcServerID: 0
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
# specify your LDAP server's URI
provider=ldap://ldap1.test.com:389/
bindmethod=simple
# your own domain name
binddn="cn=Manager,dc=test,dc=com"
# directory manager's password
credentials=xxxxxx
searchbase="dc=test,dc=com"
# includes subtree
scope=sub
schemachecking=on
type=refreshAndPersist
# [retry interval] [retry times] [interval of re-retry] [re-retry times]
retry="30 5 300 3"
# replication interval
interval=00:00:05:00

add: olcMirrorMode
olcMirrorMode: TRUE
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

保存后,关闭文件并运行以下命令以启动最终身份验证。

# ldapmodify -Y EXTERNAL -H ldapi:///-f ldap01.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"
modifying entry "olcDatabase={2}hdb,cn=config"
adding new entry "olcOverlay=syncprov,olcDatabase={2}hdb,cn=config"

OpenLDAP主复制设置已完成,现在我们可以通过在客户端服务器上使用以下命令来配置LDAP客户端以绑定LDAP主服务器。

# authconfig --ldapserver=ldap1.test.com,ldap2.test.com --update