歡迎您光臨本站 註冊首頁

openldap-v2.4最新版主從配置詳細介紹-純手打絕版

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

openldap-v2.4最新版主從配置詳細介紹-純手打絕版

openldap-v2.4主從配置

前言:

新版最大的功能就是真正實現了雙向複製。可以是2個主master LDAP互備,也可以使多個MASTER LDAP服務器備份。無論哪一台宕機,只要有一台master正常,其他宕機的LDAP服務器重新啟動起來后,用戶數據同步更新。

Openldapv2.3版本以前的同步複製缺點

slurpd守護進程是以推模式操作:
主伺服器推變更到從伺服器

·
它是不可靠的

o
它對replog中的記錄的次序極為敏感

o
它可能很容易失去同步, 這時需要手工干預來從主目錄重新同步從伺服器資料庫

o
它對不可用的伺服器不是非常寬容. 如果一個從伺服器長時間停機,replog可能變得太大以至於slurpd無法處理

·
它只工作在推模式。

(也可以設成拉模式,rpm安裝方式參數已詳細說明,只不過slave那台不保存任何用戶數據。全部數據都在master上面修改。類似在master主機只是建立了一個快捷方式到slave上。)

·
它需要停止和重新啟動主伺服器來增加從伺服器

·
它只支持單一主伺服器複製





(新版主從配置有五種方式,這裡只講述最基本也是最簡單的Syncrepl主從配置,MirrorMode鏡像模式主從配置,N-Way Multi-Master(多主)三種方式,以及官方網站未提供的一個比較複雜的改造方案。

(新版最基本的同步方式)
1.Syncrepl




該方式是slave服務器以拉的方式同步master的用戶數據

使用該方式,是有缺點的,當你修改一個條目當中的一個屬性值,尤其是批量修改上萬個條目當中的一個屬性值,那麼該方式是不只是簡單的同步這一個屬性值,而是將這上萬個條目一起同步更新過來。



(文字翻譯為增強行的syncrepl)

2.Delta-syncrepl


就是比上面syncrepl多了一個是基於日誌的同步功能哈。通俗的說就是你在master每更改一筆數據,那麼就會產生一個日誌文件,你具體修改到哪裡了,然後slave通過你master的日誌進行相應的修改。所以這個就克服了沒必要把一整個條目都複製過來。條目是什麽?趕緊去翻官方資料吧,英文就是entry。

以上2種方式類似舊版的單向同步功能。



3.N-Way Multi-Master

多主MASTER方式同步LDAP信息。



4.MirrorMode


該方式是服務器互相以推的方式同步用戶數據。

MirrorMode只支持2個主MASTER(並不是說鏡像模式只能做2台LDAP,而是只有2個MASTER起作用可以推送數據出去,其他的LDAP服務器也會同步更新,只要把提供者指定到這2個MASTER任意一台即可),當你設定超過2台的時候,該模式只有最開始設定的那2台是MASTER,能主動互相推送數據。後面超過的如第三台LDAP3或LDAP4時,這些自動全部變成單向同步,即只有那2個主MASTER修改用戶數據后可以同步到下面的第三台或第四台LDAP上, LDAP3,LDAP4做任何動作都無法將數據同步到主master上。也不會同不到其他LDAP服務器上,有點類似老版本slurp的效果。

如果你的企業有多家公司,而你又不希望太多人有修改同步數據權限,那麼可以使用此方式。













5.Syncrepl Proxy


代理同步。言外之意將保留用戶信息的MASTER主機隱藏起來,而代理機上面的LDAP通過Syncrepl從MASTER主機以拉的方式同步maser用戶數據,當代理主機發生改變時,代理主機的LDAP又以推的方式將數據更新到更下層的slave LDAP服務器上。而slave LDAP是沒有權限去更改代理服務為那台LDAP用戶信息,只有讀取權限,什麽,這種情況類似老版本的slurp單向同步功能,並且和老版本slurp一樣可以建立一個快捷方式(這個快捷方式不保留任何數據,數據全部保留在你去指定的那台LDAP服務器上,只是說你可以通過這個快捷方式在slave LDAP服務器上也可以修改數據。該快捷方式具體應用可以去查看RPM包方式當中安裝方法里有說明。)


6. N-Way Multi-Master自行改造版。官方無配置檔案和說明。

(推薦使用)
可以任意設定多個mastere和多個slave。一台LDAP服務器即可以推送數據出去,也可以從別的master主機拉數據過來,





N-Way Multi-Master變種

l
同步方式一:最基本的Syncrepl方式同步。

(Syncrepl是新版主從同步數據的方式,用來取代舊版slupd的同步方式。)
這種方式有點類似舊版的同步方式,只能在MASTER上更改數據。Slave沒有權限做任何操作。所以結合後面的mirror鏡像模式即mirror+syncrepl即可實現以下用戶數據多種同步方式:
   1.jpg (74.42 KB)

2013-10-18 15:29

























1.
從圖上可以看出MASTER1和MASTER2是做的mirror鏡像模式。那麼2個主MASTER是互備的,也就是說2台都可以更改數據。任意一台MASTER更改數據后,都會主動推送數據給對方的MASTER。



2.
圖中的四台slave,全部採用新版最基本的Syncrepl模式,採用該模式后,slave是沒有權限修改自身數據,只能主動從各自的master主機獲取數據來更新。

3.mirror模式不懂沒關係,後面可以看到,其實很簡單。



4.同時使用該2種模式的時候,請務必將主master和從slave之間用戶數據手動修改到一樣。



master 主機配置增加如下參數

overlaysyncprov
後端工作在overlay模式下



syncprov-checkpoint100 10

同步的滿足條件,當滿足修改100個條目或10分鐘主動進行推送一次。



syncprov-sessionlog100

會話日誌條目的最大數量



MASTER大致就是增加下面三行,其他的參數請參照RPM包參數設定即可。

overlaysyncprov
syncprov-checkpoint100 10

syncprov-sessionlog100









Slave 主機配置增加如下參數



syncrepl rid=123


設定主機id號(<rid>必須超過三位數字)


provider=ldap://172.16.9.132:389


設定提供者的IP(也就是MASTER主機IP)

type=refreshOnly
設定模式為拉

(拉的意思是主動從master上進行同步更新數據)

interval=01:00:00:00
設定更新時間,一天更新一次

(interval格式day:hour:minitus:
second)設定一天的話,slave就會每個一天主動從master拉數據。

searchbase="dc=kingbright,dc=com"
搜索後綴(搜索根目錄)
filter="(objectClass=*)"

同步搜索時,搜索 objectClass 是 organizationalPerson 的條目,如用星號*表示,則是搜索所有類型。


scope=sub
匹配根目錄下所有條目
(匹配範圍: base只與所給的DN相匹配,one只與父條目是所給DN的條目相匹配,sub只與根為所給DN的子樹下是所有條目相匹配
attrs="*,+"



複製所有屬性
#attrs="cn,sn,ou,telephoneNumber,title,l"
複製指定的屬性


schemachecking=off

同步更新時是否開啟檢查schema的一致性


bindmethod=simple
以下三項和舊版本內容一樣不做解釋。


binddn="cn=root,dc=kingbright,dc=com"

credentials=3Eg+gKegvZ73HYz5c2c5JA==


SLAVE綜所上述大致增加以下幾行

syncrepl rid=123

provider=ldap://172.16.9.132:389

type=refreshOnly

interval=01:00:00:00

searchbase="dc=kingbright,dc=com"

filter="(objectClass=*)"
scope=sub
attrs="*,+"

schemachecking=off


bindmethod=simple


binddn="cn=root,dc=kingbright,dc=com"

credentials=3Eg+gKegvZ73HYz5c2c5JA==







《解決方案》

你好,作為初學者,我想請問下mirror mode裡面 bindmethod用了simple,所以rootpw必須是明文吧?credentials指的不就是另一台伺服器的rootpw么?
我試驗這樣配置就不能成功的的同步,如果密碼都改成明文就可以。
可不可以指點下用加密過的密碼如何實現同步呢?

bindmethod=simple
credentials=3Eg+gKegvZ73HYz5c2c5JA==
《解決方案》

回復 2# tiangexuan



bindmethod=simple 機制不變。(openldap一共三種機制simple/sasl/kerberos認證),加密也是屬於simple機制。

這裡還有一個設定用戶賬號的地方。

credentials=3Eg+gKegvZ73HYz5c2c5JA==       (此參數本來就暗文明文都支持,我不知道你的版本是多少)



  bindmethod=simple                                         密碼機制
  binddn="cn=root,dc=kingbright,dc=com"          使用同步的帳號
  credentials=3Eg+gKegvZ73HYz5c2c5JA==        使用同步的密碼
  credentials=a123456                                       也是可以。
請保持主從openldap服務器上述一致設定,另外,你把不要把這個同步的密碼理解為別人訪問你的,而是他訪問別人的時候要用到的密碼。



另外你真想提高同步安全性,靠這個md5密碼,純屬沒安全性。你應該使用ssl連接同步。不過這個配置比較複雜,給你提供一部份代碼



服務器A配置如下

syncrepl rid=001
  provider=ldaps://172.16.9.158:636                     B ip地址
  type=refreshAndPersist                              推模式
  retry="5 5 300 +"
  searchbase="dc=kingbright,dc=com"
  attrs="*,+"
  bindmethod=simple
  binddn="cn=root,dc=kingbright,dc=com"
  credentials=3Eg+gKegvZ73HYz5c2c5JA==
  starttls=yes                    開始tls連接
tls_cert=/usr/local/etc/openldap/cacerts/newcert.cert  服務器A的證書
tls_key=/usr/local/etc/openldap/cacerts/newreq.key   服務器A的私鑰
tls_cacert=/usr/local/etc/openldap/cacerts/cacert.pem  服務器A的CA證書
  tls_reqcert=never                      不要求對方提供證書和私鑰




《解決方案》


回復 3# woxizishen
你好~謝謝你的耐心解答。

1. 我用的版本是openldap-2.4.23-31.el6.x86_64 。
2. 我看到openldap的手冊里是這麼寫的,所以我理解為simple模式只能用明文做密碼。
A  bindmethod  of  simple  requires  the        options   binddn   and              credentials  and        should        only  be  used        when adequate security              services (e.g. TLS or IPSEC) are        in  place.   REMEMBER:        simple              bind  credentials  must  be  in cleartext!
3. 還有這句話「你把不要把這個同步的密碼理解為別人訪問你的,而是他訪問別人的時候要用到的密碼。」我不是特別理解。指的是兩個伺服器之間的訪問密碼么?4. 我的伺服器是這麼配的。A和B的控制賬號和密碼完全相同,只是ip不同。當我密碼用明文的時候就可以同步,但是密碼如果用的是密文就不能同步。是不是我其他的配置有問題呢?5. 還有database monitor這個資料庫到底是起什麼作用的呢?一直不明白為什麼要配置這個資料庫。6. sasl加密沒有tls安全么?
伺服器Amoduleload syncprov.la
database        bdbsuffix          "dc=****,dc=****"checkpoint        1024 15
rootdn          "cn=manager,dc=***,dc=***"
rootpw          {SSHA}cXUVsI2kuKNK9kjCagWtvraossyAKuhX
directory       /var/lib/ldap/tmsr
access to *        by self write        by * read

# Indices to maintain for this databaseindex objectClass,entryCSN,entryUUID                       eq,presindex ou,cn,mail,surname,givenname      eq,pres,subindex uidNumber,gidNumber,loginShell    eq,presindex uid,memberUid                     eq,pres,subindex nisMapName,nisMapEntry            eq,pres,sub
serverID 1   (A和B伺服器這裡是不同的)
syncrepl  rid=111          provider=ldap://*****   (A和B伺服器這裡是對方的IP)          bindmethod=simple          binddn="cn=manager,dc=***,dc=***"          credentials={SSHA}cXUVsI2kuKNK9kjCagWtvraossyAKuhX          searchbase="dc=****,dc=***"          schemachecking=on          type=refreshAndPersist          retry="60 +"mirrormode onoverlay syncprovsyncprov-checkpoint 100 10syncprov-sessionlog 100
#enable monitoringdatabase monitor# allow onlu rootdn to read the monitoraccess to attrs=userPassword,shadowLastChange        by self write        by users read        by anonymous auth#       by * noneaccess to *        by dn.exact="cn=manager,dc=tmsr,dc=org" write#        by * read        by users read        by anonymous read


   
《解決方案》

woxizishen 發表於 2013-11-01 11:49 static/image/common/back.gif
openldap-v2.4主從配置

前言:


這個裡面,好多圖片出不來呢

[火星人 ] openldap-v2.4最新版主從配置詳細介紹-純手打絕版已經有623次圍觀

http://coctec.com/docs/service/show-post-10770.html