因爲公司的的單點登陸使用及其餘平臺(gitlab,sentry,wiki,jira)等都使用LDAP做爲用戶認證,因此LDAP的服務高可用就顯得很重要git
爲了能達到高可用,搭建LDAP的雙主模式,使用負載均衡分發到LDAP的服務上負載均衡
因爲官方文檔寫得也不是很全面,加上英文理解有限,調研大概半個月的時間,最後仍是摸索出來啦,不容易,分享給須要的朋友ide
LDAP的搭建請參考另一篇博客 :http://www.javashuo.com/article/p-ftsnjgpu-bv.htmlgitlab
2.若是已經上線LDAP服務,須要先將數據同步ui
a. 在sever A,即便已經提供服務的LDAP,而且有LDAP帳號數據,備份數據spa
# 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 後爲密碼orm
b.在新搭建的LDAP server B上導入server A 的數據 server
#ldapadd -x -c -D "cn=Manager,dc=test,dc=com" -w "password" -f ldap.ldifblog
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,看下同步信息及有無報錯