如何在CentOS 7上设置OpenLDAP多主复制
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