溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

OpenLDAP Master-Slave同步復(fù)制

發(fā)布時間:2020-06-22 15:02:13 來源:網(wǎng)絡(luò) 閱讀:30964 作者:skypeGNU1 欄目:建站服務(wù)器

1、實驗環(huán)境說明

用于做OpenLDAP同步的兩臺機器的IP分別為: 192.168.1.35(Master),  192.168.1.36(Slave)

操作系統(tǒng): CentOS 6.5 x64 , 并且已經(jīng)安裝好 OpenLDAP ,其管理員為 cn=Manager,dc=test,dc=com, 管理員密碼: ldap

實驗環(huán)境: VMware Workstation , 可以先安裝好 Master, 然后直接克隆一個鏡像作為 Slave

OpenLDAP 安裝配置請參考:  OpenLDAP安裝與基本配置


2、實驗?zāi)康?br />

為了避免單點故障,通常都會采用雙機環(huán)境。使用OpenLDAP復(fù)制同步功能,保持Master 與 Slave 的數(shù)據(jù)一致性。

  • Ldap Master : 提供所有的更新、修改

  • Ldap Slave : 提供給各種應(yīng)用(jira, zabbix, svn ...)調(diào)用


配置過程相當(dāng)坎坷。

生產(chǎn)環(huán)境中,ldap server都部署2臺,做主從配置,這樣可以提供目錄服務(wù)的高可用性,兩臺ldap服務(wù)器之間自動同步數(shù)據(jù)。配置openldap主從結(jié)構(gòu),或許網(wǎng)上會有很多的文章或者博客介紹,但是絕大部分都是基于2.3的版本,注意2.3的主從配置是不適用于2.4的,所以如果要使用openldap2.4配置主從結(jié)構(gòu),在搜索的時候要注意。然而,即使百度了也會發(fā)現(xiàn),網(wǎng)上只有寥寥幾篇關(guān)于 openldap 2.4的主從配置文檔,而且還都是淺嘗輒止,當(dāng)然,文章的作者可能已經(jīng)對配置神而明之了,但是讀者看了之后絕對會“暈而乎之”的,大多數(shù)的高手就甩給你一個slapd.conf針對replication的配置,然后就沒有然后了。沒轍,為了能get這個技能,只有×××了,Google了一下,其實有用的也就是官方的administrator手冊,看手冊是最能理解replication是怎么一回事兒的,但是前提是你有耐心,而且英語可以還不能較真(因為里面的句子真心覺得翻譯起來不是那么回事兒),好吧,原來Google上關(guān)于這方面的文檔也不是很多,最后也只能看官方手冊,然后自己動手了。


3、實現(xiàn)原理

其實現(xiàn)原理如下圖,當(dāng)在主服務(wù)器上更新數(shù)據(jù)時,該更新通過更新日志記錄,并將更新復(fù)制到從服務(wù)器上。當(dāng)在從服務(wù)器上更新數(shù)據(jù)時,該更新請求將重定向給主服務(wù)器,然后主服務(wù)器將更新數(shù)據(jù)復(fù)制到從服務(wù)器。

OpenLDAP Master-Slave同步復(fù)制


4、配置過程(syncrepl 模式)

注意:在進行下面的操作前,請先確保你的OpenLDAP 已經(jīng)正常安裝。


4.1 OpenLDAP 前期配置準備

同步數(shù)據(jù)初始化

在Master 與 Slave 上都執(zhí)行,清除LDAP數(shù)據(jù)庫的數(shù)據(jù):

# ldapdelete -x -D "cn=Manager,dc=test,dc=com" -w ldap -r "dc=test,dc=com"

# 準備 ldif 數(shù)據(jù)
# cat /tmp/base.ldif 
dn: dc=test,dc=com
dc: test
objectClass: top
objectClass: domain

dn: ou=People,dc=test,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=test,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit

# 分別在 Master, Slave 導(dǎo)入
# ldapadd -x -D "cn=Manager,dc=test,dc=com" -w ldap -f /tmp/base.ldif


4.2 主服務(wù)器(Master)配置

1、首先停止 slapd 服務(wù)

# service slapd stop

2、編輯 /etc/openldap/slapd.conf配置文件

# cp /etc/openldap/slapd.conf /etc/openldap/slapd.conf.bak
# vim /etc/openldap/slapd.conf
modulepath /usr/lib/openldap
modulepath /usr/lib64/openldap

moduleload syncprov.la
        
index entryCSN,entryUUID                eq

overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100

注:這里對slapd.conf文件所做的修改如下:

     1)取消了modulepath /usr/lib/openldap, modulepath /usr/lib64/openldap 之前的注釋

     2)取消了moduleload syncprov.la之前的注釋

     3)在index nisMapName,nisMapEntry            eq,pres,sub  這一行之后添加如下內(nèi)容:      

            # master replia server start

            overlay syncprov

            syncprov-checkpoint 100 10

            syncprov-sessionlog 100


3、配置好,重點來了?。?!

      你直接啟動ldap(/etc/init.d/slapd start)是不讀新的配置的,以我暫且的測試結(jié)果來講是發(fā)現(xiàn)這么個情況的!

所以,要這樣

#刪除就得配置緩存(暫且這么理解吧), 如果生產(chǎn)環(huán)境,建議先備份
rm -rf /etc/openldap/slapd.d/*

#測試
# slaptest -u

#生成新的
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
chown -R ldap:ldap /etc/openldap/slapd.d/

#如果前面2條命令都是 succeeded, 就可以重啟slapd服務(wù)了
#最后一步,重啟slapd服務(wù),至此主節(jié)點的配置完成。
service slapd restart


4.3 從服務(wù)器(Slave)配置

1、首先停止 slapd 服務(wù)

# service slapd stop

2、編輯 /etc/openldap/slapd.conf配置文件

# cp /etc/openldap/slapd.conf /etc/openldap/slapd.conf.bak
# vim /etc/openldap/slapd.conf

modulepath /usr/lib/openldap
modulepath /usr/lib64/openldap

moduleload syncprov.la

index entryCSN,entryUUID                eq

syncrepl      rid=123
        provider=ldap://192.168.1.35:389
        type=refreshOnly
        retry="5 5 300 5"
        interval=00:00:01:00
        searchbase="dc=test,dc=com"
        filter="(objectClass=*)"
        scope=sub
        attrs="*"
        schemachecking=off
        bindmethod=simple
        binddn="cn=Manager,dc=test,dc=com"
        credentials=ldap


注:這里對slapd.conf文件所做的修改如下:

         1)取消了modulepath /usr/lib/openldap,modulepath /usr/lib64/openldap之前的注釋

         2)取消了moduleload syncprov.la之前的注釋

         3)在index nisMapName,nisMapEntry            eq,pres,sub這一行之后添加如下內(nèi)容:    

             # slave replica statement start

             syncrepl  rid=123                                                                provider=ldap://192.168.1.35:389

                   type=refreshOnly

               interval=00:00:01:00

               searchbase="dc=test,dc=com"

               scope=sub

               attrs="*"

               schemachecking=off

               bindmethod=simple

               binddn="cn=Manager,dc=test,dc=com"

               credentials=123456


3、配置好,重點來了?。?!

      你直接啟動ldap(/etc/init.d/slapd start)是不讀新的配置的,以我暫且的測試結(jié)果來講是發(fā)現(xiàn)這么個情況的!

所以,要這樣

#刪除就得配置緩存(暫且這么理解吧), 如果生產(chǎn)環(huán)境,建議先備份
rm -rf /etc/openldap/slapd.d/*

#測試
# slaptest -u

#生成新的
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
chown -R ldap:ldap /etc/openldap/slapd.d/

#如果前面2條命令都是 succeeded, 就可以重啟slapd服務(wù)了
#最后一步,重啟slapd服務(wù),至此主節(jié)點的配置完成。
service slapd restart


4.4 測試數(shù)據(jù)同步

1、在 Master 上準備測試數(shù)據(jù),添加一個新用戶

# cat /tmp/passwd.ldif 
dn: uid=ldap,ou=People,dc=test,dc=com
uid: ldap
cn: LDAP User
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}!!
shadowLastChange: 17334
loginShell: /sbin/nologin
uidNumber: 55
gidNumber: 55
homeDirectory: /var/lib/ldap
gecos: LDAP User

2、然后在 Master 導(dǎo)入

# ldapadd -x -D "cn=Manager,dc=test,dc=com" -w ldap -f /tmp/passwd.ldif

3、在Master和Slave上面分別查詢

# ldapsearch -x -H ldap://192.168.1.35 -b "dc=test,dc=com" |grep uid=ldap
dn: uid=ldap,ou=People,dc=test,dc=com

# ldapsearch -x -H ldap://192.168.1.36 -b "dc=test,dc=com" |grep uid=ldap
dn: uid=ldap,ou=People,dc=test,dc=com

4、在Master 和 Slave 上查看同步日志記錄

# tail -f /var/log/ldap.log



要點1 在配置數(shù)據(jù)復(fù)制前 保證主備初始化數(shù)據(jù)的一致

2 停掉主服務(wù)器  更改主服務(wù)器的配置文件

3 停掉備服務(wù)器  更改備服務(wù)器的配置文件

4 重起 主備服務(wù)器進程

5 驗證同步



向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI