嘘~ 正在从服务器偷取页面 . . .

玩转openLDAP(三) – LDAP主主配置(Master-Master)


在本篇中我们将在CentOS 7上配置OpenLDAP服务器的多主复制。这种多主复制设置是为了克服典型的主从
复制的限制,在主从模式中,只有主服务器可以在LDAP目录中进行更改操作。在多主复制中,两个或多个
服务器充当主服务器,所有这些服务器对于LDAP目录中的任何更改都是权威的。客户机的查询在复制的帮
助下分布在多个服务器上。

Host Name

IP Address

OS

Node

ldapsvr01.kclouder.local

192.168.137.11

CentOS 7

LDAP-Master1

ldapsvr01.kclouder.local

192.168.137.12

CentOS 7

LDAP-Master2

ldapclient01.kclouder.local

192.168.137.21

CentOS 7

LDAP-Client

**配置OpenLDAP多主复制: **

注意:这里假设我们已经按照前文中配置好了两台LDAP服务器,所以LDAP服务器配置的步骤在此省略,可以
参照前文进行配置。将示例数据库配置文件复制到/var/lib/ldap目录并更新文件权限。除非另有说明,否
则需要在所有OpenLDAP服务器上执行以下步骤。

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/*

启用syncprov模块
vi syncprov_mod.ldif
创建完ldif文件之后,将配置发送到LDAP服务器
ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov_mod.ldif

启用复制功能
更改所有服务器上的olcServerID。对于ldpsvr011,将olcServerID设置为1,对于ldpsvr02,将
olcServerID设置为2。

vi olcserverid.ldif
创建完ldif文件之后,将配置发送到LDAP服务器
ldapmodify -Y EXTERNAL -H ldapi:/// -f olcserverid.ldif

生成LDAP配置复制的密码,需要在所有LDAP Master服务器上执行此操作
slappasswd

设置“配置数据库”的密码,加入上一步生成的密码
vi olcdatabase.ldif

将配置发送到LDAP服务器
ldapmodify -Y EXTERNAL -H ldapi:/// -f olcdatabase.ldif

在所有服务器上配置复制
vi configrep.ldif
ldapmodify -Y EXTERNAL -H ldapi:/// -f configrep.ldif

启用数据库复制

到这里,LDAP的复制就已经配置完成。现在我们还要启用实际数据的复制,即用户数据库数据的复制。在任
何一个节点上执行以下步骤即可,因为如果前面的配置正确,其他节点会对配置进行自动复制。

为hdb数据库启用syncprov
vi syncprov.ldif
将配置发送到LDAP服务器
ldapmodify -Y EXTERNAL -H ldapi:/// -f syncprov.ldif

设置hdb数据库的复制
vi olcdatabasehdb.ldif

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=kclouder,dc=local
replace: olcRootDN
olcRootDN: cn=ldapadm,dc=kclouder,dc=local
replace: olcRootPW
olcRootPW: {SSHA}XaBGhLHZ9TgevkyOPlRev4zeN8DXWQOL
add: olcSyncRepl
olcSyncRepl: rid=004 provider=ldap://ldpsvr01.kclouder.local binddn=”cn=ldapadm,dc=kclouder,dc=local” bindmethod=simple
credentials=x searchbase=”dc=kclouder,dc=local” type=refreshOnly
interval=00:00:00:10 retry=”5 5 300 5” timeout=1
olcSyncRepl: rid=005 provider=ldap://ldpsvr02.kclouder.local binddn=”cn=ldapadm,dc=kclouder,dc=local” bindmethod=simple
credentials=x searchbase=”dc=kclouder,dc=local” type=refreshOnly
interval=00:00:00:10 retry=”5 5 300 5” timeout=1
add: olcDbIndex
olcDbIndex: entryUUID eq
add: olcDbIndex
olcDbIndex: entryCSN eq
add: olcMirrorMode
olcMirrorMode: TRUE

将配置发送到LDAP服务器
ldapmodify -Y EXTERNAL -H ldapi:/// -f olcdatabasehdb.ldif

更改olcDatabase={1}monitor.ldif文件,将Monitor访问限制为仅允许LDAP root (ldapadm) user

vi monitor.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=ldapadm,dc=kclouder,dc=local” read by * none

将配置发送到LDAP服务器
ldapmodify -Y EXTERNAL -H ldapi:/// -f monitor.ldif

添加 LDAP schemas
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

生成base.ldif配置文件
vi base.ldiff
dn: dc=kclouder,dc=local
dc: kclouder
objectClass: top
objectClass: domain
dn: cn=ldapadm ,dc=kclouder,dc=local
objectClass: organizationalRole
cn: ldapadm
description: LDAP Manager
dn: ou=People,dc=kclouder,dc=local
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=kclouder,dc=local
objectClass: organizationalUnit
ou: Group

构建目录结构
ldapadd -x -W -D “cn=ldapadm,dc=kclouder,dc=local” -f base.ldif

测试LDAP复制

在Master1上创建一个用户“ldaptest”
vi ldaptest.ldif
dn: uid=ldaptest,ou=People,dc=kclouder,dc=local
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: ldaptest
uid: ldaptest
uidNumber: 9988
gidNumber: 100
homeDirectory: /home/ldaptest
loginShell: /bin/bash
gecos: LDAP Replication Test User
userPassword: {crypt}x
shadowLastChange: 17058
shadowMin: 0
shadowMax: 99999
shadowWarning: 7

添加用户
ldapadd -x -W -D “cn=ldapadm,dc=kclouder,dc=local” -f ldaptest.ldif

在Master1上搜索用户“ldaptest”
ldapsearch -x cn=ldaptest -b dc=kclouder,dc=local

在Master2上为在Master1上创建的用户“ldaptest”设置密码。如果能够设置密码,说明LDAP多主复制已经
正常工作
ldappasswd -s ldaptest123 -W -D “cn=ldapadm,dc=kclouder,dc=local” -x “uid=ldaptest,ou=People,dc=kclouder,dc=local”

在客户端上绑定两台主服务器
authconfig –enableldap –enableldapauth –ldapserver=ldpsvr01.kclouder.local,ldpsvr02.kclouder.local –ldapbasedn=”dc=kclouder,dc=local” –enablemkhomedir –update

验证Client可以通过账号“ldaptest”


文章作者: kclouder
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kclouder !
  目录