Open Directory 複寫可能無法運作;「Size Limit exceeded」(超過大小限制)出現在 slapd.log 中

Open Directory 複寫可能無法運作;在這種狀況下,/var/log/slapd.log 中會出現下列項目

slapd[209]: do_syncrep2: rid=001 LDAP_RES_SEARCH_RESULT (4) Size limit exceeded slapd[209]: do_syncrep2: rid=001 (4) Size limit exceeded

如果 Open Directory 伺服器已停用一段時間,或是在 LDAP 資料存放區中有超過 11000 個物件時建立複本,就可能會發生這種情況。11000 是搜尋中可傳回的預設物件數量上限。

允許 _ldap_replicator 使用者覆寫搜尋限制。這是透過變更每個 Open Directory 伺服器上的 LDAP 伺服器設定來完成。這涉及以目錄管理者身分進行認證,以及在「終端機」上執行一些 LDAP 修改指令。此外,還需要知道 LDAP 伺服器的搜尋基礎(search base,也稱為 naming context)。

下列步驟可用來完成這項操作。

首先,尋找 LDAP 伺服器的搜尋基礎

尋找 LDAP 伺服器的搜尋基礎。這通常是伺服器的完整網域名稱,每個標籤前都加上 dc=,並將句點更改為逗號。

例如,主機名稱為 server.example.com 的伺服器,預設搜尋基礎為「dc=server,dc=example,dc=com」。可以使用下列「終端機」指令向 LDAP 伺服器查詢以驗證搜尋基礎:

ldapsearch -x -LLL -b “” -s base namingContexts

找到包含「namingContexts」的行,搜尋基礎即顯示於該行的冒號後面,如以下範例輸出所示。

dn: namingContexts: dc=server,dc=example,dc=com

其次,取得目錄管理者的 kerberos 憑證

此使用者的預設名稱為 diradmin,但在建立 Open Directory 主伺服器時可能已經更改過名稱。這是使用「終端機」中的 kinit 指令來完成。如有需要,執行以下指令,將目錄管理者的正確名稱替換為 diradmin,並在系統提示時輸入密碼。無輸出。

kinit diradmin

接著,在「終端機」中以互動模式使用 ldapmodify 進行變更。只需在「Terminal=」中執行下列指令:

ldapmodify

附註:這將輸出一些 SASL 訊息並等待輸入。如果成功,SASL 輸出應如下所示:

SASL/GSSAPI authentication started SASL username: diradmin@REALM SASL SSF: 56 SASL data security layer installed.

修改設定

最後,針對設定進行修改。這需要在「終端機」視窗中輸入下列所有文字,作為 ldapmodify 指令的輸入。以下的 [search base] 必須替換為搜尋基礎。括號也必須刪除。

dn: olcDatabase={1}bdb,cn=config changetype: modify add: olcLimits olcLimits: dn.exact="uid=_ldap_replicator,cn=users,[search base]" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited dn: olcDatabase={2}bdb,cn=config changetype: modify add: olcLimits olcLimits: dn.exact="uid=_ldap_replicator,cn=users,[search base]" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited

現在,按下 Control-D。

如果一切順利,系統會顯示如下的訊息。

modifying entry "olcDatabase={1}bdb,cn=config" modifying entry "olcDatabase={2}bdb,cn=config"

更多內容

Shell 工序指令替代方法

以下是可用來自動化執行此程序的 Shell 工序指令文字。只需按照上述步驟對目錄管理者進行 kinit 指令,然後執行此工序指令。請參閱此文章,以獲得有關文字編輯器的建議。

#!/bin/sh nc=`ldapsearch -x -LLL -b "" -s base namingContexts | awk '/namingContexts/ {print $2}'` ldapmodify <

若有更多可用資訊時,此文件會進行更新。

發佈日期: