|
|
| Sun ONE Directory Server 管理指南 |
複寫是自動將目錄內容從一個 Directory Server 複製到另一個或多個 Directory Server 的機制。任一種寫入作業 - 加入、修改或甚至刪除項目 - 都會自動對映到其他 Directory Server。如需關於複寫概念、複寫案例以及目錄部署中複寫的規劃方式等完整說明,請參閱《Sun ONE Directory Server 部署指南》第 6 章<設計複寫處理>。
Sun ONE Directory Server 5.2 引進許多新的複寫功能:
- 透過廣域網路 (WAN) 的多重主機複寫 (MMR) 可讓您在地理位置上相距甚遠的主機之間建立複寫協議,更有效地分散您的資料。
- MMR 現在支援 4 個能同時完全連接的主機,以提供額外的容錯移轉保護。
- 二進位複製使大型複本的初始化更快速。
- 片段複寫可讓您指定要複寫的屬性組,以便更有效率地分散您的資料。
- 新的指令行工具幫您監控複寫部署。
本章說明當設定所有類型的複寫案例時,需要在主機、集線器與用戶伺服器上執行的工作。本章包含下列主題:
- 簡介
- 設定複寫組態的步驟摘要
- 選擇複寫管理員
- 設定專用用戶
- 設定集線器
- 設定主機複本
- 建立複寫協議
- 設定片段複寫
- 初始化複本
- 啟用參考完整性外掛程式
- 透過 SSL 複寫
- 透過 WAN 複寫
- 修改複寫拓撲
- 與舊版進行複寫
- 使用追溯變更記錄外掛程式
- 監控複寫狀態
- 解決一般複寫衝突
簡介
複寫組態的設定工作相當複雜。在開始之前,您應該充分了解組織即將部署複製的方式,例如,要使用單一主機、多重主機或是有集線器的階層式複寫。複寫的單位是尾碼或子尾碼:屬於該尾碼的所有項目將會一起複寫。在您計劃的部署中,您必須根據尾碼所包含的資料來識別主機、集線器或專用用戶。
伺服器上複寫的尾碼稱為複本。主機是指接受來自用戶端的讀寫作業的複本。集線器與專用用戶是只透過複寫機制接收更新的唯讀複本;集線器會從主機或另一個集線器接收更新,然後轉送給另一個集線器或專用用戶。專用用戶則只接收來自用戶或集線器的更新。
下圖顯示一般複寫案例中,複本之間的關係。
圖 8-1    一般複寫案例
![]()
本文件也使用供應商與用戶等用語表示複寫協議中兩個參與伺服器的角色。供應商是傳送複寫更新的伺服器,用戶則是接收複寫更新的伺服器。上圖所顯示的關係如下:
- 單一主機是供應商,不是用戶。
- 多重主機複寫中的主機既是供應商,也是其他主機的用戶。
- 集線器永遠是供應商兼用戶。
- 專用用戶只是用戶。
許多複寫設定值適用於協議中供應商或用戶角色的複本,不論其類型為何。
設定複寫組態的步驟摘要
下列步驟假設您要複寫單一尾碼。如果您要複寫多個尾碼,請在每部伺服器上同時進行相同的設定。換句話說,您可以重複每個步驟在多重尾碼上設定複寫組態。
若要設定任何複寫拓撲,您應該依照下列順序進行:
- 在單一主機以外的所有伺服器上定義複寫管理員項目。或者,在所有伺服器上使用預設的複寫管理員。
- 在所有包含專用用戶複本的伺服器上,執行下列步驟:
- 為用戶複本建立空白尾碼。
- 透過複寫精靈啟用尾碼上的用戶複本。
- 選擇性地設定進階複本設定值。
- 在所有包含集線器複本的伺服器上,執行下列步驟:
- 為集線器複本建立空白尾碼。
- 透過複寫精靈在尾碼上啟用集線器複本。
- 選擇性地設定進階複本設定值。
- 在所有包含主機複本的伺服器上,執行下列步驟:
- 在要做為主機複本的其中一個主機上選擇或建立尾碼。
- 透過複寫精靈在尾碼上啟用主機複本。
- 選擇性地設定進階複本設定值。
- 依照下列順序,在所有供應商複本上設定複寫協議:
- 介於多重主機集合中的主機之間。
- 介於主機與其專用用戶之間。
- 介於主機與集線器複本之間。
您可以選擇性地在這個階段設定片段複寫,並初始化用戶與集線器複本。若是在多重主機複寫的情況下,請從包含原始資料的同一個主機複本初始化所有主機。
- 在直接從主機供應的所有集線器複本上設定複寫協議。這些協議是介於集線器複本與其用戶之間,您可以選擇性地在此階段初始化用戶複本。為階層式複寫中每一階層的集線器重複此步驟。
注意 有一點非常重要,那就是在嘗試建立複寫協議之前,請務必先建立及設定所有複本。這樣也可讓您在建立複寫協議之後,立即初始化用戶複本。用戶初始化永遠是設定複寫的最後一個階段。
選擇複寫管理員
設定複寫時其中一項重要的工作便是:選擇供應商在傳送複寫更新時用來與用戶伺服器連結的項目,此項目稱為複寫管理員。所有包含接收更新之尾碼的伺服器 (包括參與多重主機複寫的專用用戶、集線器與主機) 都必須至少有一個複寫管理員項目。
Directory Server 有預設複寫管理員項目,此項目可用於每一部伺服器上;它的 DN 是 cn=Replication Manager,cn=replication,cn=config。
注意 對於所有簡單的複寫案例,建議您使用預設的複寫管理員。複寫精靈會自動用此項目設定用戶複本,因而簡化複本的部署工作。
如果未定義密碼,複寫精靈會提示您為預設複寫管理員設定密碼。日後若要變更預設複寫管理員的密碼:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,選擇 [資料] 節點,然後選擇右面板上的 [複寫] 標籤。
- 在 [複寫管理員] 標題下的兩個文字欄位內輸入新的密碼。
- 確認密碼之後,按一下 [儲存]。如果密碼與確認密碼不相符,便無法使用 [儲存] 按鈕。
或者是,您可以建立任何新項目作為複寫管理員。例如,您可能想讓每個複寫管理員項目,對每個複寫的尾碼各有不同的密碼。另一個自行建立複寫管理員的原因,是為了支援不同的複寫驗證模式,例如透過 SSL 使用憑證。
複寫管理員項目必須包含您在定義複寫協議時,所選擇的驗證方法需要的屬性。例如,預設複寫管理員是一個 person 物件類別,可讓 userPassword 屬性進行簡單驗證。如需關於使用憑證連結複寫管理員的詳細資料,請參閱<透過 SSL 複寫>。
此複寫管理員項目不應該位於用戶伺服器的複寫尾碼中。適合定義複寫管理員的位置在 cn=replication,cn=config 中。
小心
您不能使用複寫管理員項目的 DN 和密碼,在伺服器上連結或執行作業。複寫管理員只能用於複寫機制和其他可能需要重新初始化複本時使用。
為每個用戶選好複寫管理員後,執行下列步驟:
- 寫下或記住您所選擇或建立的複寫管理員 DN。稍後在此用戶的供應商上建立供應商與此用戶的複寫協議時,會需要此 DN 及其密碼。
- 如果您定義密碼到期原則,您必須記得排除複寫管理員,否則當密碼到期時,將無法複寫。若要讓複寫管理員項目的密碼不會到期,請建立密碼不會到期的密碼原則,再將它指定給複寫管理員項目。如需詳細資訊,請參閱<管理個別密碼原則>。
設定專用用戶
專用用戶是複寫尾碼的唯讀複本。它會接收來自連結為特殊複寫管理員之主機伺服器的更新,以進行變更。設定用戶伺服器的工作包括準備空白尾碼以儲存複本,並使用複寫精靈啟用該尾碼上的複寫。可選用的進階組態包括選擇不同的複寫管理員、設定轉介或設定清除延遲。
下列各節提供在伺服器上設定一個專用用戶複本的步驟。請在包含指定尾碼之專用用戶複本的每部伺服器上重複所有程序。
為用戶複本建立尾碼
如果用戶上還沒有空白尾碼,請使用與預訂主機複本相同的 DN 建立一個空白尾碼。如需說明,請參閱<建立尾碼>。
如果尾碼存在而且不是空白,則其內容會在從主機初始化複本時遺失。
啟用用戶複本
複寫精靈簡化了啟用專用用戶複本的工作:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點與要設為用戶複本的尾碼節點,然後選擇尾碼下方的 [複寫] 節點。
在右面板中顯示複寫狀態資訊。
- 按一下 [啟用複寫] 按鈕開始複寫精靈。
- 預設狀態下會選擇 [用戶複本] 選項按鈕。按一下 [下一步] 繼續。
- 如果尚未如此做,則會提示您輸入並確認預設複寫管理員的密碼。在每一個欄位中輸入相同的密碼,再按一下 [下一步] 繼續。
如果預設複寫管理員已經定義密碼,精靈會略過此步驟。
- 複寫精靈於更新複寫組態同時,也會顯示狀態訊息。完成時,請按一下 [關閉] 。
複寫狀態現在顯示複寫已經準備好接收更新,而且在左窗格中的圖示會變更以反映這項變化。
進階用戶組態
依預設值,複寫精靈會將複本設為使用預設的複寫管理員。如果已經建立想要使用的不同複寫管理員項目,則需要設定進階組態。您也可以使用此對話方塊,設定修改和清除延遲的轉介。
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點和您想要設定尾碼的節點,然後選擇尾碼下方的 [複寫] 節點。
- 在右面板中,按一下 [進階] 按鈕,顯示 [進階複本設定值] 對話方塊。
- 在 [連結 DN] 標籤上,使用 [加入] 和 [刪除] 按鈕,建立有效複寫管理員的 DN 清單。接著供應商可以於與此複本間的協議內使用任何一個 DN。您可利用輸入新 DN 的名稱或瀏覽目錄來加入新的 DN。
若要透過 SSL 使用憑證來設定複寫,請輸入憑證項目的 DN 作為其中一個複寫管理員。
- 當您完成或選取更進階組態的 [選用] 標籤時,請按一下 [確定] 。
- 在 [進階複本設定值] 對話方塊的 [選用] 標籤上,LDAP URL 清單會指定傳送給此用戶之修改要求的額外轉介。使用 [加入] 或 [刪除] 按鈕,建立 LDAP URL 清單。
複寫機制會自動設定用戶傳回複寫拓撲中所有已知主機的轉介。這些預設轉介假設用戶端會在一般連線上使用簡單驗証。如果想要利用安全連線的 SSL 將與主機連結的選項提供給用戶端,請加入使用安全 port 號碼之格式 ldaps://servername:port 的轉介。
如果您已經加入一或多個 LDAP URL 作為轉介,則選擇清單下方的核取方塊時,會強迫用戶為這些 LDAP URL 獨佔地傳送轉介,而非為主機複本。例如,如果您要用戶端永遠被轉介到主機伺服器上的安全連接埠而不是預設連接埠,請建立這些安全連接埠的 LDAP URL 清單,並選取此核取方塊。如果您想要指定特定的主機,或指定應該處理所有更新的 Directory Server 代理,則您也可以使用獨占轉介。
- 此外,在 [選用] 標籤上,您也可以變更清除延遲。
用戶伺服器必須儲存有關複本內容更新的內部資訊,而清除延遲參數則指定其保留這些資訊的時間,這與其供應商伺服器上變更記錄的 MaxAge 參數有關。在兩個參數中,較短的參數可決定兩部伺服器間的複寫在停用或當機後仍能回復正常的最長時間。預設值是 7 天,這已足夠大部份情況使用。
- 按一下 [確定] 儲存此複本的進階複寫組態。
設定集線器
集線器複本同時作為用戶與主機,將複寫資料進一步分散給更多用戶。它們必須接收來自供應商的複寫更新,並將複寫更新傳給其用戶。集線器複本不接受修改,而是將轉介傳回主機。
設定集線器伺服器的工作包括準備空白的尾碼以儲存複本,並使用複寫精靈啟用該尾碼上的複寫。可選用的進階組態包括選擇不同的複寫管理員、設定轉介、設定清除延遲及設定變更記錄參數。
下列各節提供設定一個集線器伺服器的步驟。請在包含指定尾碼之集線器複本的每部伺服器上重複所有程序。
為集線器複本建立尾碼
如果集線器伺服器上還沒有空白尾碼,請用與預訂主機複本相同的 DN 建立一個空白尾碼。如需說明,請參閱<建立尾碼>。
如果尾碼存在而且不是空白,則其內容會在從主機初始化複本時遺失。
啟用集線器複本
複寫精靈簡化了啟用集線器複本的工作:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點與要設為集線器複本的尾碼節點,然後選擇尾碼下方的 [複寫] 節點。
在右面板中顯示複寫狀態資訊。
- 按一下 [啟用複寫] 按鈕開始複寫精靈。
- 選擇 [集線器複本] 選項按鈕,再按一下 [下一步] 繼續。
- 如果尚未如此做,則會提示您選擇變更記錄檔。預設變更記錄檔在文字欄位中顯示。如果不想要使用預設,請輸入變更記錄的檔名,或按一下 [瀏覽] 顯示檔案選擇器。
如果已經啟用變更記錄,精靈會略過此步驟。
- 按一下 [下一步]。如果尚未如此做,則會提示您輸入並確認預設複寫管理員的密碼。在每一個欄位中輸入相同的密碼,再按一下 [下一步] 繼續。
如果預設複寫管理員已經定義密碼,精靈會略過此步驟。
- 複寫精靈於更新複寫組態同時,也會顯示狀態訊息。完成時,請按一下 [關閉] 。
複寫狀態現在顯示複寫已經準備好接收更新,而且在左窗格中的圖示會變更以反映這項變化。
進階集線器組態
集線器伺服器作為供應商時需要變更記錄,而精靈會將集線器複本設為使用預設的變更記錄設定值。若要修改這些設定值,請執行下列步驟:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,選擇 [資料] 節點,然後選擇右面板中的 [複寫] 標籤。
- 您可能需要選取 [啟用變更記錄] 核取方塊並按一下 [重設] 按鈕,重新整理此標籤的內容。接著,應該會看到您在複寫精靈中選擇的變更記錄檔。
- 您可以將變更記錄檔的名稱變更,並更新變更記錄參數:
- 變更記錄最大筆數 - 對於為了傳送更新給用戶而儲存的修改而言,變更記錄最大筆數可決定該修改的總數。依據預設,這是無限制的。如果您的複本收到許多大型的修改,您或許想要限制記錄的數目以節省磁碟空間。
- 變更記錄最長期限 - 可決定集線器儲存必須傳送給用戶更新的時間。依據預設,這是無限制的。建議使用變更記錄最長期限參數限制變更記錄大小。
複寫精靈也使用預設的複寫管理員。如果已經建立想要使用的不同複寫管理員項目,則需要設定進階組態。您也可以使用此對話方塊,設定修改和清除延遲的轉介。
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點和您想要設定尾碼的節點,然後選擇尾碼下方的 [複寫] 節點。
- 在右面板中,按一下 [進階] 按鈕,顯示 [進階複本設定值] 對話方塊。
- 在 [連結 DN] 標籤上,使用 [加入] 和 [刪除] 按鈕,建立有效複寫管理員的 DN 清單。接著供應商可以於與此複本之間的協議內使用任何一個 DN。您可利用輸入新 DN 的名稱或瀏覽目錄來加入新的 DN。
若要透過 SSL 使用憑證來設定複寫,請輸入憑證項目的 DN 作為其中一個複寫管理員。
- 當您完成或選取更進階組態的 [選用] 標籤時,請按一下 [確定] 。
- 在 [進階複本設定值] 對話方塊的 [選用] 標籤上,LDAP URL 清單會指定傳送給此集線器之修改要求的額外轉介。使用 [加入] 或 [刪除] 按鈕,建立 LDAP URL 清單。
複寫機制可自動設定集線器,以傳回複寫拓撲中所有已知主機的轉介。這些預設轉介假設用戶端會在一般連線上使用簡單驗証。如果想要利用安全連線的 SSL 將與主機連結的選項提供給用戶端,請加入使用安全 port 號碼之格式 ldaps://servername:port 的轉介。
如果您已經加入一或多個 LDAP URL 作為轉介,則選擇清單下方的核取方塊時,會限制伺服器只為這些 LDAP URL 傳送轉介,而非為主機複本。例如,如果您要用戶端永遠被轉介到主機伺服器上的安全連接埠而不是預設連接埠,請建立這些安全連接埠的 LDAP URL 清單,並選取此核取方塊。如果您想要指定特定的主機,或指定應該處理所有更新的 Directory Server 代理,則您也可以使用獨占轉介。
- 此外,在 [選用] 標籤上,您也可以變更清除延遲。
集線器伺服器必須儲存有關複本內容更新的內部資訊,而清除延遲參數則指定其保留這些資訊的時間,這與供應更新之伺服器上的變更記錄 (不是它自己的變更記錄) 的 MaxAge 參數有關。在兩個參數中,較短的參數可決定兩部伺服器間的複寫在停用或當機後仍能回復正常的最長時間。預設值是 7 天,這已足夠大部份情況使用。
- 按一下 [確定] 儲存此複本的進階複寫組態。
設定主機複本
主機複本包含資料的主要複本,並先將所有修改集中之後,再將更新傳給其他所有複本。主機會記錄所有變更,檢查用戶狀態,並在需要時將更新傳給用戶。在多重主機複寫中,主機複本也會收到來自其他主機的更新。
設定主機伺服器的工作包括定義包含主機複本的尾碼、用複寫精靈啟用主機複本以及視需要設定進階複寫。
下列各節提供設定一個主機伺服器的步驟。請在包含指定尾碼之主機複本的每部伺服器上重複所有程序。
為主機複本定義尾碼
在包含要複寫之項目的主機伺服器上選擇或建立尾碼。如需說明,請參閱<建立尾碼>。
建立複寫協議之前,尾碼應包含所有的初始資料。如此一來,您才能夠立即根據這些資料初始化用戶複本。為確保正確的多重主機組態與初始化,應該只有其中一個主機包含所有初始資料,而其他主機上的尾碼應該空白。
啟用主機複本
複寫精靈簡化了啟用主機複本的工作:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點與要設為主機複本的尾碼節點,然後選擇尾碼下方的 [複寫] 節點。
在右面板中顯示複寫狀態資訊。
- 按一下 [啟用複寫] 按鈕開始複寫精靈。
- 選擇 [主機複本] 選項按鈕,再按一下 [下一步] 繼續。
- 輸入複本 ID:選擇 1 到 65534 (含 1 與 65534) 之間的唯一整數。
複本 ID 在指定尾碼的所有主機複本之中應該是唯一的。同一伺服器上不同尾碼的主機複本可以使用相同的複本 ID,前提是它在每個複本的其他主機之中是唯一的。
- 按一下 [下一步] 。如果尚未如此做,則會提示您選擇變更記錄檔。預設變更記錄檔在文字欄位中顯示。如果不想要使用預設,請輸入變更記錄的檔名,或按一下 [瀏覽] 顯示檔案選擇器。
如果已經啟用變更記錄,精靈會略過此步驟。
- 按一下 [下一步] 。如果尚未如此做,則會提示您輸入並確認預設複寫管理員的密碼。在單一主機複本的情況下不使用複寫管理員,但您還是必須輸入密碼,才能繼續。在每一個欄位中輸入相同的密碼,再按一下 [下一步] 繼續。
如果預設複寫管理員已經定義密碼,精靈會略過此步驟。
- 複寫精靈於更新複寫組態同時,也會顯示狀態訊息。完成時,請按一下 [關閉]。
現在複寫狀態會顯示此主機的複本 ID,而且左窗格中的圖示會變更以顯示此尾碼已啟用複寫。
進階多重主機組態
依預設值,精靈會將主機複本設為使用預設的變更記錄設定值。若要修改變更記錄設定值,請執行以下步驟:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,選擇 [資料] 節點,然後選擇右面板中的 [複寫] 標籤。
- 您可能需要選取 [啟用變更記錄] 核取方塊並按一下 [重設] 按鈕,重新整理此標籤的內容。接著,應該會看到您在複寫精靈中選擇的變更記錄檔。
- 您可以將變更記錄檔的名稱變更,並更新變更記錄參數:
- 變更記錄最大筆數 - 對於為了傳送更新給用戶而儲存的修改而言,變更記錄最大筆數可決定該修改的總數。依據預設,這是無限制的。如果您的複本收到許多大型的修改,您或許想要限制記錄的數目以節省磁碟空間。
- 變更記錄最長期限 - 可決定集線器儲存必須傳送給用戶更新的時間。依據預設,這是無限制的。建議使用變更記錄最長期限參數限制變更記錄大小。
複寫精靈也使用預設的複寫管理員。如果已經建立想要使用的不同複寫管理員項目,則需要設定進階組態。您也可以使用此對話方塊,設定修改和清除延遲的轉介。如果要設定單一主機,您可以略過此程序。
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點和您想要設定尾碼的節點,然後選擇尾碼下方的 [複寫] 節點。
- 在右面板中,按一下 [進階] 按鈕,顯示 [進階複本設定值] 對話方塊。
- 在 [連結 DN] 標籤上,使用 [加入] 和 [刪除] 按鈕,建立有效複寫管理員的 DN 清單。接著供應商可以於與此複本之間的協議內來使用任何一個 DN。您可利用輸入新 DN 的名稱或瀏覽目錄來加入新的 DN。
若要透過 SSL 使用憑證來設定複寫,請輸入憑證項目的 DN 作為其中一個複寫管理員。
- 當您完成或選取更進階組態的 [選用] 標籤時,請按一下 [確定]。
- 在 [進階複本設定值] 對話方塊的 [選用] 標籤上,LDAP URL 清單會指定傳送給此主機之修改要求的額外轉介。初始化後,主機會立即自動傳送轉介,如<多重主機初始化後的交集>所述。使用 [加入] 或 [刪除] 按鈕,建立 LDAP URL 清單。
複寫機制可自動設定集線器,以傳回複寫拓撲中所有已知主機的轉介。這些預設轉介假設用戶端會在一般連線上使用簡單驗証。如果想要利用安全連線的 SSL 將與主機連結的選項提供給用戶端,請加入使用安全 port 號碼之格式 ldaps://servername:port 的轉介。
如果您已經加入一或多個 LDAP URL 作為轉介,則選擇清單下方的核取方塊時,會限制伺服器只為這些 LDAP URL 傳送轉介,而非為主機複本。例如,如果您要用戶端永遠被轉介到主機伺服器上的安全連接埠而不是預設連接埠,請建立這些安全連接埠的 LDAP URL 清單,並選取此核取方塊。
- 此外,在 [選用] 標籤上,您也可以變更清除延遲。
主機伺服器必須儲存有關複本內容更新的內部資訊,而清除延遲參數則指定其保留這些資訊的時間,這與供應更新之主機伺服器上的變更記錄 (不是它自己的變更記錄) 的 MaxAge 參數有關。在兩個參數中,較短的參數可決定兩部伺服器間的複寫在停用或當機後仍能回復正常的最長時間。預設值是 7 天,這已足夠大部份情況使用。
- 按一下 [確定] 儲存此複本的進階複寫組態。
建立複寫協議
複寫協議是在供應商上的一組參數,用以設定及控制更新傳送到指定用戶的方式。複寫協議必須建立在傳送更新給其用戶的供應商複本上。您必須為每一個要更新的用戶建立複寫協議。
依照下列順序建立複寫協議:
- 介於多重主機集合中的主機之間,從包含要複寫之尾碼原始複本的主機開始。
- 介於主機與不透過集線器複寫的專用用戶之間。
- 介於主機與集線器複本之間。
- 介於集線器複本與其用戶之間。
例如,在有 2 台主機及 3 台專用用戶的多重主機複寫拓撲中 (如圖 8-1 所示),您應該依照下列順序建立 8 個複寫協議:
- 介於一個主機與其他主機之間。
- 介於其他主機與第一個主機之間。
- 介於一個主機與三個專用用戶中的每個專用用戶之間。
- 介於其他主機與三個專用用戶中的每個專用用戶之間。
若要建立複寫協議:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點與供應商尾碼節點,並選擇尾碼下方的 [複寫] 節點。
在右面板中顯示複寫狀態資訊。
- 按一下已定義複寫協議清單旁的 [新增] 按鈕。
- 在 [複寫協議] 對話方塊中,選擇功能表中包含用戶複本的現有伺服器,或按一下 [其他] 按鈕以定義伺服器。
當您按 [其他] 按鈕時,請輸入用戶伺服器的完整格式名稱,以及其 LDAP 連接埠號碼。如果在此連接埠上使用 SSL,請核取安全連接埠的方塊,為複寫更新啟用安全連線。
- 在用戶伺服器上輸入複寫管理員項目的 DN 與密碼。依預設值,這是預設複寫管理員的 DN。
如果您選擇具有安全連接埠的用戶,您可以按一下 [選項] 按鈕決定 DN 欄位的意義。如果您用密碼連線,供應商將使用簡單驗證,並透過加密的 SSL 連線進行通訊。如果您利用憑證進行連線,DN 欄位就是包含憑證的項目 DN,而且不需要密碼。
- 選擇性地輸入此協議的描述字串。用戶伺服器名稱與連接埠號碼及描述字串將出現在此主機複本的複寫協議清單中。
- 完成時,按一下 [確定]。便會顯示確認對話方塊,詢問您是否要測試剛輸入的連線參數。
- 如果要用指定的複寫管理員與密碼來測試能否連線到指定的伺服器及連接埠號碼,請按一下 [是]。如果連線失敗,您還是能夠選擇使用此協議,例如,可能是參數正確,但伺服器是處於離線狀態。
當您完成時,協議會出現在此主機複本的複寫協議清單中。
稍後您可以編輯複寫協議,以變更用戶伺服器上複寫管理員的 DN 與密碼:
- 從清單中選擇複寫協議,再按一下 [編輯] 按鈕。
- 在 [複寫協議] 對話方塊中,請選擇 [連線] 標籤。
- 編輯用戶伺服器的複寫管理員 DN 或密碼。
- 選擇性地編輯協議的描述字串。
- 按一下 [確定] 儲存新設定值,並在將更新傳給此用戶時立即開始使用新設定值。
- 在建立每個複寫協議後,您可以選擇為此尾碼設定片段複寫,然後立即初始化複本,如<初始化複本>所述。
設定片段複寫
依預設值,複寫會將複寫尾碼中的所有項目全部複製到用戶複本。若使用 Sun ONE Directory Server 5.2 中新增的片段複寫功能,您可以指定複寫過程中所複寫或排除的屬性子集。片段複寫是在複寫協議中設定,讓您可以為主機的每個用戶複本定義屬性組。如此一來,您可以控制分散的資料內容,並且更有效率地使用複寫頻寬及用戶資源。
例如,如果您要減少複寫頻寬,您可以選擇不複寫通常數值相當大的屬性,例如 photo、jpegPhoto 與 audio。因此,在用戶上無法使用這些屬性。又例如,您可以選擇只複寫 uid 與 userpassword 屬性到專門用來執行驗證的用戶伺服器。
片段複寫的注意事項
凡是啟用或修改片段的屬性組,都必須重新初始化用戶複本。因此,您應該在部署之前先決定片段複寫的需要,並在第一次初始化複本之前定義您的屬性組。
複寫小型屬性組時應小心,因為已知某些屬性的 ACI、角色與 CoS 等複雜的功能之間存在有依存性。不僅如此,若不複寫 ACI、角色或 CoS 機制的規範或搜尋條件中提及的其他屬性,可能破壞資料安全性,或造成搜尋中傳回不同的屬性組。管理要排除的屬性清單會比管理要包含的屬性清單安全,也比較不容易發生人為錯誤。
如果複寫的屬性組不允許所有複寫的項目要符合該結構,您應該關閉用戶伺服器中的結構檢查。複寫不符合結構的項目並不會產生錯誤,因為複寫機制會略過用戶上的結構檢查。但這樣一來,用戶將會包含不符合結構的項目,所以應該關閉結構檢查,以將連貫的狀態公開給其用戶端。
片段複寫是在有集線器與專用用戶之主機複本的複寫協議中設定。多重主機複寫環境中,不支援兩個主機複本之間的片段複寫組態。而且,如果數個主機與同一個複本間有複寫協議,則這些協議都必須複寫同一個屬性組。
Sun ONE Directory Server 5.2 所提供的片段複寫功能與舊版本的 Directory Server 不相容。設定片段複寫協議時,主機與用戶複本都必須在 Directory Server 5.2 實例上。
定義屬性組
屬性組是一張屬性清單,清單上的屬性是當複本上啟用片段複寫時所複寫的屬性 (其他所有屬性均排除)。您可以在主機伺服器上定義任何數目的屬性組,然後使其中一個屬性組與複寫協議產生關聯。
- 在 Directory Server 主控台最上層的 [組態] 標籤上,選擇 [資料] 節點,然後選擇右面板中的 [複寫] 標籤。
- 按一下 [複寫] 標籤下方的 [管理複寫屬性組] 按鈕。您可能必須向下捲動才會看到此按鈕。
- 按一下 [加入] 以定義新的屬性組,或從清單中選擇現有屬性組再按一下 [編輯] 進行修改。在顯示的 [屬性組] 對話方塊中選擇或取消選擇 [複寫] 欄中的核取方塊,使對應的屬性可包含在屬性組中,或排除在組外。屬性名稱旁有核取方塊表示將會複寫該屬性。
預設狀態下會選擇所有屬性,建議您只將特別不希望複寫的屬性取消選擇。如果要重新開始選擇,[全選] 按鈕會再次選擇所有屬性。當您取消選擇一些屬性後,目錄伺服器將複寫所有屬性,只排除已取消選擇的屬性。如果稍後在結構中定義新的屬性,並用於複寫項目中,這些新的屬性都將被複寫,除非您編輯屬性組取消選擇該屬性。
按一下 [全部不選] 按鈕將取消選擇所有屬性,然後您可以選擇要包含在屬性組中的屬性。當您按下 [全部不選],然後定義正確的屬性組後,只有選取的屬性會被複寫。如果稍後在結構中定義新的屬性,並用於複寫項目中,這些新的屬性都不會被複寫,除非您編輯屬性組選擇該屬性。
- 選擇性地輸入或修改此屬性組的描述字串。此文字將出現在定義的屬性組清單中,並在編輯即將使用此屬性組的複寫協議時出現。如果未提供描述,伺服器將根據排除或包含的屬性產生描述。
- 完成時,按一下 [儲存]。
啟用片段複寫
只有現有的複寫協議上可以啟用片段複寫:
- 依<建立複寫協議>所述建立複寫協議,或選擇先前定義的協議進行修改。
- 依<停用複寫協議>所述停用複寫協議。必須停用協議後才能修改片段複寫組態。
- 選擇已停用的協議,再按一下 [編輯]。在出現的 [複寫協議] 對話方塊中選擇 [複寫屬性] 標籤。
- 選擇 [只複寫一組屬性] 核取方塊。
- 從下拉式清單中選擇現有屬性組,或按一下 [新增] 定義新的屬性組,如<定義屬性組>所述。您也可以按一下 [管理複寫屬性組] 以檢視及修改現有的屬性組定義。
片段複寫只允許一個屬性組與複寫協議產生關聯。該屬性組應包含要複寫的正確屬性清單。
- 選擇屬性組後,按一下 [確定]。出現資訊訊息提醒您已設定片段複寫,且您必須重新初始化用戶複本。按一下 [確定] 退出訊息。
- 按一下 [啟用] 以重新啟用複寫協議。
- 您可以視複寫屬性的不同,考慮停用用戶伺服器上的結構檢查。
- 如果其他主機也與此複本之間有複寫協議,您必須重複此程序,在所有其他主機上用相同的屬性組啟用片段複寫。
- 您必須立即初始化用戶複本,或重新初始化已複寫的複本。請參閱下列<初始化複本>。
初始化複本
建立複寫協議後,您必須先重新初始化用戶複本,然後複寫才會真正開始。初始化期間,您會實際將資料從供應商複本複製到用戶複本。
某些錯誤狀況或組態變更會要求您必須重新初始化複本。重新初始化時,會刪除用戶上複寫尾碼的內容,並以主機上尾碼的內容取代。這樣可確保複本之間保持同步,並且可以繼續複寫更新。而且,此處所述的所有初始化方法都會自動重新建立用戶複本的索引,所以用戶已準備好以最佳狀態回應用戶端的讀取要求。
初始化時機
複本初始化必須在兩個複本都已完成設定之後,以及發生任何複寫之前進行。一旦將尾碼中的資料完全複製到用戶之後,供應商便可以開始在用戶上重新執行更新作業。
在正常作業下,絕不應該重新初始化用戶。但如果因為任何原因而從備份中還原單一主機複本,就應該重新初始化它更新的所有複本。若是多重主機複寫,則已經由其他主機更新的用戶不必重新初始化。
您可以使用主控台在線上初始化複本,或使用指令行手動初始化複本。對於初始化小量用戶的作業而言,使用主控台在線上進行初始化相當方便。您可以直接從複寫協議在線上初始化複本,但是因為每個複本要依序初始化,所以此方法不適合大量複本的初始化。若要從單一 LDIF 檔案同時初始化大量用戶,用指令行手動初始化是比較有效的方法。
最後,經驗豐富的管理員可以使用 Directory Server 5.2 新的二進位複製功能複製主機或用戶複本。這項功能有一些限制,因此只有對極大型資料庫檔案的複本 (例如包含幾百萬個項目的複本) 才有實用、省時的功效。
在多重主機複寫中初始化複本
在多重主機複寫的情況下,您應該依照下列順序初始化複本:
- 確定已經有一台主機擁有要複寫的完整資料。使用此主機,在每個其他主機上將複本初始化。
- 從主機初始化其用戶複本,或從任一台主機的 LDIF 檔案初始化用戶複本。
在階層式複寫中初始化複本
在階層式複寫的情況下,請記住一定要依照下列順序初始化複本:
- 如果您也有多重主機複寫,請確定其中一個主機已經有要複寫的完整資料集。使用此主機,在每個其他主機上將複本初始化。
- 從主機複本初始化第一層集線器複本上的複本。
- 如果有多層集線器,請從上一層初始化的集線器依序初始化每一層。
- 從最後一層集線器複本,初始化專用用戶上的複本。
多重主機初始化後的交集
在多重主機複寫的情況下,當某一主機正在進行初始化時,其他主機仍可以處理變更作業。因此,當初始化完成時,新的主機也必須接收不包含在初始化資料中的新更新。由於初始化可能需時甚久,因此擱置的更新數也可能相當多。
為了讓這些擱置更新能夠交集,新初始化的主機會自動將初始化後的用戶端作業設成唯讀模式。這對任何初始化類型都適用,不論是於線上使用主控台、從指令行透過 LDIF 檔案、或使用備份執行二進位複製。此行為是 Sun ONE Directory Server 5.2 中的新增功能。
因此在初始化後,多重主機組態中的主機將會處理複寫更新,並允許讀取作業,但對於來自用戶端的寫入作業則會傳回轉介。您可以如<進階多重主機組態>所述定義轉介。在符合下列條件後,主機將會回復讀寫模式:
- 將 ds5BeginReplicaAcceptUpdates 組態屬性設為 start,以明確允許更新作業。啟用更新之前,您應該確認新主機複寫已經與其他主機交集。這可以用 Directory Server 主控台上的複寫組態面板,或透過指令行來完成 (請參閱下列程序)。
若要在初始化的主機上啟用更新,建議您採用手動操作的方式,因為它可讓您在允許更新之前確認新主機是否與其他主機完全同步。
- 如果您先前已設定 ds5referralDelayAfterInit 屬性,主機複本將在指定延遲後自動切換回正常的讀寫模式。伺服器上每個主機複本的此屬性可以獨立設定。
如果您選擇設定此屬性,您所選用的延遲應該永遠足以讓主機複本在初始化後與其他主機交集。此延遲會視預期初始化的大小與長度,以及其他主機上同時發生變更速率的不同而所有差異。主機若在初始化後仍在複寫變更的同時接受更新作業,可能會產生無法解釋的錯誤。如果您碰到複寫錯誤,請參閱《Sun ONE Directory Server 參考手冊》的附錄 A<錯誤代碼>。
注意 當主機複本因為這個新的行為而傳送轉介時,等候執行寫入作業的用戶端可能會因此而到達設定的躍點限制。您可能必須提高用戶端的躍點限制組態,讓它們可以連線到可用的主機。如果所有主機複本都已初始化或重新初始化,則所有寫入作業將因為沒有複本接受用戶端更新而失敗。
不論何種情況,您應該緊密監控初始化的主機,並適當設定轉介屬性,讓伺服器的回應達到最高限度。
透過主控台開始接受更新
在多重主機複本初始化後,執行這些步驟以明確允許更新作業:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點與複寫尾碼的節點,然後選擇尾碼下方的 [複寫] 節點。
在右面板中,主控台會顯示訊息表示複本已初始化,而且目前會為更新作業傳回轉介。如果此訊息表示已啟用自動轉介延遲,您還是可以依照此程序覆寫該延遲。
- 使用 insync 工具以確保複本已經與所有其他的主機交集。如果所有伺服器上修改之間的延遲是零,或如果複本從來沒有任何變更需要複寫 (延遲為 -1),則複本之間為同步。如需詳細資訊,請參閱《Sun ONE Directory Server 參考手冊》第 1 章的<insync>。
- 按一下訊息右邊的按鈕,立即開始接受更新作業。
透過指令行開始接受更新
下列指令可用於自動處理多重主機複本初始化的指令檔內,以檢查交集並明確允許更新作業:
- 使用 insync 工具以確保複本已經與所有其他的主機交集。如果所有伺服器上修改之間的延遲是零,或如果複本從來沒有任何變更需要複寫 (延遲為 -1),則複本之間為同步。如需詳細資訊,請參閱《Sun ONE Directory Server 參考手冊》第 1 章的<insync>。
- 用下列指令修改 ds5BeginReplicaAcceptUpdates 組態屬性:
% ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn:cn=replica, cn=suffixName, cn=mapping tree, cn=config
changetype:modify
add:ds5BeginReplicaAcceptUpdates
ds5BeginReplicaAcceptUpdates:start
^D初始化複本時,會自動刪除 ds5BeginReplicaAcceptUpdates,使得初始化後會再次拒絕更新作業。
設定自動轉介延遲
ds5referralDelayAfterInit 組態屬性會決定任何初始化後複本傳回轉介的秒數。在此延遲後,複本將自動開始處理來自用戶端的更新作業。此屬性是每個複本特有的,而且應該根據<多重主機初始化後的交集>中所述的條件來設定屬性的值。
如果對應的複本最近已初始化,而且仍未接受更新,則變更此屬性值將動態影響對應的複本。您可以修改此數值以延長或縮短進行中的延遲;如果已超過延遲,而且複本正在接受更新,則設定此屬性將不會有任何影響。
此屬性的預設值是 -1,表示複本將無限期拒絕更新作業。在此情況下,您可以定義延遲,在超過延遲 (自初始化起算) 時自動允許更新。設定已超過的延遲將使複本立即開始接受更新。
- 使用下列指令設定 ds5referralDelayAfterInit 屬性:
% ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn:cn=replica, cn=suffixName, cn=mapping tree, cn=config
changetype:modify
replace:ds5referralDelayAfterInit
ds5referralDelayAfterInit:seconds
^D使用主控台初始化複本
使用主控台在線上初始化複本是初始化或重新初始化用戶最簡單的方法。但是,如果您要初始化大量項目 (超過 1-2 百萬),此處理可能非常耗時,您或許會覺得使用指令行進行手動的用戶初始化是比較有效率的作法 (如需更多資訊,請參閱<從指令行初始化複本>)。
注意 使用主控台初始化用戶複本時,尾碼上的所有作業 (包括搜尋) 會轉介到主機伺服器,直到初始化處理完成為止。
在使用 Directory Server 主控台時,使用已設定片段複寫將複本初始化的作業是透明的。初始化過程中,只會將選取的屬性傳送給用戶。
執行線上複本初始化
若要使用主控台初始化或重新初始化複本:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點與主機複本的尾碼節點,然後選擇尾碼下方的 [複寫] 節點。
在右面板中顯示複寫狀態資訊。
- 在已定義的協議清單中,選擇與您要初始化的用戶對應的複寫協議,再按一下 [動作]>[初始化遠端複本]。
出現確認訊息,警告您原先已儲存在用戶上複本中的任何資訊都將遺失。
- 在確認方塊中按一下 [是]。
線上用戶初始化立即開始。複寫協議的圖示顯示紅色齒輪,表示初始化處理的狀態。
- 按一下 [重新整理]>[立即重新整理],或選擇 [重新整理]>[繼續重新整理],以追蹤用戶初始化的狀態。
在清單下方的文字方塊中,會出現被反白顯示之協議的任何訊息。
如需關於監控複寫與初始化狀態的詳細資訊,請參閱<監控複寫狀態>。
從指令行初始化複本
對於複寫極大量項目的部署而言,使用指令行手動初始化複本是用戶初始化最快速的方法。凡是因為效能考量而不適合採用線上程序時,建議均可使用手動處理。但是,手動用戶初始化處理比線上用戶初始化處理複雜許多。
若要手動初始化或重新初始化複本,您必須先將尾碼資料的原始複本匯出到 LDIF 檔案。如果要初始化片段複本,您應該篩選檔案,只保留複寫的屬性。然後將該檔案傳輸到所有用戶伺服器,再進行匯入。在多重主機複寫部署中,您可以用從原始主機匯出的 LDIF 檔案來初始化其他主機與任何用戶。在階層式複寫環境中,您可以用同一個檔案初始化集線器複本與其用戶。
不論任何狀況,您都必須從設定的主機複本匯出的 LDIF 檔案開始。您無法使用任意的 LDIF 來初始化所有複本,因為任意檔案中不包含複寫資料。您必須先將您的 LDIF 檔案匯入主機複本,再用下列程序將它匯出。
匯出複本到 LDIF
您可以用 db2ldif -r 或 db2ldif.pl -r 指令將複本內容儲存在 LDIF 檔案中。如需詳細資訊,請參閱<從指令行匯出至 LDIF >。您必須使用這些指令的 -r 選項來匯出複本。
下列範例會將整個 dc=example,dc=com 複本匯出到名為 example_master.ldif 的檔案:
然後您可以視需要篩選 LDIF 檔案,並將它傳輸到用戶主機,以初始化用戶複本。
篩選片段複寫的 LDIF 檔案
如果您已設定片段複寫,您應該先將任何不用的屬性篩選掉,再將匯出的 LDIF 檔案複製到用戶伺服器。針對這個用途,Directory Server 提供了 fildif 工具。此工具會篩選指定的 LDIF 檔案,只保留複寫協議中定義的屬性組所允許的屬性。
此工具會讀取伺服器的組態,以決定屬性組定義。為了讀取組態檔,您必須以 root 執行 fildif 工具。例如,下列指令會篩選從上述範例的 dc=example,dc=com 尾碼中匯出的檔案:
# CAMUS=/var/Sun/mps/slapd-camus
# /var/Sun/mps/shared/bin/fildif \
-i $CAMUS/ldif/example_master.ldif \
-o $CAMUS/ldif/filtered.ldif -c $CAMUS/config/dse.ldif \
-b "cn=rousseau.example.com:389, cn=replica, \
cn=dc=example\歍c=com, cn=mapping tree, cn=config"-i 與 -o 選項分別代表輸入檔與輸出檔。-c 選項是包含複寫協議及屬性組定義的組態檔。dse.ldif 檔案是儲存 cn=config 項目內容 (包括複寫協議與屬性組) 的伺服器所在位置。
-b 選項是定義片段複寫之複寫協議的 DN。在 Directory Server 主控台中以目錄管理員的身份瀏覽 cn=config 尾碼,即可找到此項目。請選擇尾碼下方的 cn=replica 項目,並使用 [編輯]>[複製 DN] 功能表項目將此 DN 複製到剪貼簿,以便在輸入指令時使用。
fildif 工具的完整指令行語法可見於《Sun ONE Directory Server 參考手冊》第 1 章的<LDIF 指令行公用程式>中。
接著您可以使用 fildif 所產生的 filtered.ldif 檔案,將此複寫協議中的用戶初始化。將檔案傳輸到用戶伺服器,再依下一節的說明匯入檔案。
匯入 LDIF 檔案到用戶複本
您可以利用 Directory Server 主控台中的匯入功能將包含主機複本內容的 LDIF 檔案匯入用戶複本,也可以使用 ldif2db 指令或 ldif2db.pl 指令檔 (在 Solaris 套裝軟體上是 directoryserver ldif2db 或 directoryserver ldif2db-task) 執行匯入。就如所有匯入作業一樣,這些指令檔需要目錄管理員的連結 DN 與密碼才能執行匯入。在<從指令行匯入 LDIF >中會說明匯入的方法。
下列範例顯示如何匯入 LDIF 檔案,以初始化 dc=example,dc=com 用戶複本:
使用 ldif2db.pl 指令檔之前不必先停止伺服器。如需詳細資訊,請參閱《Sun ONE Directory Server 參考手冊》第 2 章的<ldif2db.pl>。
使用二進位複製初始化複本
Directory Server 5.2 新的二進位複製功能會複製整個伺服器,方法是使用來自某部伺服器的二進位備份檔案來還原另一部伺服器上相同的目錄內容。此進階功能會與目錄伺服器的資料庫檔案互動,而且僅適合經驗豐富的管理員使用。
二進位複製的限制
因為二進位複製功能會將資料庫檔案從一台電腦搬移到另一台電腦,所以這項機制有下列嚴格的限制:
- 兩台電腦必須使用相同的硬體及相同的作業系統,包括任何 Service Pack 或修補檔案。
- 兩台電腦必須已安裝相同版本的 Directory Server,包括二進位檔案碼格式 (32 位元或 64 位元)、Service Pack 或修補檔案階層。
- 兩台電腦必須擁有分割成相同尾碼的相同樹狀目錄。所有尾碼的資料庫檔案必須一起複製,無法複製個別尾碼。
- 每個尾碼在兩部伺服器上必須設定相同的索引,包括 VLV (virtual list view,虛擬清單檢視) 索引。尾碼的資料庫必須擁有相同名稱。
- 即將複製的 Directory Server 必須不包含 o=NetscapeRoot 尾碼,因為這表示它無法作為 Sun ONE Administration Server 的組態目錄。
- 每部伺服器必須將相同的尾碼設成複本,而且複本在兩部伺服器上必須具備相同的角色 (主機、集線器或用戶)。如果已設定片段複寫,所有主機伺服器上的設定必須完全一致。
- 任一部伺服器上都不能使用屬性加密。
- 若已啟用屬性值唯一性外掛程式,此外掛程式在兩部伺服器上必須擁有相同的組態,而且必須在新的複本上重新設定 (如下列程序所述)。
在上述條件下,您可以從一部主機伺服器的二進位複本初始化或重新初始化另一部主機伺服器,或從一部用戶伺服器的二進位複本初始化或重新初始化另一部用戶伺服器。下列兩個程序說明執行二進位複製的替代方法,一個方法不需要停止伺服器,另一個方法使用最小的磁碟空間。
不停止伺服器的二進位複製
執行二進位複製時,建議您使用以下程序,因為它使用正常的備份功能來建立伺服器資料庫檔案的複本。執行正常備份可確保所有資料庫檔案都保持連貫的狀態,不需要停止伺服器。
但是此程序有某些限制,您應該列入考量。備份與還原作業會在同一台電腦上建立資料庫檔案的複本,因此每台電腦上由這些檔案佔用的磁碟空間會變成兩倍。此外,如果您的目錄包含數個 GB 的資料,這些檔案實際的複製作業可能耗費可觀的時間。如果您的磁碟空間有限,或您的資料庫檔案極大,請參閱<使用最小磁碟空間的二進位複製>。
- 在新複本的目標機器上安裝 Directory Server,視需要建立伺服器的新實例,然後再根據<二進位複製的限制>來設定。
- 在您涉及此複本的複寫拓撲中建立所有的複寫協議。這會包括從供應商到此複本的協議,如果不是專用用戶,則為從此複本到其用戶的協議。
- 選擇一個與要初始化的複本相同類型 (可能為主機、集線器或用戶)、而且已完全設定並初始化的尾碼,並根據<使用主控台備份您的伺服器>中的程序在此尾碼上執行正常備份。
- 將檔案從備份目錄複製或傳輸到目標電腦上的目錄,例如使用 ftp 指令。
- 根據<從備份還原資料>中的程序將檔案載入目標伺服器。
- 如果您已初始化多重主機複寫案例中的新主機,請依照<多重主機初始化後的交集>中的程序進行,以確保新的複本將開始接受來自用戶端的更新作業。
使用最小磁碟空間的二進位複製
下列程序使用較少的磁碟空間及較短的時間,因為它不必為資料庫檔案製作備份。但是它會要求您停止被複製的伺服器,以確保資料庫檔案處於連貫的狀態。
小心
此程序不可用於重新初始化已參與多重主機複寫案例的主機。它只可用於重新初始化用戶伺服器,或初始化新的主機伺服器。若要重新初始化現有的主機複本,請使用線上初始化、匯入 LDIF 檔案或依照<不停止伺服器的二進位複製>程序執行。
- 在新複本的目標機器上安裝 Directory Server,視需要建立伺服器的新實例,然後再根據<二進位複製的限制>來設定。
- 在您涉及此複本的複寫拓撲中建立所有的複寫協議。這會包括從供應商到此複本的協議,如果不是專用用戶,則為從此複本到其用戶的協議。
- 停止即將初始化或重新初始化的目標伺服器,如<啟動和停止Diectory Server>所述。
- 選擇一個與要初始化的複本相同類型 (可能為主機、集線器或用戶)、而且已完全設定並初始化的複本,並停止此伺服器。如果要複製多重主機組態中的主機複本,在停止主機之前您應該確定該主機已經完全更新為來自其他主機的最新變更。
- 將所有資料庫檔案 (包括交易記錄) 從來源複本電腦複製或傳輸到目標電腦,例如使用 ftp 指令。除非檔案的位置被更改,否則資料庫檔案與交易記錄應位於 ServerRoot/slapd-serverID/db 目錄。
如果要初始化主機或集線器複本,您必須複製變更記錄內所有的檔案,這些檔案預設位於 ServerRoot/slapd-serverID/changelog 目錄。
- 重新啟動來源與目標伺服器。
啟用參考完整性外掛程式
如果您要使用參考完整性外掛程式,您必須在所有主機伺服器上啟用此外掛程式,但不必在集線器或用戶伺服器上啟用此外掛程式。請參閱<將參考的完整性用於複寫>。
透過 SSL 複寫
您可以設定涉及複寫的 Directory Server,讓所有複寫作業都透過 SSL 連線上進行。若要做此設定,請完成下列步驟:
- 將供應商與用戶伺服器都設定為使用 SSL。
如需詳細資料,請參閱第 11 章<執行安全性>。
注意 系統無法透過 SSL 複寫進行複寫,因為供應商伺服器憑證是:
- 如果用戶伺服器上的尾碼未設定複寫,請依照<啟用用戶複本>所述啟用複寫。
- 依照<進階用戶組態>中的程序將用戶上憑證項目的 DN 定義為另一個複寫管理員。
- 如果供應商伺服器上的尾碼未設定複寫,請依照<啟用集線器複本>或<啟用主機複本>所述啟用複寫。
- 在供應商伺服器上,建立新的複寫協議,使更新透過安全 SSL 連接埠傳送給用戶。如需詳細說明,請依照<建立複寫協議>中的程序進行。指定用戶伺服器上的安全連接埠,並選擇使用密碼或憑證的 SSL 選項。輸入您所選之 SSL 選項 (複寫管理員或憑證) 的 DN。
完成設定複寫協議後,供應商會透過 SSL 將所有複寫更新訊息傳送給用戶,並且使用憑證 (如果您選擇該選項)。如果客戶初始化是透過主控台使用設定 SSL 的協議來執行,則客戶初始化也會使用安全連線。
透過 WAN 複寫
Sun ONE Directory Server 5.2 引進了執行所有複寫形式的功能,包括透過廣域網路 (WAN) 所連接電腦之間的多重主機複寫 (MMR)。複寫機制經過內部改良後,能讓供應商伺服器透過更高延遲及更低頻寬的網路,在合理的延遲內初始化及更新用戶。
注意 實際的複寫延遲與更新效能須視許多因素而定,包括 (但不限於):修改率、項目大小、伺服器硬體、平均延遲及平均頻寬。如果您對工作環境中的複寫有疑問,請聯絡您的 Sun 專業服務代表。
複寫機制的內部參數依預設值便能在 WAN 環境中有最佳效能,但如果您因為上述因素而有複寫緩慢的問題,您或許想要試著調整視窗大小和群組大小參數。您也可以排定複寫的時程,以避開網路尖峰時間,因而改進整體的網路使用情形。最後,Solaris 和 Linux 平台上的 Directory Server 支援複寫資料壓縮以最佳化頻寬的使用。
設定網路參數
下列兩個參數會決定複寫機制如何將項目集合成群組,以更有效率地透過網路傳送,這兩個參數會影響供應商與用戶交換複寫更新訊息及認可的方式。
- 視窗大小 (預設值是 10) - 代表用戶不需立即認可便能傳送之更新訊息數的最大值。在 WAN 環境中,一次傳送許多訊息較每次傳送訊息後等待認可傳回更有效率。
- 群組大小 (預設值是 1) - 代表可包捆成單一更新訊息之資料修改數的最大值。視資料大小與網路屬性的不同,傳送較大訊息可能會更有效率,因此會有較大的群組大小。
預設值對大部份情況都是最適合的設定。但如果您有異常大或異常小的目錄項目,或如果要複寫的修改率極高,您可能想修改這些參數,以測試這些參數對透過 WAN 的複寫效能有何影響。
這兩個網路參數在每個複寫協議中均可設定,讓您可以根據每個用戶特有的網路條件自訂複寫效能。
您不必中斷複寫即可修改視窗及群組大小參數:
- 選擇 Directory Server 主控台上的 [組態] 標籤,展開 [資料] 節點與複寫尾碼的節點。
- 請選擇尾碼下方的 [複寫] 節點,並在右窗格中選擇您想要設定的複寫協議,再按一下 [編輯]。
- 選擇 [複寫協議] 對話方塊的 [網路] 標籤,輸入新的視窗大小值 (範圍介於 1 到 1000 之間),與群組大小值 (範圍介於 1 到 100 之間)。群組大小必須小於或等於視窗大小。
- 按一下 [確定],儲存新值並關閉 [複寫協議] 對話方塊。
新的參數值在下一次將複寫更新傳送到對應的用戶時,會立即生效。
排程複寫活動
如果複本之間的立即同步化不是那麼急迫,則透過 WAN 複寫資料的其中一種方式便是將更新排程在網路使用較不頻繁時進行。當網路可用率較高時,更新的執行速度也會顯著加快,而且複寫訊息不會更進一步地阻塞已經高度使用的網路。
您可以透過複寫協議個別為每個用戶排程於每天或每週執行更新:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點與複寫尾碼的節點。
- 請選擇尾碼下方的 [複寫] 節點,並在右窗格中選擇您想要設定的複寫協議,再按一下 [編輯]。
- 選擇 [複寫協議] 對話方塊的 [排程] 標籤,選擇每週排程旁的選項按鈕。
- 定義排程:
- 對於每週的更新,請選擇一週中要進行複寫的一或多日的核取方塊。如果要進一步限制於這幾日內的複寫條件,您可以選擇性地輸入時間範圍 (使用 24 小時制表示法)。
- 對於每日的更新,請按一下 [全部] 以每天進行複寫,並輸入時間範圍 (使用 24 小時制表示法) 指定執行複寫的時間。
請注意,時間範圍不能跨越午夜。
- 按一下 [確定],儲存新值並關閉 [複寫協議] 對話方塊。
新的排程將立即生效,導致對應用戶的下一次複寫更新會延遲到排程允許的第一個時間才執行。
資料壓縮
如要降低複寫所使用的頻寬,您可以設定複寫在更新用戶時,壓縮傳送的資料。複寫機制使用 Zlib 壓縮程式庫,該程式庫僅在支援的 Solaris 和 Linux 平台上才有。供應商和用戶兩者都要在 Solaris 或 Linux 平台才能啟用壓縮。
只有在主機伺服器的複寫協議上,設定 ds5ReplicaTransportCompressionLevel 屬性,才有複寫壓縮的組態可用。此屬性可使用下列值中的一個:
0 - 不執行壓縮。這就是
ds5ReplicaTransportCompressionLevel 屬性未定義時的預設行為。1 - 使用 Zlib 程式庫預設的壓縮層級。
2 - 使用 Zlib 程式庫最佳大小的壓縮層級。
3 - 使用 Zlib 程式庫最佳速度的壓縮層級。
您應該依據經驗測試並選擇壓縮層級,為您預期的複寫使用率,在 WAN 環境下帶來最佳的結果。您不能在網路延遲不明顯的 LAN (區域網路) 中設定此參數,因為壓縮和解壓縮的運算將使複寫變慢。
例如,若要在 east.example.com 上使用最快速壓縮傳送複寫更新至用戶,請使用下列 ldapmodify 指令:
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn:cn=east.example.com:389,cn=replica,cn="suffixDN",
cn=mapping tree,cn=config
changetype:modify
add:ds5ReplicaTransportCompressionLevel
ds5ReplicaTransportCompressionLevel: 3
^D修改複寫拓撲
本節包含幾個用於管理現有複寫拓撲的程序,例如編輯或移除複寫協議、升級、降級或停用複本、強迫更新用戶以及管理變更記錄。
管理複寫協議
您可以從主機尾碼的複寫面板中管理複寫協議,以變更協議中的驗證資訊、中斷傳給特定用戶的複寫或將用戶從拓撲中移除。
變更複寫管理員
您可以編輯複寫協議,以變更用來連結用戶伺服器的複寫管理員身份。為避免中斷複寫,您應該先在用戶上定義新的複寫管理員項目或憑證項目,然後再修改複寫協議。但如果複寫因連結失敗而中斷,當您改正錯誤後,複寫機制將會在複寫復原設定值的限制內,自動傳送所有必要的更新 (請參閱<進階用戶組態>)。
若要變更用戶用以通過驗證的複寫管理員:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點和複寫尾碼節點,並選擇尾碼下方的 [複寫] 節點。
- 在右面板中,選擇要修改的複寫協議,再按一下 [編輯]。
- 在 [複寫協議] 對話方塊中,請選擇 [連線] 標籤。
狀態行會指示用戶伺服器的主機名稱與連接埠號碼。
- 修改 DN 與密碼欄位,以包含另一個複寫管理員項目的 DN 或密碼,或用戶伺服器上憑證項目的 DN。
- 如果此複寫協議使用透過安全連接埠的 SSL,您也可以按一下 [選項] 按鈕選擇安全驗證的類型。如果您用密碼進行連線,供應商將透過加密的 SSL 連線所指定的 DN 來使用簡單驗證。如果您用憑證進行連線,DN 欄位就是憑證項目的 DN,不需要密碼。
您無法將現有的複寫協議從非安全驗證切換成安全驗證,反之亦然。若要用不同的安全性設定啟用複寫,您必須建立另一個複寫協議。
- 按一下 [確定] 儲存您的變更。
複製複寫協議
複製複寫協議是一種很簡單的方法,能夠為大型複寫拓撲中的供應商複本設定許多用戶:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點和複寫尾碼節點,並選擇尾碼下方的 [複寫] 節點。
- 從複寫協議清單中,選擇要複製的協議。如果要用新的協議與用戶建立安全連線,您必須選擇也使用安全連接埠的現有協議。如果要建立新的非安全協議,您必須選擇非安全協議。
按一下 [編輯] 並瀏覽 [複寫協議] 對話方塊的各個標籤,以確認此協議的組態。這些標籤上的組態將於下列各節說明:
- 在仍選擇同一個複寫協議的情況下,按一下 [複製] 按鈕。
- 從清單中選擇新用戶的主機名稱與連接埠號碼,或按一下 [加入主機] 按鈕以使用不同的主機與連接埠。清單和 [加入主機] 對話方塊將只允許您選擇與複製的用戶協議相同安全性類型的用戶。
- 確定已選擇清單中的主機名稱,再按一下 [確定],為該用戶伺服器建立新的複寫協議。
- 新的協議會複製現有伺服器的所有組態資訊。這表示這兩部伺服器必須擁有完全相同的複寫管理員項目,使用相同的密碼。如果要修改新協議的組態 (例如,變更複寫管理員 DN),請從清單中選擇該協議,再按一下 [編輯]。
停用複寫協議
停用複寫協議後,主機會停止傳送更新到指定的用戶。雖然到該伺服器的複寫會停止,但仍會保留協議中所有的設定值。日後只要重新啟用該協議,即可繼續複寫。如需關於中斷後恢復複寫機制的資訊,請參閱下列的<啟用複寫協議>。
若要停用複寫協議:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點和複寫尾碼節點,並選擇尾碼下方的 [複寫] 節點。
- 在右面板中,選擇要停用的複寫協議。
- 在協議清單下方的方塊中選擇 [動作]>[停用協議]。
- 按一下 [是] 以確認要停用該複寫協議。
清單中協議的圖示便會改變,以顯示其已停用。
啟用複寫協議
啟用複寫協議將恢復與指定用戶的複寫。但如果複寫的中斷時間已超過複寫復原設定值所允許的時間,而且其他供應商未更新該用戶,則您必須重新初始化該用戶。複寫復原設定值是此供應商變更記錄與用戶的清除延遲這兩項設定的大小及天數之最大值 (請參閱<進階用戶組態>)。
當中斷時間相當短,而且可以復原複寫時,只要重新啟用協議,主機便會自動更新用戶。
若要啟用複寫協議:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點和複寫尾碼節點,並選擇尾碼下方的 [複寫] 節點。
- 在右面板中,選擇要啟用的複寫協議。
- 在協議清單下方的方塊中按一下 [啟用] 按鈕。
- 視需要重新初始化用戶複本。
刪除複寫協議
刪除複寫協議將停止對應用戶的複寫,而且會移除有關該協議的所有組態資訊。日後若想恢復複寫,請改為停用協議,如<停用複寫協議>所述。
若要刪除複寫協議:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點和複寫尾碼節點,並選擇尾碼下方的 [複寫] 節點。
- 在右面板中,選擇要刪除的複寫協議。
- 按一下協議清單右邊的 [刪除] 按鈕。
- 按一下 [是] 以確認要刪除該複寫協議。
升級或降級複本
升級或降級複本會改變複本在複寫拓撲中的角色。專用用戶可以升級成集線器,集線器可以升級成主機;主機可以降級成集線器,而集線器也可以降級成專用用戶。但是主機不可以直接降級成用戶,同樣地,用戶也不可以直接升級成主機。
多重主機複寫機制中的升級與降級功能讓拓撲非常具有彈性。原先由用戶複本服務的網站可能會因為成長,而需要具有幾個複本的集線器才能夠處理其負載。如果負載包含許多複本內容的修改,集線器便可以變成主機,以加快本機變更的速度,之後再將變更複寫到其他網站上的其他主機。
若要升級或降級複本:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點和複寫尾碼節點,並選擇尾碼下方的 [複寫] 節點。
- 在右面板中,選擇 [變更]>[升級-降級複本] 功能表項目。
- 複寫精靈將只讓您選擇允許的新角色,然後逐步指導您進行新複本角色的組態設定程序。您應該要知道下列的結果:
- 將主機降級成集線器時,複本將變成唯讀,並設為會傳送轉介給其餘主機。新的集線器將保留其所有用戶,不論是集線器或專用用戶。
- 將單一主機降級成集線器將會建立沒有主機複本的拓撲。精靈是假設您即將定義新的主機,才允許您執行此降級動作。但是您最好是先加入新的主機成為多重主機,並讓它初始化後,再降級其他主機。
- 將集線器降級成用戶時,將會刪除所有複寫協議。如果集線器的用戶未由其他集線器或主機更新,該用戶將不再獲得更新。您應該在其他集線器或主機上建立新的協議,以更新這些用戶。
- 將用戶升級成集線器時,便會啟用其變更記錄,而且您可以定義它與用戶的新協議。
- 將集線器升級成主機時,複本將會接受修改要求,而且您可以定義它與其他主機、集線器或專用主機的新協議。
停用複本
停用複本會將它從複寫拓撲中移除。它將不再獲得更新或傳送更新 (依其角色是主機、集線器或用戶而定)。停用供應商將刪除所有複寫協議,而且如果重新啟用複本的話,所有複寫協議都必須重新建立。
若要停用複本:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點和複寫尾碼節點,並選擇尾碼下方的 [複寫] 節點。
- 在右面板中,選擇 [變更] > [停用複寫] 功能表項目。
- 在確認對話方塊中按一下 [是]。
- 或者,重設此尾碼的寫入權限及轉介。停用複本後,這些設定值仍然會依原狀保留,例如停用的用戶仍然會傳送修改要求給它原先的主機複本。
若要修改寫入權限與轉介,請在 [組態] 標籤上選擇此尾碼的節點,並在右面板的 [設定值] 標籤中進行修改。如需詳細資訊,請參閱<設定存取權限及轉介>。
移動變更記錄
變更記錄是指定供應商複本上所有修改的內部記錄,伺服器利用它在其他複本上重新執行修改。變更記錄的內容是由伺服器自動管理,而且將透過多重主機更新進行更新 (即使是在伺服器重新啟動之後)。
在舊版 Directory Server 中,變更記錄可透過 LDAP 存取,但現在則僅供伺服器內部使用。如果您有必須讀取變更記錄的應用程式,請使用 [Retro Changelog Plugin],以達到回溯相容性。如需詳細資訊,請參閱<使用追溯變更記錄外掛程式>。
只有當系統管理員必須將檔案移到其他位置時 (例如當檔案所在的磁碟已滿時),才應該修改變更記錄。
小心
當您停用變更記錄,或將變更記錄移到新位置時,變更記錄會重新初始化。不論任一種狀況,您都必須重新初始化此伺服器上複本的所有用戶。
您必須用 Directory Server 主控台來移動變更記錄,絕不能使用作業系統的 rename 或 mv 指令:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,選擇 [資料] 節點,再選擇右面板中的 [複寫] 標籤。
- 在文字欄位中輸入新的位置。這是從現在起要儲存變更記錄的新路徑與目錄名稱。例如,將變更記錄從預設位置 ServerRoot/slapd-serverID/changelogdb 移到 ServerRoot/slapd-serverID/newchangelog。
現有的變更記錄會從舊的位置刪除,新的變更記錄則保持在新的位置。
- 在 [複寫] 標籤中按一下 [儲存]。
- 重新啟動 Directory Server。
- 依<初始化複本>所述,重新初始化您的用戶。
保持複本同步
在停止涉及複寫的目錄伺服器以進行定期維護後,當它重新上線時,您必須確定它會立即透過複寫獲得更新。對於多重主機環境中的主機,目錄資訊必須由多重主機集合中的另一部主機進行更新。若是其他狀況,在將集線器複本或專用用戶設為離線狀態以進行維護後,當它們重新上線時,必須由主機複本進行更新。
本節說明複寫重試演算法,以及如何不等候下一次重試便強迫發生複寫更新。
注意 只有已設定複寫,並且已初始化用戶時,才可使用本節所描述的程序。
複寫重試演算法
當供應商嘗試複寫到用戶失敗時,它會以遞增的時間間隔定期重試。重試模式如下:20、40、80、然後 160 秒。之後,供應商會每隔 160 秒重試一次。
請注意,即使您已將複寫協議設成供應商複本與用戶複本永遠保持同步,也不足以將已離線超過 5 分鐘的複本立即回復到最新狀態。
為確保當伺服器恢復上線時目錄資訊會立即同步,您可以利用Directory Server 主控台或自訂的指令檔。
從主控台強迫複寫更新
為確保當用戶 (或多重主機複寫組態中的主機) 在經過一段時間之後回復上線時,會立即傳送複寫更新,您可以在儲存最新版目錄資料的供應商上執行這些步驟:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點與主機複本的尾碼節點,並選擇尾碼下方的 [複寫] 節點。
在右面板中顯示複寫狀態資訊。
- 從要更新的用戶對應清單中選擇複寫協議,再按一下 [動作]>[立即傳送更新]。
這樣會對儲存須更新之資訊的複本啟動複寫。
用指令行強迫複寫更新
您可以從需要更新的用戶上執行指令檔,提示其供應商立即傳送複寫更新。如需此指令檔,請參閱程式碼範例 8-1。
您可以複製此範例,並為它指定有意義的名稱,例如 replicate_now.sh。您必須為程式碼範例 8-1 中所列的變數提供實際的值。
注意 系統管理員必須執行此指令檔,因為只要離線的伺服器重新上線,便無法將它設定為自動執行。
#!/bin/sh
SUP_HOST=supplier_hostname
SUP_PORT=supplier_portnumber
SUP_MGRDN=supplier_directoryManager
SUP_MGRPW=supplier_directoryManager_passwd
MY_HOST=consumer_hostname
MY_PORT=consumer_portnumber
ldapsearch -1 -h ${SUP_HOST} -p ${SUP_PORT} -D "${SUP_MGRDN}" \
-w ${SUP_MGRPW} -b "cn=mapping tree, cn=config" \
"(&(objectclass=nsds5replicationagreement) \
(nsDS5ReplicaHost=${MY_HOST})(nsDS5ReplicaPort=${MY_PORT}))" \
dn nsds5ReplicaUpdateSchedule > /tmp/$$
cat /tmp/$$ |
awk �
BEGIN { s = 0 }
/^dn:/ { print $0;
print "changetype:modify";
print "replace:nsds5ReplicaUpdateSchedule";
print "nsds5ReplicaUpdateSchedule: 0000-2359 0123456";
print "-";
print "";
print $0;
print "changetype:modify";
print "replace:nsds5ReplicaUpdateSchedule";
}
/^nsds5ReplicaUpdateSchedule:/ { s = 1; print $0; }
/^$/ {
if ( $s == 1 )
{ print "-" ; print ""; }
else
{ print "nsds5ReplicaUpdateSchedule: 0000-2359 0123456";
print "-" ; print ""; };
s = 0; }
� > /tmp/ldif.$$
echo "Ldif is in /tmp/ldif.$$"
echo
ldapmodify -c -h ${SUP_HOST} -p ${SUP_PORT} -D "${SUP_MGRDN}" \
-w ${SUP_MGRPW} -f /tmp/ldif.$$
"> 程式碼範例 8-1    Replicate_Now 指令檔範例
#!/bin/sh
SUP_HOST=supplier_hostname
SUP_PORT=supplier_portnumber
SUP_MGRDN=supplier_directoryManager
SUP_MGRPW=supplier_directoryManager_passwd
MY_HOST=consumer_hostname
MY_PORT=consumer_portnumber
ldapsearch -1 -h ${SUP_HOST} -p ${SUP_PORT} -D "${SUP_MGRDN}" \
-w ${SUP_MGRPW} -b "cn=mapping tree, cn=config" \
"(&(objectclass=nsds5replicationagreement) \
(nsDS5ReplicaHost=${MY_HOST})(nsDS5ReplicaPort=${MY_PORT}))" \
dn nsds5ReplicaUpdateSchedule > /tmp/$$
cat /tmp/$$ |
awk �
BEGIN { s = 0 }
/^dn:/ { print $0;
print "changetype:modify";
print "replace:nsds5ReplicaUpdateSchedule";
print "nsds5ReplicaUpdateSchedule: 0000-2359 0123456";
print "-";
print "";
print $0;
print "changetype:modify";
print "replace:nsds5ReplicaUpdateSchedule";
}
/^nsds5ReplicaUpdateSchedule:/ { s = 1; print $0; }
/^$/ {
if ( $s == 1 )
{ print "-" ; print ""; }
else
{ print "nsds5ReplicaUpdateSchedule: 0000-2359 0123456";
print "-" ; print ""; };
s = 0; }
� > /tmp/ldif.$$
echo "Ldif is in /tmp/ldif.$$"
echo
ldapmodify -c -h ${SUP_HOST} -p ${SUP_PORT} -D "${SUP_MGRDN}" \
-w ${SUP_MGRPW} -f /tmp/ldif.$$
如果您計劃使用此指令檔,您必須用您的複寫環境中實際的值取代下列變數。
如果希望更新作業透過 SSL 連線進行,您必須用適當的參數與值修改指令檔中的 ldapmodify 指令。如需詳細資訊,請參閱<將 LDAP 用戶端設定為使用安全性>。
與舊版進行複寫
本節提供關於如何設定與舊版 Sun ONE Directory Server 進行複寫的資訊。
就任何複寫組態而言,Sun ONE Directory Server 5.1 與 5.2 完全相容,但下列情況例外:
- 無法使用片段複寫,因此在 Directory Server 5.2 主機與 5.1 用戶複本之間不能設定片段複寫。
- 在版本 5.2 主機和 5.1 用戶間設定協議時,您必須在 cn=config 中設定 nsslapd-schema-repl-useronly 為 on。否則,版本 5.2 中的結構在複寫至 5.1 版時,將會建立衝突。加上這個設定,只有使用者定義的結構元素 (儲存在 99user.ldif 檔案中) 會被複寫。請參閱<複寫結構定義>。
- 在 Directory Server 5.2 版本中,結構檔案 11rfc2307.ldif 已改變,且遵循 RFC 2307。您必須在版本 5.1 的伺服器上更新相對應的檔案,如<更新 Directory Server 版本 5.1的結構>所述。
- 在 5.1 版本用戶的轉介清單中仍會顯示已降級成集線器的 5.2 版本主機。但由於降級的內部機制所致,已降級複本的連接埠號碼將是零。此轉介 URL 將無法使用,而且當用戶端無法依照此轉介時,大部分用戶端將會自動嘗試其他主機的轉介。但是,您可能必須在存取這些 5.1 版本複本的用戶端上提高轉介的躍點限制。5.2 版本用戶複本既不會顯示也不會傳回這個指向已降級的主機、且無法使用的轉介 URL。
Sun ONE Directory Server 在下列條件下,5.2 版本可涉及含 4.x 版本 Directory Server 的複寫案例:
- Directory Server 5.2 設定為主機,但只作為 Directory Server 4.x 供應商的複寫用戶。
- 用戶複本不能同時為舊的 4.x 版本供應商與 5.2 版本供應商的用戶。但 5.2 版本伺服器可以有不同的複本,其中一個由舊的 Directory Server 提供,另一個由 5.2 版本 Directory Server 提供。
- Directory Server 5.2 複本若已設定為舊的 4.x 版本供應商的用戶,便不能作為拓撲中此尾碼的集線器複本。
能夠使用 Directory Server 5.2 作為舊 Directory Server 用戶的主要優點是,能方便遷移複寫的環境。如需關於遷移複寫環境之步驟的詳細資訊,請參閱《Sun ONE Directory Server 安裝和調整指南》中的第 2 章<從舊版本升級>。
將 Directory Server 5.2 設定為 Directory Server 4.x 的用戶
如果您計劃使用 Directory Server 5.2 作為 4.x 版本 Directory Server 的用戶,您必須依下列方式設定:
- 依<啟用主機複本>所述,將複本啟用為主機複本。即使複本是 4.x 供應商的用戶,都必須設定為主機複本。
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [資料] 節點和複寫尾碼節點,並選擇尾碼下方的 [複寫] 節點。
- 在右面板中,為此複本選擇 [變更] > [啟用 4.x 相容性];或者,選擇 [物件] 功能表中的 [啟用 4.x 相容性]。
- 在 [啟用 4.x 相容性] 視窗中,指定舊供應商伺服器用來連結的連結 DN 與密碼。您可以使用任何管理項目作為連結 DN,包括預設的複寫管理員。如需關於連結 DN 的詳細資訊,請參閱<選擇複寫管理員>。
如果供應商使用此伺服器的安全連接埠進行複寫更新,您可以輸入伺服器憑證項目的 DN,以使用安全驗證。
- 按一下 [確定]。現在此用戶複本即已準備好接收來自舊供應商的更新。
- 請確認 5.2 版本複本伺服器上結構定義了將從 4.x 版本主機複寫的內容中的所有屬性和物件類別。
- 匯入在 4.x 版本主機上建立的 LDIF 複本檔案,以初始化 5.2 版本的複本。在此檔案中的第一個項目包含有 4.x 複寫機制所需的 copiedfrom 屬性。
在伺服器上啟用 4.x 相容性會設定預設安裝的舊複寫外掛程式。此外掛程式會處理來自舊供應商的更新,並對複寫尾碼的內容執行更新。
注意 只要 4.x 相容性為啟用狀態,此複本會為來自用戶端的任何修改要求傳回轉介。即使 Directory Server 5.2 設定為主機複本,它都不會在此尾碼上執行修改要求,而是會傳回 4.x 供應商伺服器的轉介。
為完成舊複寫設定,您必須立即將舊供應商設為複寫到 5.2 Directory Server。如需關於在 4.x Directory Server上設定複寫協議的說明,請參閱舊的Directory Server所提供的說明文件。
更新 Directory Server 版本 5.1 的結構
在 Directory Server 5.2 中,結構檔案 11rfc2307.ldif 已改變,且遵循 RFC 2307 (http://www.ietf.org/rfc/rfc2307.txt)。在設定或啟用 5.2 版和 5.1 版伺服器間的複寫前,您必須更新 5.1 版本伺服器上的結構。在這兩個版本的伺服器上,結構檔案位於 ServerRoot/slapd-serverID/config/schema/。
- 從 5.2 版本伺服器上複製檔案 11rfc2307.ldif 至 5.1 版伺服器。
- 如果您有 5.1 版本伺服器的 Solaris 套件軟體安裝程式,您必須刪除過時的 10rfc2307.ldif 檔案。
- 如果你有 5.1 版本伺服器其他平台的壓縮檔安裝程式,您將覆寫現有的 11rfc2307.ldif 檔案。
- 下列結構檔案在此次變更中受到影響,必須從 5.2 版本伺服器上複製,覆寫至 5.1 版本伺服器上現有的檔案:
- 20subscriber.ldif
- 30ns-common.ldif
- 50ns-admin.ldif
- 50ns-certificate.ldif
- 50ns-directory.ldif
- 50ns-legacy.ldif
- 50ns-mail.ldif
- 50ns-mlm.ldif
- 50ns-msg.ldif
- 50ns-netshare.ldif
- 重新啟動 5.1 版本伺服器,然後繼續進行複寫組態和複本初始化。由於同步化其他結構元素,有些結構屬性可能在伺服器間複寫,這是複寫機制的正常行為。
- 您可能必須更新依賴舊版本結構的任何應用程式。新的 11rfc2307.ldif 檔案做了下列修改:
- automount 和 automountInformation 屬性已被移除。
- ipHost 物件類別允許屬性的清單不再包含有 o $ ou $ owner $ seeAlso $ serialNumer。
- ieee802Device 物件類別強制屬性的清單不再包含有 cn。
- ieee802Device 物件類別允許屬性的清單不再包含有 description $ l $ o $ ou $ owner $ seeAlso $ serialNumber。
- bootableDevice 物件類別強制屬性的清單不再包含有 cn。
- bootableDevice 物件類別允許屬性的清單不再包含有 description $ l $ o $ ou $ owner $ seeAlso $ serialNumber。
- nisMap 物件類別的 OID 現在是 1.3.6.1.1.1.2.9。
使用追溯變更記錄外掛程式
當您要用Directory Server 5.2 主機複本維護 4.x 樣式的變更記錄時,便可以使用 追溯變更記錄外掛程式。對於依附於Directory Server 4.x 變更記錄格式的 Sun ONE Meta Directory 等應用程式而言,有時候這是必要的,因為它們會從變更記錄讀取資訊。
追溯變更記錄外掛程式不允許 Directory Server 5.2 成為舊 4.x 用戶複本的供應商;只支援 Directory Server 5.2 作為 4.x 供應商的用戶,如<與舊版進行複寫>所述。追溯變更記錄外掛程式的運作與複寫通訊協定無關,而且對複寫拓撲也沒有影響。在單一主機部署案例的任何伺服器上,都可以啟用追溯變更記錄外掛程式。它無法在多重主機環境中正常運作,因此不應該在此情況下啟用。
除了伺服器的 5.2 變更記錄外,還保存追溯變更記錄。追溯變更記錄儲存在 cn=changelog 這個特殊尾碼下另一個資料庫中。追溯變更記錄由單一階層的項目組成。變更記錄中的每個項目都有物件類別 changeLogEntry,而且可以包含下表所列的各項屬性。
啟用追溯變更記錄外掛程式
追溯變更記錄外掛程式的組態資訊儲存在 dse.ldif 的 cn=Retro Changelog Plugin,cn=plugins,cn=config 項目中。
若要從 Directory Server 主控台啟用追溯變更記錄外掛程式:
- 在 Directory Server 主控台最上層的 [組態] 標籤上,展開 [外掛程式] 節點,並向下捲動以選擇 [Retro Changelog Plugin]。
- 在右面板中核取 [啟用外掛程式] 核取方塊,再按一下 [儲存]。若要停用外掛程式,請清除此核取方塊。
- 啟用或停用外掛程式後,您必須重新啟動目錄伺服器。
若要從指令行啟用追溯變更記錄外掛程式:
- 使用下列指令修改追溯變更記錄外掛程式組態項目:
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn:cn=Retro Changelog Plugin,cn=plugins,cn=config
changetype:modify
replace:nsslapd-pluginenabled
nsslapd-pluginenabled:on
- 重新啟動伺服器。如需關於重新啟動伺服器的資訊,請參閱<啟動和停止 Diectory Server>。
調整追溯變更記錄
變更記錄中的項目可在指定的時間後自動移除。若要設定在一段時間後自動將項目從變更記錄中刪除,您必須在 cn=Retro Changelog Plugin, cn=plugins, cn=config 項目中設定 nsslapd-changelogmaxage 組態屬性。此屬性只能從指令行設定,例如:
ldapmodify -h host -p port -D "cn=Directory Manager" -p password
dn:cn=Retro Changelog Plugin,cn=plugins,cn=config
changetype:modify
replace:nsslapd-changelogmaxage
nsslapd-changelogmaxage:IntegerTimeunitnsslapd-changelogmaxage 屬性是單值屬性,其格式為:
nsslapd-changelogmaxage:IntegerTimeunit
其中 Integer 代表一個數字,而 TimeUnit 可為其中一個下列值:s 代表秒、m 代表分鐘、h 代表小時、d 代表日或 w 代表星期。Integer 與 Timeunit 變數之間沒有空格,例如:
nsslapd-changelogmaxage:2d
在變更記錄的下一步作業中,會調整追溯變更記錄。
存取追溯變更記錄
變更記錄支援搜尋作業。它已針對包含下列格式之篩選條件的搜尋最佳化:
(&(changeNumber>=X)(changeNumber<=Y))
一般而言,您不應該對追溯變更記錄執行加入或修改作業,但您可以刪除項目以調整變更記錄的大小;唯一需要對追溯變更記錄執行修改作業的機會是修改預設存取控制原則。
建立追溯變更記錄時,會預設套用下列存取控制原則:
- 讀取、搜尋與比較權限會授與追溯變更記錄最上層項目 cn=changelog 的所有驗證使用者 (userdn=anyone,在 userdn=all 處使用匿名存取不會遭到拒絕)。
- 除了隱含地授與目錄管理員權限外,不授與寫入與刪除存取。
您不應該將讀取存取授與匿名使用者,因為變更記錄項目內可能包含對敏感資料 (例如密碼) 的修改。如果連驗證使用者都不被允許檢視記錄內容,您可能希望進一步限制存取追溯變更記錄的內容。
若要修改套用在追溯變更記錄的預設存取控制原則,您應該修改 cn=changelog 項目的 aci 屬性。如需關於設定 aci 屬性的詳細資訊,請參閱第 6 章<管理存取控制>。
監控複寫狀態
您可以使用新的指令行工具及 Directory Server 主控台來監控複寫狀態。
指令行工具
有三個新的指令行工具可用於監控您的複寫部署:
- repldisc - 「尋找」及建構複寫部署中所有已知伺服器的表格。
- insync - 指出供應商與一或多個用戶複本之間的同步狀態。
- entrycmp - 比較兩個或多個複本內相同的項目。
這些工具位在下列目錄內:
ServerRoot/shared/bin
如需這些工具的完整指令行語法和用法範例,請參閱《Sun ONE Directory Server 參考手冊》第 1 章的<監控複寫工具>。
複寫狀態標籤
若要在 Directory Server 主控台中檢視複寫狀態摘要:
- 在 Directory Server 主控台上層的 [狀態] 標籤上,選擇 [複寫] 節點。
右面板會顯示表格,表格中包含為此伺服器設定之每個複寫協議的相關資訊。
- 如果要監控複寫狀態,請選擇 [繼續重新整理] 核取方塊。例如,您會看到複本何時完成初始化。
- 如果您要判斷主機上尚未複寫到用戶的最後一次修改,請按一下 [擱置變更數] 按鈕。系統會警告您此作業可能會耗費相當長的時間,並請您確認。判斷擱置變更數需要下載更新的用戶記錄,並將它與主機的變更記錄比較。如果記錄非常多,此作業可能會耗費很多時間與伺服器資源。
- 您可以按一下欄標頭並調整其大小,來修改表格佈局。您也可以按一下 [檢視選項] 按鈕,並且只選擇要查看的項目,來修改表格內容。下列的表 8-3 說明您可選擇表格中要為此伺服器上的每個協議顯示的複寫參數。
解決一般複寫衝突
多重主機複寫使用不嚴格的一致性複寫模式。這表示可以同時在不同伺服器上修改相同的項目。因此在兩部伺服器之間傳送更新時,便需要解決衝突的變更。解決衝突多半會自動執行,並以每部伺服器上變更相關的時間戳記為準。以最近的變更優先。
然而,有些情況必須透過手動操作,才能解決衝突的變更。若項目由無法由複寫處理自動解決的變更衝突,則該項目會包含 nsds5ReplConflict 作業屬性作為衝突標示。
請定期搜尋包含此屬性的項目,以找出發生衝突的項目。例如,您可以使用下列 ldapsearch 指令:
% ldapsearch -h host -p port -D "cn=Directory Manager" -w password \
-b "dc=example,dc=com" "(nsds5ReplConflict=*)"請注意,預設狀況下 nsds5ReplConflict 屬性會編製索引。
解決命名衝突
用相同的 DN 在不同伺服器上建立兩個項目時,複寫的衝突解決機制會自動將第二個建立的項目重新命名。每一個目錄項目都包含一個由 nsuniqueid 作業屬性所指定的唯一識別碼,當發生命名衝突時,就會將這個唯一的 ID 附加到不唯一的 DN 後面。
如果建立第二個 DN 時第一部伺服器尚未將更新複寫到第二部伺服器,就可能在兩部伺服器上建立兩個使用相同 DN 的項目。例如,如果同時在兩個主機上建立項目 uid=bjensen,ou=People,dc=example,dc=com,複寫後兩個主機上會有下列兩個項目:
- uid=bjensen,ou=People,dc=example,dc=com
- nsuniqueid=66446001-1dd211b2+uid=bjensen,dc=example,dc=com
第二個項目必須重新命名,使它具有唯一的 DN。您可以刪除衝突的項目,然後再以不相衝突的名稱加入。然而,保持項目最安全的作法是在建立時就重新命名它。重新命名程序須視命名屬性是單值或多重值屬性而定。每個程序分別說明如下。
重新命名多重值命名屬性的項目
若要重新命名具有多重值命名屬性的衝突項目:
- 用新值為命名屬性項目重新命名,並保留舊的 RDN。例如:
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn:nsuniqueid=66446001-1dd211b2+uid=bjensen,dc=example,dc=com
changetype:modrdn
newrdn:uid=NewValue
deleteoldrdn: 0
^D
- 移除命名屬性舊的 RDN 值和衝突標示屬性。例如:
重新命名單值命名屬性的項目
命名屬性為單值時,您不能只是重新命名項目為相同屬性的其他值。而是暫時:
- 用不同的命名屬性為項目重新命名,並保留舊的 RDN。例如:
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn:nsuniqueid=66446001-1dd211b2+dc=HR,dc=example,dc=com
changetype:modrdn
newrdn:o=TempName
deleteoldrdn: 0
^D
- 移除命名屬性舊的 RDN 值和衝突標示屬性。例如:
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn:o=TempName,dc=example,dc=com
changetype:modify
replace:dc
dc:uniqueValue
-
delete:nsds5ReplConflict
^D
注意 修改 RDN 的程序需要兩個步驟,因為您不能刪除唯一識別碼屬性 nsuniqueid。
- 用新的、不相衝突的值為預期的命名屬性項目重新命名。例如:
ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn:o=TempName,dc=example,dc=com
changetype:modrdn
newrdn:dc=uniqueValue
deleteoldrdn: 1
^D藉由將 deleteoldrdn 屬性的值設為 1,可刪除暫時的屬性值配對 o=TempName。如果要保留此屬性,您可以將 deleteoldrdn 屬性值設為 0。
解決遺留項目衝突
當複寫刪除的作業時,若用戶伺服器發現被刪除的項目還有子項目,則衝突解決程序會建立接合項目,以避免目錄中有遺留的項目。
同樣地,當複寫加入作業時,若用戶伺服器找不到父項目,則衝突解決程序會建立代表父項目的接合項目,使新項目不會成為遺留項目。
接合項目是包含物件類別 glue 與 extensibleObject 的暫時項目。接合項目可以使用不同的方式建立:
- 如果衝突解決程序發現有相符唯一識別碼的已刪除項目,接合項目就是恢復使用該項目,並加上 glue 物件類別及 nsds5ReplConflict 屬性。
在此情況下,您可以修改接合項目,以移除 glue 物件類別及 nsds5ReplConflict 屬性,將項目保留為正常項目,或者您可以刪除接合項目及其子項目。
- 伺服器建立只含 glue 與 extensibleObject 物件類別的最小項目。
在此情況下,您必須修改項目將它變成有意義的項目,或刪除它及其所有子項目。
解決潛在的交互操作性問題
為了讓需要屬性唯一性的這類應用程式 (如郵件伺服器) 能夠具有交互操作性,您可能必須限制存取包含 nsds5ReplConflict 屬性的項目。如果不限制存取這些項目,只需要一個屬性的應用程式將同時挑選原始項目與包含 nsds5ReplConflict 的衝突解決項目,導致作業失敗。
若要限制存取,您必須使用下列指令修改授與匿名讀取存取的預設 ACI:
ldapmodify -h hostname -D "cn=Directory Manager" -w password
dn:dc=example,dc=com
changetype:modify
delete:aci
aci:(target ="ldap:///dc=example,dc=com")
(targetattr !="userPassword"
(version 3.0;acl "Anonymous read-search access";
allow (read, search, compare)(userdn = "ldap:///anyone");)
-
add:aci
aci:(target="ldap:///dc=example,dc=com")
(targetattr!="userPassword")
(targetfilter="(!(nsds5ReplConflict=*))")(version 3.0;acl
"Anonymous read-search access";allow (read, search, compare)
(userdn="ldap:///anyone");)
^D新的 ACI 會從搜尋結果中篩選掉包含 nsds5ReplConflict 屬性的所有項目。