由于公司的的单点登录使用及其他平台(gitlab,sentry,wiki,jira)等都使用LDAP作为用户认证,所以LDAP的服务高可用就显得很重要
为了能达到高可用,搭建LDAP的双主模式,使用负载均衡分发到LDAP的服务上
由于官方文档写得也不是很全面,加上英文理解有限,调研大概半个月的时间,最后还是摸索出来啦,不容易,分享给需要的朋友
LDAP的搭建请参考另外一篇博客 :https://blog.51cto.com/12113362/2050563
2.如果已经上线LDAP服务,需要先将数据同步
a. 在sever A,即使已经提供服务的LDAP,并且有LDAP账号数据,备份数据
# ldapsearch -x -b "dc=test,dc=test,dc=com" -D "cn=Manager,dc=test,dc=com" -w "password" > ldap.ldif (在sever A,即使已经提供服务的LDAP,并且有LDAP账号数据)
#cn=Manager,dc=test,dc=com 为管理员的登录dn,-w 后为密码
b.在新搭建的LDAP server B上导入server A 的数据
#ldapadd -x -c -D "cn=Manager,dc=test,dc=com" -w "password" -f ldap.ldif
3.修改配置文件(serverA,serverB 都修改)
a.搭建完成LDAP之后,停服 systemctl stop slapd
b.在原有的sladp.ldif配置文件中添加以下内容:
开启选项(原配置是注释)
olcModuleload: syncprov.la
olcModulepath: /usr/lib64/openldap
修改及添加配置文件(对应的dn为olcDatabase=mdb,cn=config)
olcDbIndex: objectClass pres,eq
olcDbIndex: ou,cn,mail,surname,givenname pres,eq,sub
olcDbIndex: uidNumber,gidNumber,loginShell pres,eq
olcDbIndex: uid,memberUid pres,eq
olcSyncRepl: rid=004 provider="ldap://*.*.*.*:389/" binddn="cn=Manager,dc=test,dc=com" bindmethod=simple credentials="****" searchbase="o=yongqianbao,dc=yongqianbao,dc=com" filter="(objectClass=*)" scope=sub attrs="*,+" type=RefreshAndPersist retry="5 5 300 5" timeout=1 schemachecking=on
olcMirrorMode: TRUE
需要注意的地方:
-
-
rid要相同
provider 是对方ldap的地址及端口
binddn 是admin登录的dn
credentials 为登录密码
-
配置文件末尾添加以下内容(dn之间需要有空行隔开):
dn: olcOverlay=syncprov,olcDatabase={2}mdb,cn=config
objectclass: olcSyncProvConfig
olcOverlay: syncprov
-
修改完配置文件之后,需要重新生成
-
-
rm -rf slapd.d/* r(已上线的环境,最好先备份再删除)
cat slapd.ldif | slapadd -v -F /etc/openldap/slapd.d -n 0
chown -R ldap:ldap /etc/openldap/slapd.d
systemctl start slapd
-
验证,在server A上创建一个账户,检查是否同步到server B上,也可以查看日志信息 /var/log/slapd/slapd.log,看下同步信息及有无报错
转载于:https://blog.51cto.com/12113362/2050734