一、前沿:
本文只是包含ldap的主从复制的配置解决方案,不包含HA功能,其中可以提供的一种解决方案就是LDAP+KeepAlived实现HA。
二、Master配置
在master上启用添加syncprov模块来实现主从复制功能点,通过ldif文件来增加syncprov模块,无需重启ldap server。
GX-BATCH-NN-01# vim mod_syncprov.ldif
#注意:ldap默认的ldif是存放在/etc/openldap/schema路径下,如果你的*.ldif文件不在/etc/openldap/schema目录下,执 行命令的时候使用绝对路径(建议使用绝对路径)。
文件内容:
create new
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib/openldap
olcModuleLoad: syncprov.la
Ldap由于scheam的控制,文件里的属性有严格的控制,错误的或者不存在的属性将无法执行ldif文件,所以ldif文件的字体颜色会帮助我们配置ldif文件(属性:绿色,属性值:红色)。
GX-BATCH-NN-01#ldapadd -Y EXTERNAL -H ldapi:/// -f /ldif/mod_syncprov.ldif
执行完界面提示内容:
SASL/EXTERNAL authentication started
SASL username:gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=module,cn=config
GX-BATCH-NN-01# vim syncprov.ldif
文件内容:
create new
dn: olcOverlay=syncprov,olcDatabase={1}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionLog: 100
GX-BATCH-NN-01# ldapadd -Y EXTERNAL -H ldapi:/// -f /ldif/syncprov.ldif
执行完界面提示内容:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "olcOverlay=syncprov,olcDatabase={1}hdb,cn=config"
三、Slave配置
同样,在slave上也需要配置syncrepl,因为syncrepl实现的主从复制是单向的,即master的所有操作都会同步到slave上,slave无法同步到master上,为了避免master与slave上的数据不一致,slave上禁止对ldap信息的增删改操作,只允许查询操作。因为是单向的,故slave需要一些master的认证信息,以便从master同步数据
GX-BATCH-NN-02# vim syncrepl.ldif
文件内容:
create new
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
LDAP server's URI
provider=ldap://172.20.52.148:389/
bindmethod=simple
own domain name
binddn="cn=Manager,dc=asiainfo,dc=com"
directory manager's password
credentials=Ldap@123
searchbase="dc=asiainfo,dc=com"
includes subtree
scope=sub
schemachecking=on
type=refreshAndPersist
[retry interval] [retry times] [interval of re-retry][re-retry times]
retry="30 5 3003"
replication interval
interval=00:00:05:00
注意:一定要注意字体的颜色和上面一致,provider,bindmethod …… interval都是olcSyncRepl的属性值,不是与olcSyncRepl同级别,故其为红色。
GX-BATCH-NN-02# vim ldapadd -Y EXTERNAL -H ldapi:/// -f /ldif/syncrepl.ldif
执行完界面提示内容:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}hdb,cn=config
四、测试
- 查看master/slave的监听端口
GX-BATCH-NN-01#netstat -tnlp | grep 389 #master
GX-BATCH-NN-02#netstat -tnlp | grep 389 #slave
命令执行完成界面提示
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN -
tcp 0 0 :::389
- slave 中查看当前ldap用户列表
GX-BATCH-NN-02#ldapsearch -x -b 'ou=People,dc=asiainfo,dc=com',就可以看到自动从master同步过来是数据
- 在master新增/删除用户,确认是否同步。首先,在master上,准备增加用户的ldif脚本。
脚本内容:
create new
replace to your own domain namefor "dc=,dc=" section
dn: uid=asiainfo,ou=People,dc=asiainfo,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: ASIAINFO
sn: TEST
userPassword: {SSHA}c63ddiyMRaL2UjVtQZHBCu0fbdmX996F #ssha加密后的值: suse
loginShell: /bin/bash
uidNumber: 1612
gidNumber: 1612
homeDirectory: /app11
dn: cn=asiainfo,ou=Group,dc=asiainfo,dc=com
objectClass: posixGroup
cn: ASIAINFO
gidNumber: 1612
memberUid:uid=asiainfo,ou=People,dc=asiainfo,dc=com
然后,在master上,导入ldif脚本:
GX-BATCH-NN-01# ldapadd -x -D cn=admin,dc=asiainfo,dc=com -W -f /tmp/ldap/ ldap_asiainfo-crm.ldif
执行完命令提示:
Adding new entry “uid=asiainfo,ou=People,dc=asiainfo,dc=com”
Adding new entry “cn=asiainfo,ou=Group,dc=asiainfo,dc=com”
在slave中查看是否同步完成
GX-BATCH-NN-02#ldapsearch -x -b 'ou=People,dc=asiainfo,dc=com'|grep asiainfo
执行完命令提示的内容里包含了uid=asiainfo:
People, asiainfo.com
dn: ou=People,dc=asiainfo,dc=com
asiainfo, People, asiainfo.com
dn: uid=asiainfo,ou=People,dc=asiainfo,dc=com
uid: asiainfo
到此表示主从同步完成。
作者:蒋尐文
来源:CSDN
原文:https://blog.csdn.net/xiaowen_1990/article/details/79651099
版权声明:本文为博主原创文章,转载请附上博文链接!