OpenLDAP使用管理員指南_第1頁
OpenLDAP使用管理員指南_第2頁
OpenLDAP使用管理員指南_第3頁
OpenLDAP使用管理員指南_第4頁
OpenLDAP使用管理員指南_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

OpenLDAP管理員指南LDAP是如何工作的?LDAP采用客戶-服務(wù)器模式.包含在一個(gè)或多個(gè)LDAP服務(wù)器中的數(shù)據(jù)組成了目錄信息樹(DIT).客戶端連接到服務(wù)器然后問一個(gè)問題.服務(wù)器返回一個(gè)應(yīng)答或一個(gè)指針告訴客戶端去哪里獲得更多的信息(通常是另一臺(tái)LDAP服務(wù)器).客戶端連接哪臺(tái)LDAP服務(wù)器不重要,目錄的視圖看起來都一樣;一個(gè)提交到某臺(tái)LDAP服務(wù)器的名字在另一臺(tái)LDAP服務(wù)器上也將指向相同的條目.這是全球目錄服務(wù)的一個(gè)重要功能.關(guān)于X.500技術(shù)上來講,LDAP是一個(gè)針對X.500目錄服務(wù)(OSI目錄服務(wù))的目錄訪問協(xié)議.起初,LDAP客戶端通過網(wǎng)關(guān)訪問X.500目錄服務(wù).客戶端和網(wǎng)關(guān)之間跑的是LDAP,而網(wǎng)關(guān)和X.500服務(wù)之間跑的是X.500的目錄訪問協(xié)議(DAP).DAP是一個(gè)重量級的協(xié)議,它操作完整的OSI協(xié)議棧并且需要大量的計(jì)算資源.LDAP設(shè)計(jì)成通過TCP/IP操作并以非常少的開銷來提供DAP的大部分功能.雖然LDAP仍被用于通過網(wǎng)關(guān)訪問X.500目錄服務(wù),LDAP現(xiàn)在更常見的是直接在X.500服務(wù)器上實(shí)現(xiàn).標(biāo)準(zhǔn)的LDAP守護(hù)進(jìn)程,或曰slapd(8),可以被視為一個(gè)輕量級的X.500目錄服務(wù).也就是說,它既不由X.500'sDAP實(shí)現(xiàn),也不支持完整的X.500模型.如果你以及功能運(yùn)行了一個(gè)X.500DAP服務(wù)并且你想繼續(xù)這么干,可能你不用讀這本指南了.這份指南全部是關(guān)于通過slapd(8)運(yùn)行LDAP,而不是運(yùn)行X.500DAP.如果你沒有運(yùn)行X.500DAP,希望停止運(yùn)行X.500DAP,或最近沒有打算運(yùn)行X.500DAP,請繼續(xù).從一個(gè)LDAP目錄服務(wù)器復(fù)制數(shù)據(jù)到一個(gè)X.500DAPDSA是有可能的.這需要一個(gè)LDAP/DAP網(wǎng)關(guān).OpenLDAP軟件不包含這樣一個(gè)網(wǎng)關(guān).LDAPv2和LDAPv3之間有何不同?LDAPv3在20實(shí)際90年代末期開發(fā)用來替代LDAPv2.LDAPv3為LDAP增加了以下功能:使用SASL實(shí)現(xiàn)強(qiáng)驗(yàn)證和數(shù)據(jù)安全服務(wù)使用TLS(SSL)實(shí)現(xiàn)證書驗(yàn)證和數(shù)據(jù)安全服務(wù)使用Unicode實(shí)現(xiàn)國際化轉(zhuǎn)發(fā)和配置規(guī)劃發(fā)現(xiàn)擴(kuò)展性(控制,擴(kuò)展操作,以及更多)LDAPv2過時(shí)了(RFC3494).大部分所謂LDAPv2實(shí)現(xiàn)(includingslapd(8))已經(jīng)不符合LDAPv2技術(shù)規(guī)范了,那些聲稱支持LDAPv2的實(shí)現(xiàn)之間的互操作性是有限的.由于LDAPv2和LDAPv3顯著的差異,同時(shí)部署LDAPv2和LDAPv3是很成問題的.應(yīng)該避免使用LDAPv2.LDAPv2缺省是被禁用的.LDAPvsRDBMS這個(gè)問題被提到很多次,以不同的形式.最常見的是:為什么OpenLDAP不放棄BerkeleyDB而使用一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)替代它?通常,我們可以預(yù)期商業(yè)級RDBMS的復(fù)雜算法將使OpenLDAP更快或者反正是更好,同時(shí)允許其他應(yīng)用程序分享其數(shù)據(jù).簡單的答案是,使用嵌入式數(shù)據(jù)庫和定制的索引系統(tǒng)允許OpenLDAP提供更高的性能和可擴(kuò)展性而又不減少可靠性.OpenLDAP使用BerkeleyDB并行/事務(wù)數(shù)據(jù)庫軟件.業(yè)界領(lǐng)先的商業(yè)目錄軟件也使用同樣的軟件.現(xiàn)在來詳細(xì)回答一下.任何時(shí)候我們總是面對RDBMSesvs.directories的選擇.很難選擇,并且不存在簡單的答案.給目錄一個(gè)關(guān)系數(shù)據(jù)庫管理系統(tǒng)的后端來解決所有問題,這個(gè)想法無疑是很誘人的.無論如何,它是一頭豬(譯者:呃,老外罵人了).這是因?yàn)閿?shù)據(jù)模型是非常不同的.用關(guān)系型數(shù)據(jù)庫去表現(xiàn)目錄數(shù)據(jù),將需要把數(shù)據(jù)分割到多個(gè)表里面.考慮一下關(guān)于person這個(gè)objectclass.它的定義需要屬性類型objectclass,sn和cn,并且允許屬性類型userPassword,telephoneNumber,seeAlso以及description.所有這些屬性都是多值的,所以一個(gè)常規(guī)的需求就會(huì)把每個(gè)屬性類型放大一個(gè)單獨(dú)的表里面.現(xiàn)在你不得不決定這些表的適當(dāng)?shù)逆I.主鍵可能是一個(gè)DN的組合,但是這在絕大多數(shù)數(shù)據(jù)庫實(shí)現(xiàn)中是非常低效的.現(xiàn)在的大問題是根據(jù)一個(gè)條目請求去不同的磁盤區(qū)域訪問數(shù)據(jù).在某些應(yīng)用里面這個(gè)還可以做到,但是在很多應(yīng)用里面性能就很困難.唯一可以放到主表?xiàng)l目里面的屬性類型是那些強(qiáng)制性的和單值的.你也可以增加可選性的單值屬性并把他們設(shè)為NULL或其他什么東西.但是請等一下,這個(gè)條目有多個(gè)objectclasses并且他們組織成一個(gè)繼承的層次.一個(gè)objectclassorganizationalPerson的條目現(xiàn)在有從person來的屬性加上一些其他的以及一些原有的可選的屬性類型現(xiàn)在變成強(qiáng)制性的了.怎么辦?我們應(yīng)該用不同的表放不同的objectclasses嗎?這樣person將有一個(gè)條目在person表,另一個(gè)在organizationalPerson表,以此類推.或我們應(yīng)該不管person而把每樣?xùn)|西放在第二個(gè)表?但是對于類似(cn=*)這樣的過濾器,cn是一個(gè)在很多很多objectclasses里出現(xiàn)的屬性類型,我們怎么辦?我們應(yīng)該為匹配那個(gè)過濾器搜索所有可能的表嗎?不是很有吸引力.一旦達(dá)到這種程度,三種辦法浮現(xiàn)在腦海中。一個(gè)是做全面正?;?,以使每個(gè)屬性類型,不管如何,都有自己單獨(dú)的表。簡單的方法DN作為主鍵的一部分是非常浪費(fèi)的,并且調(diào)用的是那個(gè)條目的唯一性的數(shù)字id而不是鍵,并且需要一個(gè)表來負(fù)責(zé)映射DN到id。這個(gè)方法,無論如何,當(dāng)從一個(gè)或多個(gè)條目中請求很多屬性類型的時(shí)候是非常低效的.這樣一個(gè)數(shù)據(jù)庫,盡管繁瑣,也可能由SQL應(yīng)用程序管理.第二個(gè)辦法是把整個(gè)DN作為一個(gè)blob類型字段存在表里由所有條目共享,不管objectclass,并且額外的表作為第一個(gè)表的索引.索引表不是數(shù)據(jù)庫索引,而是完全由LDAP服務(wù)端實(shí)現(xiàn)來管理.無論如何,無法利用SQL數(shù)據(jù)庫了.因此,一個(gè)完全成熟的數(shù)據(jù)庫系統(tǒng)很少或根本沒有優(yōu)勢.全功能的通用數(shù)據(jù)庫是不需要的.更好的辦法是使用一些輕型快速的,如BerkeleyDB.從一種完全不同的方式來看這件事,就是放棄任何實(shí)現(xiàn)目錄數(shù)據(jù)模型的希望。在這種情況下,LDAP被用作一個(gè)對數(shù)據(jù)的訪問協(xié)議,這些數(shù)據(jù)僅提供目錄數(shù)據(jù)模型層面的數(shù)據(jù).例如,它可能是只讀,或允許更新,適用限制,如單值屬性類型允許多個(gè)值?;驘o法添加新的objectclasses到現(xiàn)有的條目或刪除其中之一。限制范圍的跨度從允許的限制(可能在其他地方造成的訪問控制結(jié)果),到直接侵犯數(shù)據(jù)模型。無論如何,它是一個(gè)可行的辦法,對之前就存在的用于其它應(yīng)用程序的數(shù)據(jù)提供LDAP操作.但是從概念上講,我們并不真的擁有一個(gè)"目錄".現(xiàn)有的商業(yè)LDAP服務(wù)器采用關(guān)系數(shù)據(jù)庫實(shí)現(xiàn)的,都是從第一種或第三種方法。我不知道任何使用關(guān)系數(shù)據(jù)庫的實(shí)現(xiàn)如何低效地執(zhí)行BDB做起來很高效的事情。對那些對"第三種"方法感興趣的人來說(把現(xiàn)有的數(shù)據(jù)的數(shù)據(jù)庫管理系統(tǒng)作為的LDAP樹,比起典型的LDAP模式有一定的局限性,但有可能在LDAP和SQL應(yīng)用之間實(shí)現(xiàn)互操作性):OpenLDAP包含了back-sql-這個(gè)后端使得它(第三種方法)成為可能.它使用ODBC+擴(kuò)展來把LDAP查詢翻譯成你的RDBMS規(guī)劃的SQL查詢,提供不同的級別的操作-從只讀到全訪問,取決于你使用的RDBMS,和你的規(guī)劃.更多關(guān)于概念和限制的信息,見slapd-sql(5)手冊頁,或Backends一節(jié).在back-sql/rdbms_depend/*子目錄也有很多關(guān)于RDBMS的例子.什么是slapd以及它能干什么?slapd(8)是一個(gè)LDAP目錄服務(wù)器,可以運(yùn)行在各種不同的平臺(tái)之上.你可使用它提供一個(gè)你自己的目錄服務(wù).你的目錄可能包含非常多期望放進(jìn)去的東西.你可以把它連接到全球LDAP目錄服務(wù)中,或完全自己運(yùn)行一個(gè)目錄服務(wù).一些slapd's更有意思的功能和能力包括:LDAPv3:slapd實(shí)現(xiàn)了輕量級目錄訪問協(xié)議的版本3.slapd支持LDAP運(yùn)行于IPv4和IPv6以及UnixIPC.簡單驗(yàn)證和安全層:slapd通過使用SASL支持強(qiáng)驗(yàn)證和數(shù)據(jù)安全(完整性和保密性)服務(wù).slapd的SASL實(shí)現(xiàn)利用了CyrusSASL軟件,它支持不少機(jī)制,包括DIGEST-MD5,EXTERNAL,和GSSAPI.傳輸層安全:slapd通過使用TLS的(或SSL)支持基于證書的身份驗(yàn)證和數(shù)據(jù)安全(完整性和保密性)服務(wù)。slapd的TLS實(shí)現(xiàn)可以利用OpenSSL或GnuTLS軟件。拓?fù)淇刂疲簊lapd可以被配置為根據(jù)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)信息限制訪問的套接字層。此功能利用了TCP包裝。訪問控制:slapd提供了豐富和強(qiáng)大的訪問控制設(shè)施,使您可以控制對你的數(shù)據(jù)庫的信息的獲取。您可以基于LDAP授權(quán)信息,IP地址,域名和其他標(biāo)準(zhǔn)控制對條目的訪問。slapd支持靜態(tài)和動(dòng)態(tài)的訪問控制信息。slapdprovidesarichandpowerfulaccesscontrolfacility,國際化:slapd支持Unicode和語言標(biāo)簽。可選的數(shù)據(jù)庫后端:slapd配備了各種不同的數(shù)據(jù)庫后端您可以從中選擇。它們包括BDB,一個(gè)高性能的交易數(shù)據(jù)庫后端;HDB,一個(gè)分級的高性能的交易后端;SHELL,一個(gè)后端接口通向任意shell腳本;和PASSWD,一個(gè)簡單的后端接口,到passwd(5)文件。BDB和HDB后端利用了OracleBerkeleyDB。多數(shù)據(jù)庫實(shí)例:slapd可以配置為在同一時(shí)間服務(wù)多個(gè)數(shù)據(jù)庫。這意味著,一個(gè)單一的slapd服務(wù)器能夠使用相同或不同的數(shù)據(jù)庫后端,響應(yīng)許多邏輯上不同的LDAP樹的請求。通用模塊API:如果您需要更加個(gè)性化,slapd讓你輕松地寫自己的模塊。slapd包括兩個(gè)不同的部分:處理和LDAP客戶溝通協(xié)議的前端;和處理特定任務(wù),如數(shù)據(jù)庫操作的模塊。因?yàn)檫@兩個(gè)部分之間通過一個(gè)明確界定的CAPI通訊,你可以用多種方式寫自己的定制模塊擴(kuò)展slapd。此外,提供了一些可編程數(shù)據(jù)庫模塊。這些允許你使用流行的編程語言(Perl,shell和SQL)暴露外部數(shù)據(jù)源給slapd。線程:slapd是線程高性能的。一個(gè)單一的多線程slapd進(jìn)程使用線程池處理所有傳入的請求。這減少了系統(tǒng)開銷,同時(shí)提供所需的高性能。復(fù)制:slapd可以被配置為維護(hù)目錄信息的影子復(fù)制。這個(gè)單主/多從復(fù)制規(guī)劃,對于安裝單一的slapd而不提供必要的可用性和可靠性的高容量環(huán)境,是至關(guān)重要的。對于不能接受單點(diǎn)故障的要求極高的環(huán)境,也可以用多主復(fù)制。slapd包含了對LDAP基于同步的復(fù)制的支持。代理緩存:slapd可以被配置為一個(gè)緩存的LDAP代理服務(wù)。配置:slapd是高度可配置的,通過一個(gè)單一的配置文件你可以改變一切,任何你想改變的東西。配置選項(xiàng)有合理的默認(rèn)值,使您的工作更加容易。配置也可以使用LDAP本身動(dòng)態(tài)的執(zhí)行,這極大地改善了可管理性。快速開始指南1.編輯配置文件.使用你偏愛的編輯器編輯附帶的slapd.conf(5)例子(通常安裝在/usr/local/etc/openldap/slapd.conf)來包含一個(gè)如下格式的BDB數(shù)據(jù)庫定義:databasebdbsuffix"dc=<MY-DOMAIN>,dc=<COM>"rootdn"cn=Manager,dc=<MY-DOMAIN>,dc=<COM>"rootpwsecretdirectory/usr/local/var/openldap-data確保以你的域名的適當(dāng)部分替換<MY-DOMAIN>和<COM>.例如,對于,使用:databasebdbsuffix"dc=example,dc=com"rootdn"cn=Manager,dc=example,dc=com"rootpwsecretdirectory/usr/local/var/openldap-data如果你的域包含額外的部分,例如.eu,使用:databasebdbsuffix"dc=eng,dc=uni,dc=edu,dc=eu"rootdn"cn=Manager,dc=eng,dc=uni,dc=edu,dc=eu"rootpwsecretdirectory/usr/local/var/openldap-data關(guān)于配置slapd(8)的細(xì)節(jié),可在slapd.conf(5)手冊頁,以及本文的slapd配置文件一章找到.注意啟動(dòng)slapd(8)之前那些定義的目錄必須實(shí)際存在.2.啟動(dòng)SLAPD.現(xiàn)在你準(zhǔn)備啟動(dòng)獨(dú)立的LDAP守護(hù)進(jìn)程,slapd(8),運(yùn)行這個(gè)命令:suroot-c/usr/local/libexec/slapd為了檢查服務(wù)器是否運(yùn)行以及是否被正確地配置好,你可以使用ldapsearch(1)針對它運(yùn)行一個(gè)搜索.缺省的,ldapsearch被安裝在/usr/local/bin/ldapsearch:ldapsearch-x-b''-sbase'(objectclass=*)'namingContexts注意在命令參數(shù)周圍使用單引號來避免shell被特殊字符中斷.它應(yīng)該返回:dn:namingContexts:dc=example,dc=com關(guān)于運(yùn)行slapd(8)的細(xì)節(jié)可以在slapd(8)手冊頁以及本文的運(yùn)行slapd一章找到.3.添加初始條目到目錄中去.你可以使用ldapadd(1)添加條目到你的LDAP目錄.ldapadd期待的輸入是LDIF格式.我們將分兩步走:建立LDIF文件運(yùn)行l(wèi)dapadd使用你偏愛的編輯器新建一個(gè)LDIF文件,包含如下內(nèi)容:dn:dc=<MY-DOMAIN>,dc=<COM>objectclass:dcObjectobjectclass:organizationo:<MYORGANIZATION>dc:<MY-DOMAIN>

dn:cn=Manager,dc=<MY-DOMAIN>,dc=<COM>objectclass:organizationalRolecn:Manager確保使用你的域名的適當(dāng)部分替換<MY-DOMAIN>和<COM>.<MYORGANIZATION>應(yīng)該被你的機(jī)構(gòu)名稱替換掉.當(dāng)你剪切粘貼時(shí),確定本例中的每一行的前面和后面都沒有空格.dn:dc=example,dc=comobjectclass:dcObjectobjectclass:organizationo:ExampleCompanydc:example

dn:cn=Manager,dc=example,dc=comobjectclass:organizationalRolecn:Manager現(xiàn)在,你可以運(yùn)行l(wèi)dapadd(1)來添加這些條目到你的目錄.ldapadd-x-D"cn=Manager,dc=<MY-DOMAIN>,dc=<COM>"-W-fexample.ldif確保用你的域名的適當(dāng)部分替換<MY-DOMAIN>和<COM>.你將收到提示輸入密碼,也就是在slapd.conf中定義的"secret".例如,對于,使用:ldapadd-x-D"cn=Manager,dc=example,dc=com"-W-fexample.ldif這里example.ldif就是你上面新建的文件.另外關(guān)于建立目錄的信息可以在本文的數(shù)據(jù)庫建立和維護(hù)工具一章找到.4.看它是否起作用.現(xiàn)在我們準(zhǔn)備檢驗(yàn)?zāi)夸浿刑砑拥臈l目.你可使用任何LDAP客戶端來做這件事,但我們的例子使用ldapsearch(1)工具.記住把dc=example,dc=com替換成你的網(wǎng)站的正確的值:ldapsearch-x-b'dc=example,dc=com''(objectclass=*)'本命令將搜索和接收這個(gè)數(shù)據(jù)庫中的每一個(gè)條目.現(xiàn)在你準(zhǔn)備使用ldapadd(1)或其它LDAP客戶端添加更多的條目,試驗(yàn)更多的配置選項(xiàng),后端安排,等等.注意缺省的情況下,slapd(8)數(shù)據(jù)庫賦予閱讀權(quán)限給每個(gè)人,除了超級用戶(即配置文件中的rootdn參數(shù)).強(qiáng)烈建議你建立控制來限制授權(quán)用戶的操作.操作權(quán)限控制在訪問控制章討論.也鼓勵(lì)你閱讀安全事項(xiàng),使用SASL和使用TLS章節(jié).接下來的章節(jié)提供更多編譯,安裝和運(yùn)行slapd(8)的詳細(xì)信息.配置選擇本節(jié)概述了各種LDAP目錄配置,以及如何使您的獨(dú)立的LDAP守護(hù)進(jìn)程slapd(8)適合世界其他國家。本地目錄服務(wù)在這種配置中,您運(yùn)行slapd(8)實(shí)例,只為您的本地網(wǎng)域提供目錄服務(wù)。它不以任何方式與其他目錄服務(wù)器交互。這種配置如圖3.1.圖3.1:本地服務(wù)配置.如果您剛剛起步(快速啟動(dòng)指南的目的之一就是為了你這種人),或者如果你想提供本地服務(wù)且對連接到世界其他地區(qū)不感興趣,請使用此配置。如果以后你想的話,這也很容易升級到另一個(gè)配置。帶轉(zhuǎn)發(fā)的本地服務(wù)在這種配置中,您運(yùn)行slapd(8)實(shí)例,為您的本地網(wǎng)域提供目錄服務(wù),并配置它返回轉(zhuǎn)發(fā)到其他能夠處理請求的服務(wù)器。您可以自己運(yùn)行此服務(wù)(或多個(gè)服務(wù))或使用別人提供給您的服務(wù)。這種配置如圖3.2.圖3.2:帶轉(zhuǎn)發(fā)的本地服務(wù)如果你想提供本地服務(wù),并參與全球目錄,或者您想代表負(fù)責(zé)下屬條目到另一臺(tái)服務(wù)器,使用此配置。可復(fù)制的目錄服務(wù)slapd(8)包括了對LDAP基于同步的復(fù)制的支持,即所謂syncrepl,可用于在多個(gè)目錄服務(wù)器上維持目錄信息的影子復(fù)制。在其最基本的配置,主服務(wù)器是一個(gè)syncrepl供應(yīng)商,而一個(gè)或多個(gè)從服務(wù)器(或影子服務(wù)器)是syncrepl消費(fèi)者。一個(gè)主從配置的例子如圖3.3.多主機(jī)的配置,也支持。圖3.3:可復(fù)制的目錄服務(wù)此配置可用于頭兩個(gè)配置的任何一個(gè)情況下,例如一個(gè)單一的slapd(8)沒有提供所需的可靠性和可用性。分布式本地目錄服務(wù)在這種配置中,當(dāng)?shù)氐姆?wù)被分割成較小的服務(wù),每個(gè)都是可復(fù)制的,和上下級粘在一起轉(zhuǎn)發(fā)。編譯和安裝OpenLDAP軟件這一章詳細(xì)說明如何編譯和安裝包含了slapd(8),獨(dú)立的LDAP守護(hù)進(jìn)程的OpenLDAP軟件包。編譯和安裝OpenLDAP軟件需要幾個(gè)步驟:安裝依賴的軟件,配置OpenLDAP軟件本身,編譯,并最終安裝。以下各節(jié)詳細(xì)描述了此過程中。1、獲得和解包軟件您可以從該項(xiàng)目的下載頁面上/software/download/或直接從該項(xiàng)目的FTP服務(wù)在/pub/OpenLDAP/獲取OpenLDAP軟件。OpenLDAP軟件下載后,你需要從壓縮存檔文件提取發(fā)布版并更改您的工作目錄到發(fā)布版的根目錄:gunzip-copenldap-VERSION.tgz|tarxf-cdopenldap-VERSION你需要把VERSION換成發(fā)布版的實(shí)際版本號.2、依賴的軟件OpenLDAP軟件依靠一些第三方分發(fā)的軟件包。根據(jù)您打算使用的不同的功能,您可能必須下載并安裝一些額外的軟件包。(1)傳輸層安全OpenSSLisavailablefrom\o"/"/.GnuTLSisavailablefrom/software/gnutls/.(2)簡單驗(yàn)證和安全層CyrusSASLisavailablefrom\o"/sasl/sasl-library.html"/sasl/sasl-library.html.CyrusSASLwillmakeuseofOpenSSLandKerberos/GSSAPIlibrariesifpreinstalled.(3)Kerberos驗(yàn)證服務(wù)HeimdalKerberosisavailablefrom\o"http://www.pdc.kth.se/heimdal/"http://www.pdc.kth.se/heimdal/.MITKerberosisavailablefrom\o"/kerberos/www/"/kerberos/www/.(4)數(shù)據(jù)庫軟件BerkeleyDBisavailablefromOracleCorporation'sBerkeleyDBdownloadpage\o"/technology/software/products/berkeley-db/index.html"/technology/software/products/berkeley-db/index.html.Note:PleaseseeRecommendedOpenLDAPSoftwareDependencyVersionsformoreinformation.3、線程OpenLDAPisdesignedtotakeadvantageofthreads.OpenLDAPsupportsPOSIXpthreads,MachCThreads,andanumberofothervarieties.configurewillcomplainifitcannotfindasuitablethreadsubsystem.Ifthisoccurs,pleaseconsulttheSoftware|Installation|PlatformHintssectionoftheOpenLDAPFAQ\o"/faq/"/faq/.4、TCP包裝slapd(8)supportsTCPWrappers(IPlevelaccesscontrolfilters)ifpreinstalled.UseofTCPWrappersorotherIP-levelaccessfilters(suchasthoseprovidedbyanIP-levelfirewall)isrecommendedforserverscontainingnon-publicinformation.5、運(yùn)行configureNowyoushouldprobablyruntheconfigurescriptwiththe--helpoption.ThiswillgiveyoualistofoptionsthatyoucanchangewhenbuildingOpenLDAP.ManyofthefeaturesofOpenLDAPcanbeenabledordisabledusingthismethod../configure--helpNowruntheconfigurescriptwithanydesiredconfigurationoptionsorenvironmentvariables.[[env]settings]./configure[options]Asanexample,let'sassumethatwewanttoinstallOpenLDAPwithBDBbackendandTCPWrapperssupport.Bydefault,BDBisenabledandTCPWrappersisnot.So,wejustneedtospecify--with-wrapperstoincludeTCPWrapperssupport:./configure--with-wrappersHowever,thiswillfailtolocatedependentsoftwarenotinstalledinsystemdirectories.Forexample,ifTCPWrappersheadersandlibrariesareinstalledin/usr/local/includeand/usr/local/librespectively,theconfigurescriptshouldbecalledasfollows:envCPPFLAGS="-I/usr/local/include"LDFLAGS="-L/usr/local/lib"\./configure--with-wrappersNote:Someshells,suchasthosederivedfromtheBournesh(1),donotrequireuseoftheenv(1)command.Insomecases,environmentalvariableshavetobespecifiedusingalternativesyntaxes.6、編譯軟件Onceyouhaveruntheconfigurescriptthelastlineofoutputshouldbe:Please"makedepend"tobuilddependenciesIfthelastlineofoutputdoesnotmatch,configurehasfailed,andyouwillneedtoreviewitsoutputtodeterminewhatwentwrong.Youshouldnotproceeduntilconfigurecompletessuccessfully.Tobuilddependencies,run:makedependNowbuildthesoftware,thisstepwillactuallycompileOpenLDAP.makeYoushouldexaminetheoutputofthiscommandcarefullytomakesureeverythingisbuiltcorrectly.NotethatthiscommandbuildstheLDAPlibrariesandassociatedclientsaswellasslapd(8).7、測試軟件Oncethesoftwarehasbeenproperlyconfiguredandsuccessfullymade,youshouldrunthetestsuitetoverifythebuild.maketest8、安裝軟件Typically,theinstallationrequiressuper-userprivileges.FromthetoplevelOpenLDAPsourcedirectory,type:suroot-c'makeinstall'andentertheappropriatepasswordwhenrequested.Youshouldexaminetheoutputofthiscommandcarefullytomakesureeverythingisinstalledcorrectly.Youwillfindtheconfigurationfilesforslapd(8)in/usr/local/etc/openldapbydefault.SeethechapterConfiguringslapdforadditionalinformation.復(fù)制為了提供一個(gè)有彈性的企業(yè)部署,復(fù)制目錄是一個(gè)基礎(chǔ)需求.OpenLDAP有多種配置選項(xiàng)來建立一個(gè)可復(fù)制的目錄.在前一個(gè)版本里面,復(fù)制被限定在一個(gè)主服務(wù)器和若干個(gè)從服務(wù)器的條件下來討論。一個(gè)主服務(wù)器從其他客戶端接受目錄更新,而一個(gè)從服務(wù)器則僅僅從一個(gè)(單個(gè)的)主服務(wù)器接受更新.這個(gè)復(fù)制結(jié)構(gòu)被僵化地定義并且任何典型的數(shù)據(jù)庫只能完成一個(gè)單一角色,主或者從.現(xiàn)在OpenLDAP支持一個(gè)更廣泛的復(fù)制拓?fù)?關(guān)于提供者和消費(fèi)者的以下這些條件已經(jīng)不推薦了:一個(gè)提供者復(fù)制目錄更新到消費(fèi)者;消費(fèi)者從提供者接收復(fù)制更新.不像僵化定義的主/從關(guān)系,提供者/消費(fèi)者角色更加的流動(dòng)化:一個(gè)接收復(fù)制更新的消費(fèi)者可能傳遞給其它服務(wù)器的另一個(gè)消費(fèi)者,所以一個(gè)消費(fèi)者也可以同時(shí)成為一個(gè)提供者。而且,消費(fèi)者不需要成為一個(gè)實(shí)際上的LDAP服務(wù)器;它也可以僅僅是一個(gè)LDAP客戶端。以下章節(jié)將描述復(fù)制技術(shù)和討論各種可用的復(fù)制選項(xiàng).1、復(fù)制技術(shù)(1)LDAP同步復(fù)制LDAP同步復(fù)制引擎,簡稱syncrepl,是一個(gè)消費(fèi)方的復(fù)制引擎,能讓消費(fèi)者服務(wù)器維護(hù)一個(gè)抽取片斷的影子副本.一個(gè)syncrepl引擎以slapd的一個(gè)線程的方式駐留在消費(fèi)者那里.它建立和維護(hù)一個(gè)消費(fèi)者復(fù)制,方法是連接一個(gè)復(fù)制提供者去執(zhí)行初始化DIT內(nèi)容載荷以及接下來的定期的內(nèi)容拉取或及時(shí)根據(jù)內(nèi)容變更來更新。Syncrepl使用LDAP內(nèi)容同步協(xié)議(或簡稱LDAPSync)作為復(fù)制同步協(xié)議.LDAPSync提供一個(gè)有狀態(tài)的復(fù)制,它同時(shí)支持拉模式和推模式同步并且不要求使用歷史存儲(chǔ).在拉模式復(fù)制下消費(fèi)者定期拉提供者服務(wù)器的內(nèi)容來更新.在推模式復(fù)制下消費(fèi)者監(jiān)聽提供者實(shí)時(shí)發(fā)送的更新.因?yàn)閰f(xié)議不要求歷史存儲(chǔ),提供者不需要維護(hù)任何它接收到的更新的日志.(注意syncrepl引擎是可擴(kuò)展的,并支持未來新增的復(fù)制協(xié)議.)Syncrepl通過維護(hù)和交換同步cookies來保持對復(fù)制內(nèi)容的狀態(tài)的跟蹤.因?yàn)閟yncrepl消費(fèi)者和提供者維護(hù)它們的內(nèi)容狀態(tài),消費(fèi)者可以拉取提供者的內(nèi)容來執(zhí)行增量同步,只要請求那些最新的提供者內(nèi)容條目。Syncrepl也通過維護(hù)復(fù)制狀態(tài)方便了復(fù)制的管理.消費(fèi)者復(fù)制可以在任何同步狀態(tài)下從一個(gè)消費(fèi)方或一個(gè)提供方的備份來構(gòu)建.Syncrepl能自動(dòng)重新同步消費(fèi)者復(fù)制到和當(dāng)前的提供者內(nèi)容一致的最新狀態(tài).Syncrepl同時(shí)支持拉模式和推模式同步.在它的基本的refreshOnly同步模式下,提供者使用基于拉模式的同步,這里消費(fèi)者服務(wù)器不需要被跟蹤并且不維護(hù)歷史信息.需要提供者處理的定期的拉請求信息,包含在請求本身的同步cookie里面。為了優(yōu)化基于拉模式的同步,syncrepl把LDAP同步協(xié)議的當(dāng)前階段當(dāng)成它的刪除階段一樣處理,而不是頻繁地回滾完全重載.為了更好地優(yōu)化基于拉模式的同步,提供者可以維護(hù)一個(gè)按范圍劃分的會(huì)話日志作為歷史存儲(chǔ).在它的refreshAndPersist同步模式,提供者使用基于推模式的同步.提供者維護(hù)對請求了一個(gè)持久性搜索的消費(fèi)者服務(wù)器的跟蹤,并且當(dāng)提供者復(fù)制內(nèi)容修改的時(shí)候向它們發(fā)送必要的更新.有了syncrepl,如果消費(fèi)者服務(wù)器有對被復(fù)制的DIT片斷的適當(dāng)?shù)牟僮鳈?quán)限,一個(gè)消費(fèi)者服務(wù)器可以建立一個(gè)復(fù)制而不修改提供者的配置并且不需要重新啟動(dòng)提供者服務(wù)器.消費(fèi)者服務(wù)器可以停止復(fù)制,也不需要提供方的任何變更和重啟.Syncrepl支持局部的,稀疏的和片斷復(fù)制.影子DIT片斷由一個(gè)標(biāo)準(zhǔn)通用搜索來定義,包括基礎(chǔ),范圍,過濾條件,和屬性列表.復(fù)制內(nèi)容也受限于syncrepl復(fù)制連接的綁定用戶的操作權(quán)限.Syncrepl細(xì)節(jié)syncrepl引擎同時(shí)使用LDAP同步協(xié)議的refreshOnly和refreshAndPersist操作.如果一個(gè)syncrepl規(guī)范存在于一個(gè)數(shù)據(jù)庫定義中,slapd(8)以一個(gè)slapd(8)線程的方式啟動(dòng)一個(gè)syncrepl引擎并規(guī)劃它的執(zhí)行時(shí)間表.如果指定了refreshOnly操作,syncrepl引擎在一個(gè)同步操作完成之后將按間隔時(shí)間重新排程.如果指定了refreshAndPersist操作,引擎將保持激活并從提供者服務(wù)器處理持久性同步消息.syncrepl引擎同時(shí)應(yīng)用刷新同步的當(dāng)前階段和刪除階段.可以在提供者服務(wù)器配置一個(gè)會(huì)話日志存儲(chǔ)一定數(shù)量的從數(shù)據(jù)庫中刪除的entryUUIDs。多復(fù)制共享相同的會(huì)話日志.如果會(huì)話日志是當(dāng)前的并且消費(fèi)者服務(wù)器足夠新以至于在客戶端的最后一次同步之后沒有會(huì)話日志條目被刪除,那么syncrepl引擎使用刪除階段.如果沒有為復(fù)制內(nèi)容配置會(huì)話日志或如果消費(fèi)者復(fù)制太陳舊而無法被會(huì)話日志涵蓋到,syncrepl引擎使用當(dāng)前階段.目前會(huì)話日志存儲(chǔ)的設(shè)計(jì)是基于內(nèi)存的,所以包含在會(huì)話日志的信息相對多提供者的調(diào)用不是持久性的.目前它不支持通過使用LDAP操作來操作會(huì)話日志存儲(chǔ).它目前也不支持對會(huì)話日志施加訪問控制.作為進(jìn)一步的優(yōu)化,甚至同步搜索都不和任何會(huì)話日志關(guān)聯(lián),當(dāng)沒有發(fā)生復(fù)制相關(guān)的更新時(shí)將不會(huì)有任何條目傳輸給消費(fèi)者.syncrepl引擎,是一個(gè)消費(fèi)方的復(fù)制引擎,可以工作在任何后端.LDAP同步提供者可以在任何后端配置成一個(gè)overlay,但是最好工作在back-bdb或back-hdb后端.LDAP同步提供者為每一個(gè)數(shù)據(jù)庫維護(hù)一個(gè)contextCSN作為提供者內(nèi)容的當(dāng)前同步狀態(tài)指標(biāo).它是提供者范圍的最大entryCSN,所以對于更小的擁有懸而未決的entryCSN值的條目來說不存在事務(wù).contextCSN不能只是設(shè)成最大的已發(fā)表的entryCSN,因?yàn)閑ntryCSN是在一個(gè)事務(wù)開始之前獲得的并且事務(wù)還未提交到發(fā)表序列.提供者在contextsuffix條目的contextCSN屬性存儲(chǔ)上下文的contextCSN.這個(gè)屬性不是在每個(gè)更新操作之后寫入數(shù)據(jù)庫;而是主要在內(nèi)存中維護(hù).在數(shù)據(jù)庫啟動(dòng)時(shí)間提供者讀取最后一次存儲(chǔ)的contextCSN到內(nèi)存里并且此后就只使用內(nèi)存內(nèi)的拷貝.缺省的,對contextCSN的變更作為一個(gè)數(shù)據(jù)庫更新的結(jié)果將不寫入數(shù)據(jù)庫,直到服務(wù)器完全干凈地關(guān)機(jī).如果需要的話,設(shè)置一個(gè)檢查點(diǎn)可以讓contextCSN寫出得更頻繁一些.注意在啟動(dòng)的時(shí)間,如果提供者不能從suffix條目讀取一個(gè)contextCSN,它將掃描整個(gè)數(shù)據(jù)庫來決定它的值,并且在一個(gè)大的數(shù)據(jù)庫中掃描可能要花很長時(shí)間.當(dāng)一個(gè)contextCSN值被讀取,這個(gè)數(shù)據(jù)庫將仍被掃描用于任何高于它的entryCSN值,以確保contextCSN值真的反應(yīng)了數(shù)據(jù)庫中entryCSN的最大提交.在支持不等式索引的數(shù)據(jù)庫中,在entryCSN屬性上設(shè)置一個(gè)eq索引并配置contextCSN檢查點(diǎn),將極大地加速這個(gè)掃描步驟.如果通過讀取和掃描數(shù)據(jù)庫沒有決定contextCSN,一個(gè)新的值將被生成.而且,如果掃描數(shù)據(jù)庫產(chǎn)生了一個(gè)比之前紀(jì)錄在suffix條目中的contextCSN屬性更大的entryCSN,一個(gè)檢查點(diǎn)將立刻寫入新的值.消費(fèi)者也存儲(chǔ)它的復(fù)制狀態(tài),它是作為一個(gè)同步cookie接收的提供者的contextCSN,在suffix條目的contextCSN屬性.當(dāng)它執(zhí)行對提供者服務(wù)器的順序增量同步時(shí),由一個(gè)消費(fèi)者服務(wù)器維護(hù)的復(fù)制狀態(tài)被用作同步狀態(tài)指標(biāo).當(dāng)它在一個(gè)級聯(lián)復(fù)制配置中承當(dāng)一個(gè)第二提供者服務(wù)器時(shí),它也被用作提供方的同步狀態(tài)指標(biāo).因?yàn)橄M(fèi)者和提供者狀態(tài)信息是在它們各自的服務(wù)器的同一個(gè)地方維護(hù)的,任何消費(fèi)者可以被提拔成為提供者(反之亦然)而不需要任何特別的動(dòng)作.因?yàn)樵趕yncrepl規(guī)范中可能使用一個(gè)通用搜索過濾器,上下文中的一些條目可能被從同步內(nèi)容中省略了.syncrepl引擎建立一個(gè)粘條目來填充復(fù)制上下文中的窟窿,如果復(fù)制內(nèi)容的任何部分屬于這個(gè)窟窿的話。這些粘條目在搜索結(jié)果中將不返回,除非提供了ManageDsaIT控制。另外,作為在syncrepl規(guī)范使用搜索過濾器的結(jié)果,可能會(huì)有類似這樣的修改,即從復(fù)制范圍移除一個(gè)條目,即使提供者上的條目還沒有被刪除。邏輯上這個(gè)條目必須在消費(fèi)者服務(wù)器被刪除但是在refreshOnly模式下,如果沒有會(huì)話日志則提供者無法檢測和傳播這個(gè)變更.關(guān)于配置,參見Syncrepl節(jié).(2)部署替代LDAP同步協(xié)議只對復(fù)制規(guī)定了狹窄的范圍,OpenLDAP實(shí)現(xiàn)則是極為彈性的并且支持各種操作模式以處理協(xié)議中未顯式地提出的其他情景.Delta-syncrepl復(fù)制LDAP同步復(fù)制的缺點(diǎn):LDAP同步復(fù)制是一個(gè)基于對象的復(fù)制機(jī)制.當(dāng)提供者的一個(gè)被復(fù)制對象中的任何屬性值改變時(shí),每個(gè)消費(fèi)者在復(fù)制過程中擷取并處理完整的變更對象,包括所有改變和沒改變的屬性值.這方法的一個(gè)好處是當(dāng)多個(gè)變更發(fā)生在單一對象上時(shí),那些變更的精確順序不需要保存;只有最終狀態(tài)是有意義的.但是當(dāng)使用模式(匹配的方式)在一次變更中處理很多對象時(shí),這個(gè)方法可能有缺點(diǎn)。例如,假設(shè)你有一個(gè)數(shù)據(jù)庫包含100,000對象,每個(gè)對象是1KB.進(jìn)一步,假設(shè)你經(jīng)常運(yùn)行一個(gè)批處理工作來變更主服務(wù)器上的100,000對象的每一個(gè)對象中的一個(gè)兩字節(jié)的屬性值.不算LDAP和TCP/IP協(xié)議的開銷,每次你運(yùn)行這個(gè)工作每個(gè)消費(fèi)者將傳送并處理1GB的數(shù)據(jù),只是為了處理這個(gè)200KB的變更!在類似這樣的案例中,99.98%被傳送和處理的數(shù)據(jù)將是多余的,因?yàn)樗鼈兇砟切┪醋兏闹?這是一個(gè)對寶貴的傳輸和處理帶寬的浪費(fèi)并且可能導(dǎo)致發(fā)展出不可接受的復(fù)制日志的積壓.雖然這個(gè)情形是一個(gè)極端,但它有助于演示某些LDAP部署的一個(gè)非常真實(shí)的問題.看看Delta-syncrepl怎么處理:Delta-syncrepl,一個(gè)基于變更日志syncrepl變種,被設(shè)計(jì)用來處理類似上面所說的情況.Delta-syncrepl通過在提供者一端維護(hù)一個(gè)可選擇深度的變更日志來起作用.復(fù)制消費(fèi)者為它需要的變更檢查這個(gè)變更日志,只要變更日志包含它需要的變更,消費(fèi)者就從變更日志擷取這些變更并把它們應(yīng)用到自己的數(shù)據(jù)庫.不過,一個(gè)復(fù)制(譯者注:指變更日志里的變更)如果離上一次同步的狀態(tài)太遠(yuǎn)(或消費(fèi)者根本就是空的),可以用常規(guī)的syncrepl把它(指消費(fèi)者)恢復(fù)到最新的狀態(tài)然后復(fù)制重新切換到delta-syncrepl模式.關(guān)于配置請參考Delta-syncrepl章節(jié).(3)N-WayMulti-Master復(fù)制Multi-Master復(fù)制是一個(gè)使用Syncrepl復(fù)制數(shù)據(jù)到多個(gè)提供者(“主服務(wù)器”)目錄服務(wù)器的復(fù)制技術(shù).對于Multi-Masterreplication有效的觀點(diǎn)如果任何提供者失敗了,其他提供者將繼續(xù)接受更新避免了單點(diǎn)失敗提供者們可以在不同的物理位置例如跨越全球網(wǎng)絡(luò).好的自動(dòng)容錯(cuò)/高可用性對于Multi-Masterreplication無效的觀點(diǎn)(這些經(jīng)常被聲稱是Multi-Master復(fù)制的優(yōu)點(diǎn)但是那些說法是錯(cuò)誤的):它不關(guān)負(fù)載均衡任何事提供者必須對所有其他的服務(wù)器進(jìn)行寫操作,這意味著分布在所有的服務(wù)器上的網(wǎng)絡(luò)交通和寫操作負(fù)載,和單一主服務(wù)器是一樣的。多服務(wù)器的服務(wù)器利用率和負(fù)載在最好的情況下和單服務(wù)器一樣;最壞的情況下單服務(wù)器更優(yōu),因?yàn)樵谔峁┱吆拖M(fèi)者之間使用不同的模式的時(shí)候索引可以做出不同的優(yōu)化調(diào)整.和Multi-Masterreplication抵觸的觀點(diǎn)打破了目錄模式的數(shù)據(jù)一致性的保障\o"/faq/data/cache/1240.html"/faq/data/cache/1240.html如果提供者的連接因?yàn)榫W(wǎng)絡(luò)問題丟失了,那么"自動(dòng)容錯(cuò)"只會(huì)使問題復(fù)雜化通常,一個(gè)特定的機(jī)器不能區(qū)分失去和一個(gè)節(jié)點(diǎn)的聯(lián)系是因?yàn)樵摴?jié)點(diǎn)崩潰了還是因?yàn)榫W(wǎng)絡(luò)連接失敗了如果一個(gè)網(wǎng)絡(luò)是分割開的而多個(gè)客戶端開始向每一個(gè)"主服務(wù)器"寫操作,那么和解將是一個(gè)痛苦;可能最好的辦法是禁止那些被單一提供者分隔開的客戶端的寫操作關(guān)于配置,請看下面的N-WayMulti-Master章節(jié)(4)MirrorMode復(fù)制MirrorMode是一個(gè)混合配置,既提供單主服務(wù)器復(fù)制的所有一致性保障,也提供多主服務(wù)器模式的高可用性.在MirrorMode兩個(gè)提供者都被設(shè)置成從對方復(fù)制(就象一個(gè)多主服務(wù)器配置),但是一個(gè)額外的前段被用來引導(dǎo)所有的寫操作到僅僅到兩臺(tái)服務(wù)器中的其中一臺(tái).第二個(gè)提供者將只在第一臺(tái)服務(wù)器崩潰時(shí)進(jìn)行寫操作,那時(shí)這個(gè)前端將切換路徑引導(dǎo)所有的寫操作到第二個(gè)提供者.當(dāng)一個(gè)崩潰的提供者被修復(fù)并且重啟動(dòng)后將自動(dòng)從正在運(yùn)行的提供者那里活得任何更新并重新同步.MirrorMode的觀點(diǎn)對于目錄的寫操作提供了一個(gè)高可用性(HA)方案(復(fù)制處理讀操作)只有一個(gè)提供者是可操作的l,寫操作的安全是可接受的提供者節(jié)點(diǎn)從對方互相復(fù)制,所以它們總是最新的并且可以隨時(shí)準(zhǔn)備好接管(熱備份)Syncrepl也允許提供者節(jié)點(diǎn)在任何停機(jī)時(shí)間進(jìn)行重新同步和MirrorMode抵觸的觀點(diǎn)MirrorMode不能被稱為多主機(jī)方案.這是因?yàn)橥粫r(shí)間寫操作不得不僅限于鏡像節(jié)點(diǎn)中的一個(gè)MirrorMode可被稱為Active-ActiveHot-Standby(“雙活熱備份”),因此需要一個(gè)額外的服務(wù)器(代理模式的slapd)或設(shè)備(硬件負(fù)載平衡裝置)來管理哪個(gè)提供者是當(dāng)前激活的備份的管理稍微不同如果備份bdb本身并且定期備份事務(wù)日志文件,那么鏡像對的相同數(shù)字需要用于收集日志文件直到下一次數(shù)據(jù)庫備份發(fā)生為了確保所有數(shù)據(jù)庫都是一致的,當(dāng)執(zhí)行一個(gè)slapcat的時(shí)候每個(gè)數(shù)據(jù)庫可能都不得不置于只讀模式.Delta-Syncrepl仍不支持關(guān)于配置,請看下面的MirrorMode章節(jié)(5)Syncrepl代理模式因?yàn)長DAP同步協(xié)議同時(shí)支持基于“拉”和“推”的復(fù)制,“推”模式(refreshAndPersist)在提供者開始"推"變更之前仍必須由消費(fèi)者初始化.在一些網(wǎng)絡(luò)配置中,特別是防火墻限制了連接的方向時(shí),一個(gè)提供者初始化的推模式是需要的.這個(gè)模式可以被配置成LDAPBackend(Backendsandslapd-ldap(8)).不用在實(shí)際的消費(fèi)者服務(wù)器上運(yùn)行syncrepl引擎,而是一個(gè)slapd-ldap代理設(shè)置在靠近(或搭配在)提供者的地方指向消費(fèi)者,而這個(gè)syncrepl引擎運(yùn)行在這個(gè)代理服務(wù)器上.關(guān)于配置,請看Syncrepl代理章節(jié).(6)替代Slurpd舊的slurpd機(jī)制只操作主服務(wù)器初始化的推模式.Slurpd復(fù)制被Syncrepl復(fù)制取代了并且在OpenLDAP2.4中被完全移除了.slurpd守護(hù)進(jìn)程是原來繼承自UMich'sLDAP的復(fù)制機(jī)制并且以推模式操作:主服務(wù)器推變更到從服務(wù)器.因?yàn)槎喾N原因它被替換掉,簡短的說:它是不可靠的它對replog中的記錄的次序極為敏感它可能很容易失去同步,這時(shí)需要手工干預(yù)來從主目錄重新同步從服務(wù)器數(shù)據(jù)庫它對不可用的服務(wù)器不是非常寬容.如果一個(gè)從服務(wù)器長時(shí)間停機(jī),replog可能變得太大以至于slurpd無法處理它只工作在推模式它需要停止和重新啟動(dòng)主服務(wù)器來增加從服務(wù)器它只支持單一主服務(wù)器復(fù)制Syncrepl沒有那些弱點(diǎn):Syncrepl是自同步的;你可以在任何狀態(tài)啟動(dòng)一個(gè)消費(fèi)者數(shù)據(jù)庫,從完全空的到完全同步的,它將自動(dòng)做正確的事來完成和維護(hù)同步它對變更發(fā)生的次序完全不敏感它保障消費(fèi)者和提供者內(nèi)容的合流,不用手工干預(yù)無論一個(gè)消費(fèi)者多長時(shí)間沒有聯(lián)系提供者,它都能重新同步Syncrepl能雙向操作消費(fèi)者能在不用碰提供者的情況下被加入支持多主服務(wù)器復(fù)制2、配置不同的復(fù)制類型Syncrepl配置因?yàn)閟yncrepl是一個(gè)消費(fèi)方的復(fù)制引擎,syncrepl規(guī)范定義在slapd.conf(5)的消費(fèi)者服務(wù)器,而不是在提供者的服務(wù)器配置文件里.復(fù)制內(nèi)容的初始化裝載可以有兩種執(zhí)行方式,以無同步cookie的方式啟動(dòng)一個(gè)syncrepl引擎,或裝載一個(gè)提供者服務(wù)器的全備份LDIF文件填充到消費(fèi)者服務(wù)器.當(dāng)從一個(gè)備份裝載的時(shí)候,它不需要執(zhí)行從提供者內(nèi)容的最新備份初始化裝載這個(gè)動(dòng)作.syncrepl引擎將自動(dòng)同步初始化的消費(fèi)者復(fù)制當(dāng)前的提供者內(nèi)容.結(jié)果是,它不需要為了避免由于內(nèi)容備份和裝載過程中提供者服務(wù)器仍在更新而導(dǎo)致復(fù)制不一致的問題來停止提供者服務(wù)器.當(dāng)復(fù)制一個(gè)大規(guī)模的目錄時(shí),特別是在一個(gè)帶寬受限的環(huán)境,建議從備份裝載消費(fèi)者而不是使用syncrepl執(zhí)行一個(gè)完全的初始化裝載.(1)設(shè)置提供者的slapd提供者被實(shí)現(xiàn)為一個(gè)overlay,所以這個(gè)overlay本身在使用之前必須首先如slapd.conf(5)配置.提供者只有兩個(gè)配置指示,在contextCSN上設(shè)定檢查點(diǎn)和配置會(huì)話日志.因?yàn)長DAP同步搜索受限于訪問控制,應(yīng)為復(fù)制的內(nèi)容設(shè)置正確的訪問控制權(quán)限.contextCSN檢查點(diǎn)設(shè)置如下syncprov-checkpoint<ops><minutes>檢查點(diǎn)只在成功的寫操作之后測試.如果<ops>操作了或從上次檢查點(diǎn)到現(xiàn)在超過了<minutes>時(shí)間,將執(zhí)行一個(gè)新的檢查點(diǎn).會(huì)話日志設(shè)置如下syncprov-sessionlog<size>這里<size>是會(huì)話日志可以記錄的條目的最大數(shù)量.當(dāng)一個(gè)會(huì)話日志被配置好,它就自動(dòng)用于所有對此數(shù)據(jù)庫的LDAP同步搜索.注意使用會(huì)話日志需要搜索entryUUID屬性.在這個(gè)屬性上設(shè)一個(gè)eq索引將極有益于提供者服務(wù)器的會(huì)話日志的性能.slapd.conf(5)中一個(gè)更復(fù)雜的例子內(nèi)容如下:databasebdbsuffixdc=Example,dc=comrootdndc=Example,dc=comdirectory/var/ldap/dbindexobjectclass,entryCSN,entryUUIDeq

overlaysyncprovsyncprov-checkpoint10010syncprov-sessionlog100(2)設(shè)置消費(fèi)者的slapd在slapd.conf(5)的replica范圍的數(shù)據(jù)庫一節(jié)定義了syncrepl復(fù)制.syncrepl引擎是獨(dú)立的后端并且可以使用任何數(shù)據(jù)庫類型定義directive.databasehdbsuffixdc=Example,dc=comrootdndc=Example,dc=comdirectory/var/ldap/dbindexobjectclass,entryCSN,entryUUIDeq

syncreplrid=123provider=ldap://:389type=refreshOnlyinterval=01:00:00:00searchbase="dc=example,dc=com"filter="(objectClass=organizationalPerson)"scope=subattrs="cn,sn,ou,telephoneNumber,title,l"schemachecking=offbindmethod=simplebinddn="cn=syncuser,dc=example,dc=com"credentials=secret在這個(gè)例子中,消費(fèi)者將從ldap://的389端口連接到提供者slapd(8)來執(zhí)行每天一次同步的拉操作(refreshOnly)模式.它將以cn=syncuser,dc=example,dc=com綁定,以密碼"secret"進(jìn)行簡單驗(yàn)證.注意要在提供者服務(wù)器為cn=syncuser,dc=example,dc=com設(shè)置適當(dāng)?shù)脑L問控制權(quán)限以接收想要的復(fù)制內(nèi)容.另外提供者上的搜索限制必須足夠高以允許同步用戶接收請求內(nèi)容完整的拷貝.消費(fèi)者使用rootdn寫入它的數(shù)據(jù)庫所以它總是有全部的權(quán)限來寫所有的內(nèi)容.在上面的例子中同步搜索將在dc=example,dc=com的整個(gè)子樹搜索objectClass是organizationalPerson的條目.請求的屬性是cn,sn,ou,telephoneNumber,title,和schema檢查被關(guān)閉,這樣當(dāng)處理從提供者slapd(8)來的更新時(shí)消費(fèi)者slapd(8)將不會(huì)強(qiáng)制對條目進(jìn)行schema檢查.更多的詳細(xì)信息參見syncrepl指示,見本管理指南的slapd配置文件的syncrepl節(jié).(3)啟動(dòng)提供者和消費(fèi)者的slapd提供者slapd(8)不需要重啟.contextCSN將會(huì)根據(jù)需要自動(dòng)生成:它可能原來就包含在LDIF文件里,由slapadd(8)生成,在上下文中通過變更生成,或當(dāng)?shù)谝淮蜭DAP同步搜索到達(dá)提供者時(shí)生成.如果裝載了一個(gè)之前不包含contextCSN的LDIF文件,slapadd(8)應(yīng)使用-w選項(xiàng)來令它生成.這將使服務(wù)器第一次運(yùn)行時(shí)變得快一點(diǎn).當(dāng)啟動(dòng)一個(gè)消費(fèi)者slapd(8)時(shí),為了從一個(gè)特定的狀態(tài)開始同步,它可能使用命令行參數(shù)-c即cookie選項(xiàng),以提供一個(gè)同步cookie.cookie是一個(gè)逗號分隔的name=value對的列表.目前支持的syncreplcookie字段是csn=<csn>和rid=<rid>.<csn>代表消費(fèi)者復(fù)制的當(dāng)前同步狀態(tài).<rid>標(biāo)識這個(gè)消費(fèi)者服務(wù)器的一個(gè)本地消費(fèi)者復(fù)制.它用于把cookie關(guān)聯(lián)到slapd.conf(5)中擁有匹配的復(fù)制標(biāo)識的syncrepl定義.<rid>必須超過三位數(shù).命令行cookie會(huì)復(fù)蓋存儲(chǔ)在消費(fèi)者復(fù)制數(shù)據(jù)庫中的同步cookie.Delta-syncrepl(1)Delta-syncrepl提供者配置設(shè)置delta-syncrepl需要同時(shí)改變主服務(wù)器和復(fù)制服務(wù)器的配置:#給予復(fù)制DN無限的讀權(quán)限.這個(gè)ACL需要和其他ACL聲明合并,并且/或者在數(shù)據(jù)庫范圍內(nèi)移動(dòng)。"by*break"部分會(huì)執(zhí)行隨后的規(guī)則。細(xì)節(jié)請看slapd.access(5)。accessto*bydn.base="cn=replicator,dc=symas,dc=com"readby*break#設(shè)置模塊路徑modulepath/opt/symas/lib/openldap#裝載hdb后端moduleloadback_hdb.la#裝載操作日志overlaymoduleloadaccesslog.la#裝載syncprovoverlaymoduleloadsyncprov.la#操作日志數(shù)據(jù)庫定義databasehdbsuffixcn=accesslogdirectory/db/accesslogrootdncn=accesslogindexdefaulteqindexentryCSN,objectClass,reqEnd,reqResult,reqStart

overlaysyncprovsyncprov-nopresentTRUEsyncprov-reloadhintTRUE#讓復(fù)制DN有無限的搜索權(quán)限limitsdn.exact="cn=replicator,dc=symas,dc=com"time.soft=unlimitedtime.hard=unlimitedsize.soft=unlimitedsize.hard=unlimited#主數(shù)據(jù)庫定義databasehdbsuffix"dc=symas,dc=com"rootdn"cn=manager,dc=symas,dc=com"##任何期望的其他配置選項(xiàng)#syncprov特別索引indexentryCSNeqindexentryUUIDeq#主數(shù)據(jù)庫的syncrepl提供者overlaysyncprovsyncprov-checkpoint100060#主數(shù)據(jù)庫的操作日志overlay定義overlayaccessloglogdbcn=accessloglogopswriteslogsuccessTRUE#每天掃描一次操作日志數(shù)據(jù)庫,并清除7天前的條目logpurge07+00:0001+00:00#讓復(fù)制DN有無限搜索權(quán)限limitsdn.exact="cn=replicator,dc=symas,dc=com"time.soft=unlimitedtime.hard=unlimitedsize.soft=unlimitedsize.hard=unlimited更多信息,訪問(slapo-accesslog(5)和slapd.conf(5))相關(guān)的man頁(2)Delta-syncrepl消費(fèi)者配置#復(fù)制數(shù)據(jù)庫配置databasehdbsuffix"dc=symas,dc=com"rootdn"cn=manager,dc=symas,dc=com"

##任何關(guān)于復(fù)制的其他配置,例如你期望的索引#syncrepl特有的索引indexentryUUIDeq#syncrepl參數(shù)syncreplrid=0provider=ldap://:389bindmethod=simplebinddn="cn=replicator,dc=symas,dc=com"credentials=secretsearchbase="dc=symas,dc=com"logbase="cn=accesslog"logfilter="(&(objectClass=auditWriteObject)(reqResult=0))"schemachecking=ontype=refreshAndPersistretry="60+"syncdata=accesslog#提交更新到主服務(wù)器updaterefldap://以上配置假定你在你用于綁定到提供者的數(shù)據(jù)庫中有一個(gè)復(fù)制者標(biāo)識.另外,所有數(shù)據(jù)庫(主數(shù)據(jù)庫,復(fù)制數(shù)據(jù)庫,以及操作日志存儲(chǔ)數(shù)據(jù)庫)也應(yīng)該正確調(diào)整DB_CONFIG文件以滿足你的需要.N-WayMulti-Master以下例子將使用三個(gè)主節(jié)點(diǎn).Keepinginlinewithtest050-syncrepl-multimasteroftheOpenLDAPtestsuite,我們將通過cn=config配置slapd(8)。這里設(shè)置配置數(shù)據(jù)庫:dn:cn=configobjectClass:olcGlobalcn:configolcServerID:1dn:olcDatabase={0}config,cn=configobjectClass:olcDatabaseConfigolcDatabase:{0}configolcRootPW:secret第二和第三服務(wù)器明顯會(huì)有一個(gè)不同的olcServerID:dn:cn=configobjectClass:olcGlobalcn:configolcServerID:2

dn:olcDatabase={0}config,cn=configobjectClass:olcDatabaseConfigolcDatabase:{0}configolcRootPW:secret這里設(shè)置syncrepl為提供者(因?yàn)檫@些都是主服務(wù)器):dn:cn=module,cn=configobjectClass:olcModuleListcn:moduleolcModulePath:/usr/local/libexec/openldapolcModuleLoad:syncprov.la現(xiàn)在我們設(shè)置第一個(gè)主節(jié)點(diǎn)(使用你自己的確切的urls替換掉$URI1,$URI2和$URI3等.):dn:cn=configchangetype:modifyreplace:olcServerIDolcServerID:1$URI1olcServerID:2$URI2olcServerID:3$URI3

dn:olcOverlay=syncprov,olcDatabase={0}config,cn=configchangetype:addobjectClass:olcOverlayConfigobjectClass:olcSyncProvConfigolcOverlay:syncprov

dn:olcDatabase={0}config,cn=configchangetype:modifyadd:olcSyncReplolcSyncRepl:rid=001provider=$URI1binddn="cn=config"bindmethod=simplecredentials=secretsearchbase="cn=config"type=refreshAndPersistretry="553005"timeout=1olcSyncRepl:rid=002provider=$URI2binddn="cn=config"bindmethod=simplecredentials=secretsearchbase="cn=config"type=refreshAndPersistretry="553005"timeout=1olcSyncRepl:rid=003provider=$URI3binddn="cn=config"bindmethod=simplecredentials=secretsearchbase="cn=config"type=refreshAndPersistretry="553005"timeout=1-add:olcMirrorModeolcMirrorMode:TRUE現(xiàn)在啟動(dòng)主服務(wù)器和一個(gè)或多個(gè)消費(fèi)者服務(wù)器,也把上面的LDIF加入到第一個(gè)消費(fèi)者,第二個(gè)消費(fèi)者等等.然后它將復(fù)制cn=config.你現(xiàn)在就在config數(shù)據(jù)庫上擁有了多路多主機(jī).我們?nèi)圆坏貌粡?fù)制實(shí)際的數(shù)據(jù),而不僅是config,所以添加下面這些到主服務(wù)器(所有激活的和配置好的消費(fèi)者/主服務(wù)器將領(lǐng)取這個(gè)配置,因?yàn)樗麄兌际窃谕降?.同樣的,以任何對你的安裝可用的設(shè)置替換所有${}變量:dn:olcDatabase={1}$BACKEND,cn=configobjectClass:olcDatabaseConfigobjectClass:olc${BACKEND}ConfigolcDatabase:{1}$BACKENDolcSuffix:$BASEDNolcDbDirectory:./dbolcRootDN:$MANAGERDNolcRootPW:$PASSWDolcLimits:dn.exact="$MANAGERDN"time.soft=unlimitedtime.hard=unlimitedsize.soft=unlimitedsize.hard=unlimitedolcSyncRepl:rid=004provider=$URI1binddn="$MANAGERDN"bindmethod=simplecredentials=$PASSWDsearchbase="$BASEDN"type=refreshOnlyinterval=00:00:00:10retry="553005"timeout=1olcSyncRepl:rid=005provider=$URI2binddn="$

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論