版权声明:本文为博主原创文章,未经博主允许不得转载。
网上关于opeldap ha的配置文章不少,但基本上都是基于2.4.4之前的版本的,一些配置目录和文件都已发生变化,并不适用我们的实际环境,因此特将HA配置步骤进行记录,已供后人少走弯路。
LDAP主从同步从2.4之后较之前版本发生了较大改动,新版本的主从同步模式有5种:
模式 | 特点 |
---|---|
Syncrepl | Slave服务器以拉的方式同步master的用户数据,缺点是当修改一个条目的一个属性值,它不是简单同步修改的属性,而是将整个条目同步更新 |
Delta-syncrepl | 比上一条多了一个功能:基于日志同步,克服了上一条的不足 |
N-Way Multi-Master | 多主方式同步LDAP信息 |
MirrorMode | 服务器互相推送信息的方式同步用户数据 |
Syncrepl Proxy | 代理同步。将master隐藏起来,代理机通过syncrep从master主机以拉的方式同步master用户数据,以推的方式将数据更新到slave ldap服务器上。 |
MirrorMode为ldap ha比较主流的一种模式,本文基于MirrorMode模式进行部署。
节点一:host1,已为openldap server
节点二:host2
节点二安装
$ yum install -y openldap openldap-clients openldap-servers migrationtools
查看安装版本
[root@host2~]# rpm -qa openldap
openldap-2.4.44-21.el7_6.x86_64
[root@host2~]# rpm -qa krb5-server-ldap
krb5-server-ldap-1.15.1-37.el7_6.x86_64
配置OpelLdap HA要满足如下前提条件:
1、 两台服务器之间要保持时钟同步
2、 软件包版本一致
3、 节点之间域名可以相互解析
4、 完全一样的配置及目录树信息(除了server id和provider不同外)
5、两台服务器均已完成《Linux LDAP安装部署集成kerberos》的第二章节内容
Syncprov为openldap的同步模块,两台服务器上都执行:
$ ldapadd -Y EXTERNAL -H ldapi:/// -f mod_syncprov.ldif
第一个节点安装syncprov模块
第二个节点安装syncprov模块
没有报错即添加完成。
其中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 syncprov.ldif
其中,syncprov.ldif内容如下:
dn:olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
objectClass:olcOverlayConfig
objectClass:olcSyncProvConfig
olcOverlay:syncprov
olcSpCheckpoint:100 10
olcSpSessionLog:100
host1上执行:
$ ldapadd -Y EXTERNAL -H ldapi:/// -f ldap01.ldif -W
其中ldap01.ldif文件内容如下:
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1 #此处两节点不同
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSyncRepl
olcSyncRepl: rid=001
provider=ldap://host2ip:389 #此处为另一个主节点的ip和端口号
bindmethod=simple
binddn="cn=Manager,dc=hadoop,dc=com"
credentials=wangkuan #此处是该节点的rootpw,此处只能用明文
searchbase="dc=hadoop,dc=com"
filter="(objectClass=*)"
scope=sub
schemachecking=off
attrs="*,+"
type=refreshAndPersist
retry="5 5 300 +"
interval=00:00:01:00
-
add: olcMirrorMode
olcMirrorMode: TRUE
-
add: olcDbIndex
olcDbIndex: entryUUID eq
-
add: olcDbIndex
olcDbIndex: entryCSN eq
host2上执行:
$ ldapadd -Y EXTERNAL -H ldapi:/// -f ldap02.ldif -W
其中ldap02.ldif文件内容如下:
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 2 #此处两节点不同
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSyncRepl
olcSyncRepl: rid=001
provider=ldap://host1ip:389 #此处为另一个主节点的ip和端口号
bindmethod=simple
binddn="cn=Manager,dc=hadoop,dc=com"
credentials=wangkuan #此处是该节点的rootpw,此处只能用明文
searchbase="dc=hadoop,dc=com"
filter="(objectClass=*)"
scope=sub
schemachecking=off
attrs="*,+"
type=refreshAndPersist
retry="5 5 300 +"
interval=00:00:01:00
-
add: olcMirrorMode
olcMirrorMode: TRUE
-
add: olcDbIndex
olcDbIndex: entryUUID eq
-
add: olcDbIndex
olcDbIndex: entryCSN eq
至此,OpenLDAP HA配置就完成了。
在host2节点上新增用户ldapha
$ ldapadd -x -D "cn=Manager,dc=hadoop,dc=com" -W -f ldapha.ldif
在host1上进行查询验证
$ ldapsearch -LLL -x -D 'cn=Manager,dc=hadoop,dc=com' -W -b 'dc=hadoop,dc=com' 'uid=ldapha'
在另一客户端节点host3上进行查询:
$ ldapsearch -LLL -x -D 'cn=Manager,dc=hadoop,dc=com' -W -b 'dc=hadoop,dc=com' 'uid=ldapha'
验证功能正常。
修改日志配置文件,在/etc/rsyslog.conf文件中添加下列语句:
local4.* /var/log/ldap.log
然后重启服务
$ service rsyslog restart
$ ldapmodify -Y EXTERNAL -H ldapi:/// -f loglevel.ldif -W
其中loglevel.ldif文件内容如下:
dn: cn=config
changetype: modify
add: olcloglevel
olcLogLevel: 256
查看是否有日志输出: