一、前沿:
本文只是包含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 |
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 |
modifying entry "olcDatabase={1}hdb,cn=config
四、测试
1. 查看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
2. slave 中查看当前ldap用户列表
GX-BATCH-NN-02#ldapsearch -x -b 'ou=People,dc=asiainfo,dc=com',就可以看到自动从master同步过来是数据
3. 在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