花了点时间测试了一下OpenLDAP的主辅库同步,记录一下配置文件。
0,假设两台机器分别为:ldap-master.extmail.org ldap-slave1.extmail.org
1,首先要做的是把主库上的数据和配置文件全部拷贝一份到辅库上去,并放到对应的目录下,包含如下文件
/var/db/openldap-data/*
/usr/local/etc/openldap/*
然后重启一下slapd,再进行下面的配置
2,主库上配置slapd.conf类似如下内容,主要是增加了replogfile和replica,前者是指定了同步日志的位置,slurpd会读取这个日志文件,后者则指定了辅库的hostname和binddn,这个binddn需要和辅库上的updatedn一致,表示从这个节点开始同步。
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/extmail.schema
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
modulepath /usr/local/libexec/openldap
moduleload back_bdb
database bdb
suffix “dc=extmail.org”
rootdn “cn=Manager,dc=extmail.org”
rootpw secret
replogfile /var/db/openldap-data/replog
replica host=ldap-slave1.extmail.org:389
binddn=”cn=Manager,dc=extmail.org”
bindmethod=simple credentials=secret
directory /var/db/openldap-data
index objectClass eq
index mail,active,virtualDomain,mailLocalAddress eq,pres
3,辅库的配置,只多了一个updatedn命令
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/extmail.schema
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
modulepath /usr/local/libexec/openldap
moduleload back_bdb
database bdb
suffix “dc=extmail.org”
rootdn “cn=Manager,dc=extmail.org”
rootpw secret
updatedn “cn=Manager,dc=extmail.org”
directory /var/db/openldap-data
index objectClass eq
index mail,active,virtualDomain,mailLocalAddress eq,pres
4,重启slapd,slurpd。然后在主库上更新一条记录,查看是否同步过来。
master: /var/db/openldap-slurp/replica/slurpd.replog
slave: /var/log/debug.log
