複寫是一套機制,讓目錄內容可利用此機制從目錄伺服器自動複製到一或多個其他的目錄伺服器。所有寫入作業都會自動鏡像到其他目錄伺服器。如需複寫概念、複寫方案及如何規劃目錄部署中的複寫之完整說明,請參閱「Sun Java System Directory Server Enterprise Edition 6.2 Deployment Planning Guide」。
一般會在複寫拓樸中,將伺服器上的某個尾碼複寫至伺服器上的其他尾碼,或以伺服器上的其他尾碼複寫伺服器上的某個尾碼。因此,複本、複寫的尾碼與複寫的伺服器等字詞會交換使用。
本章說明使用指令行設定各種複寫方案所執行的作業,其中包含下列主題:
您可以使用無限部主伺服器進行複寫部署的配置。部署中不需要包含集散中心或用戶。本章包含配置集散中心與用戶的複寫程序,不過其為可選擇的項目。
開始配置複寫之前,必須清楚瞭解貴機構中要部署複寫的方式。您必須瞭解「Sun Java System Directory Server Enterprise Edition 6.2 Reference」中所述的複寫概念。同時還須使用「Sun Java System Directory Server Enterprise Edition 6.2 Deployment Planning Guide」中所提供的設計準則,謹慎規劃未來的複寫配置。
配置與管理複寫最簡單的方式是使用目錄服務控制中心 (DSCC)。您可以使用 DSCC 自動配置複寫。您可以選擇設定複寫拓樸所需的自動化層級,例如,是否要在複寫配置期間初始化尾碼。DSCC 也會提供檢查以避免錯誤。此外,DSCC 提供複寫拓樸的圖形化檢視。
DSCC 線上說明提供使用 DSCC 設定複寫的程序。
只有在無法使用 DSCC 配置複寫時,才請使用本章所提供的指令行程序。
配置複寫的步驟摘要假設複寫的是單一尾碼。若要複寫多個尾碼,可以平行配置每部伺服器上的尾碼。亦即可以在多個尾碼上重複配置複寫的每個步驟。
本章其餘部分包含如何配置複寫的詳細指示。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
若要配置複寫拓樸,請按照本程序中概要說明的一般步驟進行。
在包含專屬用戶複本的所有伺服器上,執行下列作業:
請視需要在包含集散複寫的尾碼之所有伺服器上,執行下列作業:
為集散複寫的尾碼建立空的尾碼。
請參閱建立集散複本的尾碼。
啟用集散複寫的尾碼。
請參閱啟用集散複本。
(可選擇) 配置進階集散中心設定。
請參閱修改集散複本上的變更記錄設定。
在包含主伺服器複寫的尾碼之所有伺服器上,執行下列作業:
為主伺服器複寫的尾碼建立尾碼。
請參閱建立主伺服器複本的尾碼。
啟用主伺服器複寫的尾碼。
請參閱啟用主伺服器複本。
(可選擇) 配置進階主伺服器設定。
請參閱修改主伺服器複本上的變更記錄設定。
請確定建立複寫協議之前已啟用所有複本,如此一來,建立複寫協議之後便能立即初始化用戶複本。用戶初始化一律會是設定複寫的最後一個階段。
請確定複寫管理員配置已完成。
如果計劃使用預設管理員,請在所有伺服器上設定預設複寫管理員密碼。請參閱變更預設複寫管理員密碼。
如果計劃使用非預設複寫管理員,請在所有伺服器上定義替代複寫管理員項目。請參閱使用非預設複寫管理員。
依下列方式在所有主伺服器複本上建立複寫協議:
請參閱建立與變更複寫協議。
(可選擇) 若要使用部分複寫,請立即進行配置。
請參閱部分複寫。
(可選擇) 若要使用複寫優先權,請立即進行配置。
請參閱複寫優先權。
配置集散複本與其用戶之間的複寫協議。
請參閱建立與變更複寫協議。
若是多重主伺服器複寫,請從包含原始資料副本的相同主伺服器複本,初始化所有主伺服器。
請參閱初始化複本。
初始化集散複本與用戶複本。
請參閱初始化複本。
專屬用戶是複寫的尾碼之唯讀副本。專屬用戶會從連結做為複寫管理員的伺服器接收更新,以進行變更。用戶伺服器的配置作業包含準備空的尾碼以保留複寫的尾碼,以及啟用該尾碼上的複寫。選擇性進階配置可包含設定參照、變更清除延遲與修改特性。
下列幾節說明如何在伺服器上配置一個專屬用戶複寫的尾碼。在將包含專屬用戶複寫的尾碼之每部伺服器上,重複所有程序。
如果不存在空的尾碼,請在具有相同 DN 的用戶上建立尾碼做為預定主伺服器複本。
如需相關指示,請參閱建立尾碼。
如果尾碼存在且不是空值,其內容會在從主伺服器初始化複寫的尾碼時遺失。
建立空的尾碼之後,需要啟用用戶複寫的尾碼。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
啟用用戶複寫的尾碼。
$ dsconf enable-repl -h host -p port consumer suffix-DN |
例如:
$ dsconf enable-repl -h host1 -p 1389 consumer dc=example,dc=com |
若要為進階功能配置用戶複寫的尾碼,請立即執行。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
若要使用 SSL 進行參照,請設定安全參照。
$ dsconf set-suffix-prop -h host -p port suffix-DN referral-url:ldaps://servername:port |
例如:
$ dsconf set-suffix-prop -h host1 -p 1389 dc=example,dc=com \ referral-url:ldaps://server2:2389 |
複寫機制會自動配置用戶傳回複寫拓樸中所有已知主伺服器的參照。這些預設參照假設用戶端將在標準連線上使用簡單認證。若要讓用戶端可使用 SSL 安全連線連結至主伺服器,請增加使用安全連接埠號,同時格式為 ldaps://servername :port 的參照。請注意,如果主伺服器配置為僅能使用安全連線,URL 預設會指向安全連接埠。
如果增加多個 LDAP URL 做為參照,可以強制用戶僅傳送這些 LDAP URL 的參照,而不會傳送主伺服器複本的參照。例如,假設您要用戶端一律參照主伺服器上的安全連接埠,而不是預設連接埠。請建立這些安全連接埠的 LDAP URL 清單,並設定特性以使用這些參照。若要定義特定主伺服器或目錄伺服器代理處理所有更新,也可以使用專用參照。
若要變更用戶的複寫清除延遲,請使用此指令:
$ dsconf set-suffix-prop -h host -p port suffix-DN repl-purge-delay:time |
例如,若要將清除延遲設為 2 天,請鍵入:
$ dsconf set-suffix-prop -h host1 -p 1389 edc=example,dc=com repl-purge-delay:2d |
用戶伺服器會儲存關於複寫的尾碼內容更新之內部資訊,而清除延遲參數則會指定必須保留此資訊的時間。清除延遲會部分決定用戶與其主伺服器之間的複寫可於中斷多久後仍能正常回復。這與供應者伺服器上變更記錄的 MaxAge 參數相關。這兩個參數之間較短者會決定兩部伺服器之間的複寫可以停用或中斷但仍能正常回復之最長時間。在大多數情況下,預設值 7 天便已足夠。
集散複本會做為用戶與主伺服器,進一步分佈複寫的資料給更多的用戶。集散複本從其供應者接收複寫更新,再傳送複寫更新給其用戶。這些複本不接受修改,而會傳回參照至主伺服器。
集散伺服器的配置作業包含準備空的尾碼以保留複寫的尾碼,以及啟用該尾碼上的複寫。選擇性進階配置可包含選擇不同的複寫管理員、設定參照、設定清除延遲,以及修改變更記錄參數。
下列幾節說明如何配置一部集散伺服器。在將包含集散複寫的尾碼之每部伺服器上,重複所有程序。
如果不存在空的尾碼,請在具有相同 DN 的集散伺服器上建立尾碼做為預定主伺服器複本。
如需相關指示,請參閱建立尾碼。
如果尾碼存在且不是空值,其內容會在從主伺服器初始化複寫的尾碼時遺失。
如果有集散複本,請立即啟用。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
啟用集散複寫的尾碼。
$ dsconf enable-repl -h host -p port hub suffix-DN |
例如:
$ dsconf enable-repl -h host1 -p 1389 hub dc=example,dc=com |
您可能會想為進階集散配置修改的唯一參數,會與該變更記錄相關。集散伺服器需要變更記錄才能做為供應者。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
若要修改集散中心上的變更記錄設定,請使用下列指令之一:
$ dsconf set-server-prop -h host -p port suffix-DN repl-cl-max-age:value |
$ dsconf set-server-prop -h host -p port suffix-DN repl-cl-max-entry-count:value |
主伺服器複本包含主伺服器的資料副本,並會集中所有修改,再傳播更新給所有其他複本。主伺服器會記錄所有變更、檢查其用戶的狀態,並視需要傳送更新給用戶。在多重主伺服器複寫中,主伺服器複本也會從其他主伺服器接收更新。
主伺服器的配置作業包含定義內含主伺服器複本的尾碼、啟用主伺服器複本,以及視需要配置複本以供進階複寫使用。
下列幾節說明如何配置一部主伺服器。在將包含主伺服器複寫的尾碼之每部伺服器上,重複所有程序。
在將包含要複寫的項目之主伺服器上,選擇或建立尾碼。
如需相關指示,請參閱建立尾碼。
若要確定多重主伺服器的配置與初始化正確,請僅載入一部含資料的主伺服器。其他複寫的尾碼之任何資料將會遭覆寫。
啟用主伺服器上的複寫時,必須指定複寫 ID。複寫 ID 會用以辨別更新陳述式的所有者,以及解決多重主伺服器複寫可能發生的衝突。因此,複寫 ID 對此尾碼的所有主伺服器複本而言必須是唯一的。複寫 ID 一旦設定便不得變更。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
啟用主伺服器複寫的尾碼。
$ dsconf enable-repl -h host -p port -d ReplicaID master suffix-DN |
其中 ReplicaID 是介於 1 至 65534 之間的整數。
例如,若要建立複本 ID 為 1 的主伺服器複寫的尾碼,請使用此指令:
$ dsconf enable-repl -h host1 -p 1389 -d 1 master dc=example,dc=com |
若是進階主伺服器配置,您可能會想要修改變更記錄設定。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
若要修改主伺服器上的變更記錄設定,請使用下列指令之一:
$ dsconf set-server-prop -h host -p port suffix-DN repl-cl-max-age:value |
$ dsconf set-server-prop -h host -p port suffix-DN repl-cl-max-entry-count:value |
本節說明如何配置非預設複寫管理員,以及如何設定預設複寫管理員密碼。
複寫管理員是供應者傳送複寫更新時,將用來連結至用戶伺服器的使用者。包含接收更新之尾碼的所有伺服器,至少必須有一個複寫管理員項目。
目錄伺服器有一個預設複寫管理員項目可用於每部伺服器上使用,特別是針對簡單複寫方案:cn=replication manager,cn=replication,cn=config。複寫機制會自動以此使用者配置用戶複本,以簡化複本的部署。
如果有更複雜的複寫方案,針對每個複寫的尾碼可能需要數個具有不同密碼的複寫管理員。您可利用一或多個新的複寫管理員取代現有的預設複寫管理員。
請勿在使用複寫管理員的 DN 與密碼之伺服器上連結或執行作業。複寫管理員僅供複寫機制使用。其他任何用途均可能需要重新初始化複本。
請勿使用目錄管理員做為複寫管理員。由於 cn=admin,cn=Administrators,cn=config 項目會供其他管理作業使用,您也不得使用此使用者或管理群組中的任何其他使用者做為複寫管理員。
為各個用戶選擇複寫管理員之後,請確實記下所選擇或建立的複寫管理員 DN。稍後以此供應者的用戶建立複寫協議時,會需要此 DN 與其密碼。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
在所有用戶 (目標) 複寫的尾碼上,建立新的複寫管理員與密碼。
$ ldapmodify -a -h host -p port -D cn=admin,cn=Administrators,cn=config -w - Enter bind password: dn:"cn=new-replication-manager,cn=replication,cn=config" objectclass: top objectclass: person userpassword:password sn:new-replication-manager |
例如:
$ ldapmodify -a -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - Enter bind password: dn:"cn=ReplicationManager3,cn=replication,cn=config" objectclass: top objectclass: person userpassword:secret sn:ReplicationManager3 |
在所有用戶 (目標) 複寫的尾碼上,設定複寫管理員連結 DN。
$ dsconf set-suffix-prop -h host -p port suffix-DN \ repl-manager-bind-dn:"cn=new-replication-manager,cn=replication,cn=config" |
例如:
$ dsconf set-suffix-prop -h host1 -p 1389 dc=example,dc=com \ repl-manager-bind-dn:"cn=ReplicationManager3,cn=replication,cn=config" |
針對已在所有供應者 (來源) 複寫的尾碼上建立的所有複寫協議,設定複寫管理員連結 DN。
建立暫存檔以設定新的複寫管理員密碼。
此檔案只能讀取一次,您必須儲存密碼以供日後使用。
$ echo password > password-file |
設定複寫管理員連結 DN 與密碼,供複寫機制執行更新時使用。
$ dsconf set-repl-agmt-prop -h host -p port suffix-DN host:port \ auth-bind-dn:"cn=new-replication-manager,cn=replication,cn=config" \ auth-pwd-file:password-file |
例如:
$ dsconf set-repl-agmt-prop -h host2 -p 1389 dc=example,dc=com host1:1389 \ auth-bind-dn:"cn=ReplicationManager3,cn=replication,cn=config" \ auth-pwd-file:pwd.txt |
移除密碼暫存檔。
$ rm password-file |
建立暫存檔以設定複寫管理員密碼。
此檔案只能讀取一次,您必須儲存密碼以供日後使用。
$ echo password > password-file |
在複寫拓樸中的所有用戶 (目標) 伺服器上,設定複寫管理員連結密碼。
$ dsconf set-server-prop -h host -p port def-repl-manager-pwd-file:password-file |
例如:
$ dsconf set-server-prop -h host1 -p 1389 def-repl-manager-pwd-file:pwd.txt |
移除密碼暫存檔。
$ rm password-file |
複寫協議是供應者上的一組參數,其可配置並控制傳送更新給指定用戶的方式。複寫協議必須建立於傳送更新給其用戶之供應者複寫的尾碼上。您必須為每個要更新的用戶,在供應者上建立複寫協議。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
如果使用 DSCC 建立新的複寫協議,可以選擇從現有的複寫協議複製部分或所有的複寫協議配置設定。
為要進行複寫的各個用戶,從主伺服器建立複寫協議。
$ dsconf create-repl-agmt -h host -p port suffix-DN consumer-host:consumer-port [consumer-host:consumer-port] |
例如:
$ dsconf create-repl-agmt -h host1 -p 1389 dc=example,dc=com host2:1389 |
若要使用指令行列出現有的複寫協議,請使用 dsconf list-repl-agmts 指令。
如果在複寫執行時變更主伺服器上的連接埠號,則無須重新初始化伺服器。但是,指向舊位址 (host: old-port) 的舊複寫協議將再也無法使用。若要複寫在變更連接埠號之前如同往常繼續執行,則必須以新位址 (host:new-port) 建立新協議。
檢查複寫協議是否已正確建立。
$ dsconf show-repl-agmt-status -h host -p port suffix-DN consumer-host:consumer-port |
如果認證狀態不正確,請執行 dsconf accord-repl-agmt 指令。
請只有在使用預設複寫管理員時才使用指令 dsconf accord-repl-agmt。如果已建立新的複寫管理員,請勿使用此指令,這麼做會覆寫部分必要的設定。
dsconf accord-repl-agmt 指令可確保供應者與目標伺服器皆共用相同的複寫認證設定。
$ dsconf accord-repl-agmt -h host -p port suffix-DN consumer-host:consumer-port |
例如:
$ dsconf accord-repl-agmt -h host2 -p 1389 dc=example,dc=com host1:1389 |
本程序會變更現有複寫協議所指向的遠端複本。現有協議的尾碼 DN 與配置維持不變。
在複寫協議中變更遠端複本的主機名稱與連接埠號。
$ dsconf change-repl-dest -h host -p port suffix-DN host:port new-host:new-port |
如果此指令透過 -A protocol 選項執行,可以變更複寫所使用的認證協定。
複寫作業預設會將複寫的尾碼中整個項目複製到用戶複本。您可以使用部分複寫功能,選取要使用的尾碼以及要包含或排除的屬性。部分複寫會配置於複寫協議中,讓您可為主伺服器各用戶複寫的尾碼定義屬性集。您可以控制要分佈的資料,並更有效地使用複寫頻寬與用戶資源。
例如,若要減少複寫頻寬,可以選擇不要複寫含有 photo、jpegPhoto 與 audio 等一般說來過大的值之屬性。因此,用戶上將無法使用這些屬性。在另外一個情況下,您可能會選擇在專門執行認證的用戶伺服器上,僅複寫 uid 與 userpassword 屬性。
部分複寫無法在 Directory Server 5.2 之前的產品版本中使用。配置部分複寫協議時,主伺服器與用戶複本至少必須使用 Directory Server 5.2。
啟用或修改部分屬性集需要重新初始化用戶複本。因此,您必須在部署之前決定部分複寫需求,並在第一次初始化複寫的尾碼之前定義屬性集。
複寫小型的屬性集時,由於考慮到特定屬性上 ACI、角色與 CoS 等複雜功能的相依性,因此您必須謹慎進行。此外,不複寫 ACI、角色或 CoS 機制的限定符號或篩選中所提及的其他屬性,可能會危及資料的安全性。不複寫可能也會導致搜尋中傳回不同的屬性集。管理要排除的屬性清單比管理要包含的屬性清單要來得安全,且不容易有人為疏失。
如果複寫的屬性集不允許所有複寫的項目遵守模式,則必須關閉用戶伺服器上的模式檢查。由於複寫機制會略過用戶上的模式檢查,因此複寫不相符的項目不會導致錯誤。但是,用戶將包含這些不相符的項目,並會關閉模式檢查以向其用戶端顯示一致的狀態。
部分複寫會配置於包含集散中心與專屬用戶的主伺服器複本之複寫協議中。不支援在多重主伺服器複寫環境中配置兩個主伺服器複本之間的部分複寫。此外,如果多個主伺服器有含相同複本的複寫協議,則所有協議皆須複寫相同的屬性集。
若要配置部分複寫,必須指定尾碼、決定包含或排除該尾碼上的屬性,並接著選擇要包含或排除的屬性。如果選擇在尾碼上排除屬性,將會自動包含所有其他屬性。同理,如果選擇在尾碼上包含特定屬性,將會自動排除所有其他屬性。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
在位於來源伺服器的複寫協議上配置部分複寫。
$ dsconf set-repl-agmt-prop -h host -p port suffix-DN consumer-host:consumer-port property:value |
其中 property 是 repl-fractional-exclude-attr 或 repl-fractional-include-attr。
例如,若要配置部分協議排除 JPEG 與 TIFF 圖片在尾碼 dc=example,dc=com 上進行複寫 ,請使用此指令:
$ dsconf set-repl-agmt-prop -h host2 -p 1389 dc=example,dc=com host1:1389 repl-fractional-exclude-attr:jpegPhoto repl-fractional-exclude-attr:tiffPhoto |
若要在應排除的現有屬性清單中增加一個屬性,請使用此指令:
$ dsconf set-repl-agmt-prop -h host -p port suffix-DN consumer-host:consumer-port repl-fractional-exclude-attr+: attribute |
指定複寫優先權為可選擇的項目。您可以建立複寫規則以指定某些變更 (例如更新使用者密碼) 以高優先權進行複寫。複寫規則中指定的任何變更皆會以高優先權進行複寫,而所有其他變更則會以一般優先權進行複寫。
複寫優先權規則僅需要建立於主伺服器上。不需要為集散中心與用戶進行配置。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
若要在主伺服器上建立新的複寫優先權規則,請使用此指令:
$ dsconf create-repl-priority -h host -p port suffix-DN priority-name property:value |
您可以使用下列一或多個特性設定複寫優先權:
作業類型,op-type
連結 DN,bind-dn
基底 DN,base-dn
屬性類型,attr
priority-name 由使用者定義。
例如,若要建立複寫規則,指定以高優先權複寫使用者密碼變更,請使用此指令:
$ dsconf create-repl-priority -h host2 -p 1389 dc=example,dc=com pw-rule \ attr:userPassword |
若要顯示目前的複寫規則,請使用 dsconf list-repl-priorities -v 指令。此指令搭配 -v 選項使用時,會顯示其他與複寫優先權規則相關的資訊。
$ dsconf list-repl-priorities -h host2 -p 1389 -v |
如需更多資訊,請參閱 dsconf(1M) 線上手冊。
建立複寫協議並配置兩個複本之後,必須初始化用戶複寫的尾碼,才會開始複寫。您可以在初始化期間,實際將資料從供應者複寫的尾碼複製到用戶複寫的尾碼。
此外,部分錯誤情況或配置變更會需要重新初始化複本。例如,如果因為任何理由從備份復原單一主伺服器複寫的尾碼中之資料,則必須重新初始化其所更新的所有複本。
重新初始化時,會刪除用戶上複寫的尾碼之內容,並以主伺服器上的尾碼內容取代。如此做可確保複本會進行同步化,且複寫更新可以繼續進行。本節中所述的所有初始化方法會自動重建用戶複本的索引,使得用戶能以最佳方式回應用戶端的讀取請求。
使用多重主伺服器複寫時,如果拓樸中有其他主伺服器已更新用戶,則用戶可能無須重新初始化。
您可以使用現有的複寫協議,從遠端伺服器初始化尾碼。此初始化方法比其他方法簡單,因此請儘可能使用此方法。而僅在有大量資料使得匯入耗費太多時間時使用其他方法。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
使用 DSCC 以線上方式初始化複寫的尾碼,是初始化或重新初始化用戶的簡單方式。但是,如果初始化大量的項目,此程序可能很耗時。此時,使用指令行以離線方式初始化用戶可能比較有效率。
初始化複本。
$ dsconf init-repl-dest -h host -p port suffix-DN destination-host:destination-port [destination-host:destination-port] |
其中 destination-host:destination-port 是您從遠端伺服器初始化目標伺服器的主機與連接埠。
(可選擇) 請為各個協議檢查尾碼是否已初始化。
$ dsconf show-repl-agmt-status -h host -p port suffix-DN destination-host:destination-port |
本程序概要說明從 LDIF 檔案初始化複寫的尾碼所用之一般步驟。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
使用 DSCC 以線上方式初始化複寫的尾碼,是初始化或重新初始化用戶的簡單方式。但是,如果初始化大量的項目,此程序可能很耗時。此時,使用指令行以離線方式初始化用戶可能比較有效率。
請確定已設定複寫協議。
您必須在初始化複本之前執行此項作業。
從主伺服器複寫的尾碼匯出尾碼資料的原始副本至 LDIF 檔案。
請參閱匯出複寫的尾碼至 LDIF。
您可以在多重主伺服器複寫環境中,使用從原始主伺服器匯出的 LDIF 檔案同時初始化其他主伺服器與任何用戶。您可以在串聯複寫環境中,使用相同的檔案同時初始化集散複本及其用戶。
在所有的情況下,皆須以從配置的主伺服器複本匯出之 LDIF 檔案開始。您無法使用任意的 LDIF 檔案初始化所有複本,因為該檔案可能不包含複寫中介資料。
如果初始化部分複本,請篩選檔案而僅保留複寫的屬性,再將該檔案傳輸到所有用戶伺服器。
請參閱為部分複寫篩選 LDIF 檔案。
初始化複本。
請執行下列其中一項動作:
若要在離線的 (停止的) 伺服器上快速進行初使化,請使用 dsadm import 指令。
$ dsadm import instance-path LDIF_file suffix-DN |
若要從 LDIF 檔案以線上方式初始化複本,請使用 dsconf import 指令。
$ dsconf import -h host -p port LDIF_file suffix-DN |
使用 dsconf import 會比使用 dsadm import 還要慢,但是您無須在執行匯入作業期間停止伺服器。
如需初始化尾碼的詳細資訊與範例,請參閱初始化尾碼。如需詳細的指令用法,請參閱 dsadm(1M) 線上手冊與 dsconf(1M) 線上手冊。
(可選擇) 請為各個協議檢查尾碼是否已初始化。
$ dsconf show-repl-agmt-status -h host -p port suffix-DN destination-host:destination-port |
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
若是以離線方式匯出,請鍵入:
$ dsadm export instance-path suffix-DN LDIF_file |
若是以線上方式匯出,請鍵入:
$ dsconf export -h host -p port suffix-DN LDIF_file |
下列範例將匯出整個 dc=example,dc=com 複寫的尾碼與複寫資訊至檔案 example_replica_export.ldif:
$ dsconf export -h host2 -p 1389 dc=example,dc=com \ /local/ds/ldif/example_export_replica.ldif |
如需更多資訊,請參閱備份至 LDIF、dsadm(1M) 線上手冊與 dsconf(1M) 線上手冊。
使用 DSCC 時,不會感覺到正在初始化配置有部分複寫的複本。初始化期間僅會將選取的屬性傳送至用戶。
如果已配置部分複寫,應剔除所有未使用的屬性,再將匯出的 LDIF 檔案複製到用戶伺服器。目錄伺服器為此用途提供有 fildif 工具。此工具會篩選指定的 LDIF 檔案,僅保留複寫協議中定義之屬性集所允許的屬性。
此工具會讀取伺服器的配置,以決定屬性集定義。若要讀取配置檔案,必須以超級使用者身份或以擁有程序與檔案 (由 nsslapd-localuser 屬性所指定) 的使用者身份執行 fildif 工具。例如,下列指令會篩選上一範例內 dc=example,dc=com 尾碼所匯出的檔案:
$ fildif -i /local/ds1/ldif/example_master.ldif \ -o /local/ds1/ldif/filtered.ldif -b "cn=host2.example.com:1389, \ cn=replica,cn=\\"dc=example,dc=com\\",cn=mapping tree,cn=config" -p /local/ds1 |
如需瞭解 fildif 指令的位置,請參閱指令位置。
-i 與 -o 選項分別是輸入與輸出檔案。-b 選項是定義部分複寫的複寫協議之 DN。您可以使用此指令尋找此 DN:
$ ldapsearch -h host -p port -D cn=admin,cn=Administrators,cn=config -w - \ -b "cn=config" "(&(objectclass=nsds5replicationagreement) (nsDS5ReplicaPort=replica-port) \ (nsDS5ReplicaHost=replica-host))" dn |
例如:
$ ldapsearch -h host2 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - \ -b "cn=config" "(&(objectclass=nsds5replicationagreement) \ (nsDS5ReplicaPort=2090)(nsDS5ReplicaHost=host2))" dn Enter bind password: version: 1 dn: cn=host2:1389,cn=replica,cn=dc\=example\,dc\=com,cn=mapping tree,cn=config |
如需 fildif 工具完整的指令行語法,請參閱 fildif(1) 線上手冊。
您接著可以使用 fildif 產生的 filtered.ldif 檔案,初始化此複寫協議中的用戶。如從 LDIF 檔案匯入資料中所述,傳輸檔案至用戶伺服器並匯入檔案。
二進位副本可讓您使用某部伺服器的二進位備份檔案,復原相同的目錄內容到另一部伺服器上,以複製整部伺服器。您可以使用二進位副本初始化,或從主伺服器或集散伺服器的二進位副本重新初始化任何伺服器,或從其他用戶伺服器的二進位副本重新初始化用戶。
此進階程序會與目錄伺服器的資料庫檔案互動,且應僅由有經驗的管理員使用。
如果複本有大型資料庫檔案,例如包含百萬條項目的複本,在此功能上設定某些限制有助執行與節省時間。
由於二進位副本會將資料庫檔案從一部機器移動到另一部,該機制會遵守下列嚴格限制:
兩部機器必須執行相同的作業系統,包含所有服務軟體或修補程式。
兩部機器必須共用相同的處理器架構。例如,您可以在兩部 UltraSPARC® T1 處理器之間執行二進位副本,但不得在 UltraSPARC T1 與 AMD Opteron 處理器之間執行二進位副本。
兩部機器必須是大尾數法或小尾數法。
兩部機器必須以相同方式對映記憶體。例如,您可以在兩部 64 位元系統的伺服器實例之間執行二進位副本,但不得在 32 位元系統的伺服器實例與 64 位元系統的伺服器實例之間執行二進位副本。
兩部機器必須安裝相同版本的目錄伺服器,包含二進位格式 (32 位元或 64 位元)、服務軟體與修補程式層級。
兩部伺服器必須有分到相同尾碼的相同目錄樹狀結構。所有尾碼的資料庫檔案必須同時複製。無法複製個別尾碼。
兩部伺服器上必須為各尾碼配置相同的索引,包含 VLV (虛擬清單檢視) 索引。這些尾碼的資料庫必須有相同的名稱。
各伺服器必須有配置為複本的相同尾碼。
如果配置部分複寫,則必須在所有伺服器上進行相同的配置。
兩部伺服器皆不得使用屬性加密。
如果啟用屬性值唯一性外掛程式,必須在兩部伺服器上有相同的外掛程式配置,且必須如下列程序所述在新的副本上重新配置外掛程式。
下列程序說明執行二進位副本的替代方式:不需要停止伺服器的二進位副本,以及使用最低磁碟空間量的二進位副本。
本節說明如何建立初始化伺服器的二進位副本,以及如何建立使用最低磁碟空間的二進位副本。
本程序可用以執行二進位副本,以初始化複寫的伺服器,因為其使用標準備份功能建立伺服器資料庫檔案的副本。執行標準備份可確保所有資料庫檔案皆處於一致的狀態,而不需要停止伺服器。
本程序有幾點限制。備份與復原作業會在相同機器上建立資料庫檔案的副本,因此會加倍各機器上這些檔案所需的磁碟空間量。此外,如果目錄包含十億位元組的資料,這些檔案上的實際複製作業可能需要相當長的時間。
針對此程序的某些部分,您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。此程序的其他部分只能使用指令行完成。
為新複寫的尾碼在目標機器上安裝目錄伺服器,視需要建立新的伺服器實例,並根據使用二進位副本的複寫限制配置伺服器。
在包含此複寫的尾碼之複寫拓樸中建立所有複寫協議。
在此複本中包含來自供應者的協議。如果此複本不是專屬用戶,請在其用戶中包含來自此複本的協議。請參閱建立與變更複寫協議。
選取完整配置與想要初始化的相同類型 (主伺服器、集散中心或用戶) 之初始化複本,並根據二進位備份在複本上執行標準備份。
例如,使用 ftp 指令從備份目錄複製或傳輸檔案到目標機器上的目錄。
如果已在多重主伺服器複寫方案中初始化新主伺服器,請遵循復原多重主伺服器方案中的主伺服器中的程序。
本程序不會建立資料庫檔案的備份副本,因此會使用較少的磁碟空間與較少的時間。但是,您需要停止正在複製到排序中的伺服器,以確保資料庫檔案的狀態一致。
本程序不得用以重新初始化已在多重主伺服器複寫方案中使用的主伺服器,僅能用以重新初始化用戶伺服器或初始化新的主伺服器。若要重新初始化現有的主伺服器複本,請使用線上初始化,匯入 LDIF 檔案,或遵循建立初始化伺服器的二進位副本中的程序。
針對此程序的某些部分,您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。此程序的其他部分只能使用指令行完成。
為新複寫的尾碼在目標機器上安裝目錄伺服器,視需要建立新的伺服器實例,並根據使用二進位副本的複寫限制配置伺服器。
在包含此複本的複寫拓樸中建立所有複寫協議。
在此複本中包含來自供應者的協議。如果此複本不是專屬用戶,請在其用戶中包含來自此複本的協議。請參閱建立與變更複寫協議。
如啟動、停止與重新啟動目錄伺服器實例中所述,停止要初始化或重新初始化的目標伺服器。
選取完整配置與想要初始化的相同類型 (主伺服器、集散中心或用戶) 初始化的複本,同時停止此伺服器。
如果複製的是多重主伺服器配置中的主伺服器複本,請確保已完整更新所有其他主伺服器最近的變更,再停止伺服器。
從目標伺服器移除所有資料庫檔案,包含作業事件記錄、變更記錄與區域檔案 (__db.xxx 檔案)。
除非已遷移檔案,否則資料庫檔案與作業事件記錄會位於 instance-path/db 目錄中。
例如,使用 ftp 指令從來源複本機器複製或傳輸所有資料庫檔案 (包含作業事件記錄與變更記錄) 到目標機器。
除非已遷移檔案,否則資料庫檔案與作業事件記錄會位於 instance-path/db 目錄中。
如果初始化的是主伺服器或集散複本,也須複製變更記錄中的所有檔案,變更記錄預設會位於 instance-path/changelog 中。
重新啟動來源與目標伺服器。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
如果也有多重主伺服器複寫,請確保其中一部主伺服器有要複寫的完整資料集,再使用此主伺服器初始化其他主伺服器的複本。
從第一層集散複本的主伺服器複本初始化複本。
如果有多層集散中心,請從之前初始化的集散層級初始化每個層級。
從最後一層集散複本初始化專屬用戶上的複本。
索引不會從一部伺服器實例自動複寫到另一部伺服器實例。若要為所有保留複寫的尾碼之伺服器實例編製其屬性的索引,請執行下列動作之一。
以 DSCC 中伺服器群組的方式,管理保留複寫的尾碼之所有伺服器實例。將索引增加至群組中一部伺服器,再使用「複製伺服器配置」動作將索引設定複製到群組中的其他伺服器。
如需有關 DSCC 的更多資訊,請參閱目錄服務控制中心介面。
如第 12 章, 目錄伺服器編製索引中所述,使用 dsconf 指令管理每部伺服器實例上的索引。
如使用二進位副本初始化複寫的尾碼中所述,使用二進位副本初始化尾碼。
如果您的目錄已有大量項目,而還想再增加大量項目,請勿使用 ldapmodify -a,這麼做會很耗時。請改搭配在複寫的拓樸中增加項目之選項,使用 dsconf import 指令遞增新項目。當您匯入項目時,會產生包含增加項目與複寫中介資料的 LDIF 檔案。您可以接著匯入此產生的 LDIF 檔案至其他複本。產生的 LDIF 檔案可確保在您增加資料的複本之間持續同步化複寫。
本程序會產生大型 LDIF 檔案。在執行第一個 dsconf import 指令之前,請確定有足夠的磁碟空間可供產生的 LDIF 檔案使用。
無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。
您可以使用本程序以分次傳遞方式初始化有大量項目的伺服器。但是,如果其中一個匯入失敗,便會遺失整個資料庫。請務必於每次匯入之前備份資料。
匯入項目到任何主伺服器複本。
$ dsconf import -h host -p port -K generated-LDIF-file suffix-DN |
-K 選項可確保不會移除現有的資料,也會產生包含複寫程序所需的新項目與資訊之檔案 generated-LDIF-file。
在所有其他複本中,匯入上一個步驟所產生的檔案。
$ dsconf import -h host -p port \ -K -f incremental-output=no generated-LDIF-file suffix-DN |
選項 -f incremental-output=no 會指定不會產生其他 LDIF 檔案。本程序僅需要一個產生的 LDIF 檔案。
如果您搭配複寫使用參照完整性外掛程式,您必須在所有主伺服器上啟用外掛程式。您不需要在集散伺服器或用戶伺服器上啟用外掛程式。
必須在所有包含主伺服器複本的伺服器上啟用外掛程式。
必須在每部主伺服器上以相同配置啟用外掛程式。
不需要在僅包含集散複本或用戶複本的伺服器上啟用外掛程式。
如需有關配置參照完整性外掛程式的資訊,請參閱配置參照完整性外掛程式。
您可以配置複寫中所包含的目錄伺服器,以經由 SSL 連線執行所有複寫作業。
本程序顯示在複寫拓樸中設定兩部主伺服器的複寫之指令範例。
此範例顯示使用自行簽署的憑證之簡單複寫配置。在生產環境中設定經由 SSL 的複寫時,如果改用憑證授權機構信任的憑證會更安全。
如果供應者伺服器憑證為僅用於 SSL 伺服器的憑證,而無法在 SSL 訊號交換期間做為用戶端,則經由 SSL 的複寫會失敗。
經由 SSL 保護複寫時,複寫管理員的認證仍會使用簡單連結與密碼完成。您可以使用以用戶端為基礎的認證來完整保護複寫,但是這麼做需要更複雜的設定。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
建立並啟動新的伺服器。
$ dsadm create -p 1389 -P 1636 /local/ds1 $ dsadm create -p 2389 -P 2636 /local/ds2 $ dsadm start /local/ds1 $ dsadm start /local/ds2 |
在所有伺服器上建立空的尾碼。
$ dsconf create-suffix -e -i -p 1389 dc=example,dc=com $ dsconf create-suffix -e -i -p 2389 dc=example,dc=com |
在所有伺服器上設定多重主伺服器密碼檔案。
$ dsconf set-server-prop -e -i -h example1.server -p 1389 \ def-repl-manager-pwd-file:/local/ds1/replmanrpwd1.txt $ dsconf set-server-prop -e -i -h example2.server -p 2389 \ def-repl-manager-pwd-file:/local/ds1/replmanrpwd2.txt |
在所有伺服器上啟用複寫。
$ dsconf enable-repl -h example1.server -p 1389 -e -i -d 1 master dc=example,dc=com $ dsconf enable-repl -h example2.server -p 2389 -e -i -d 2 master dc=example,dc=com |
在所有伺服器上檢視現有的預設憑證。
$ dsadm show-cert -F der -o certfile1 /local/ds1 defaultCert $ dsadm show-cert -F der -o certfile2 /local/ds2 defaultCert |
從所有其他伺服器將 CA 信任的憑證增加至所有伺服器上。
$ dsadm add-cert --ca /local/ds1 "ds2 Repl Manager Cert" certfile2 $ dsadm add-cert --ca /local/ds2 "ds1 Repl Manager Cert" certfile1 |
在所有主伺服器與集散 (來源) 伺服器上,建立所有用戶 (目標) 伺服器的複寫協議。
請注意,複寫協議使用 LDAP 安全連接埠。
$ dsconf create-repl-agmt -h example1.server -p 1389 -e -i \ --auth-protocol "ssl-simple" dc=example,dc=com example2.server:2636 $ dsconf create-repl-agmt -h example2.server -p 2389 -e -i \ --auth-protocol "ssl-simple" dc=example,dc=com example1.server:1636 |
請針對所有複寫協議,在複寫協議中將認證密碼檔案配置為用戶 (目標) 伺服器的複寫管理員密碼檔案。
$ dsconf set-repl-agmt-prop -h example1.server -p 1389 -e -i \ dc=example,dc=com example2.server:2636 auth-pwd-file:/local/ds1/replmanrpwd2.txt $ dsconf set-repl-agmt-prop -h example2.server -p 2389 -e -i \ dc=example,dc=com example1.server:1636 auth-pwd-file:/local/ds1/replmanrpwd1.txt |
如果選擇該選項,在初始化尾碼之後,供應者會將所有複寫更新訊息經由 SSL 傳送給用戶,並將使用憑證。用戶初始化如果使用為 SSL 配置的協議透過 DSCC 執行,也將使用安全連線。
請在所有伺服器上重新啟動伺服器,以使配置變更生效。
$ dsadm restart /local/ds1 $ dsadm restart /local/ds2 |
在其中一部主伺服器上初始化尾碼。
$ dsconf import -h example1.server -p 1389 -e -i /tmp/Example.ldif dc=example,dc=com |
在尚未初始化的所有伺服器上,使用複寫協議初始化伺服器。
$ dsconf init-repl-dest -e -i -h example1.server -p 1389 \ dc=example,dc=com example1.server:2636 |
目錄伺服器可讓您執行所有複寫格式,包含透過廣域網路 (WAN) 連線的機器之間的多重主節點複寫。此複寫可讓供應者伺服器初始化與更新用戶時,使用較高延遲與較低頻寬的最佳網路頻寬。
部署或疑難排解經由 WAN 複寫的複寫拓樸時,必須檢查網路速度、延遲與資料封包遺失。這幾方面任何一個網路問題都可能會導致複寫延遲。
此外,複寫資料傳輸率在頻寬方面一律會比可用實際媒體允許的速率低。如果複本之間的更新磁碟區無法實際符合可用的頻寬,調校將無法避免複本在沉重的更新負載下有所差異。複寫延遲與更新效能受到許多因素的影響,包含但不限於:修改率、項目大小、伺服器硬體、錯誤率、平均延遲與平均頻寬。
如果您對貴環境中的複寫有任何疑問,請連絡 Sun 服務提供者。
複寫機制的內部參數預設會針對 WAN 進行最佳化。但是,如果複寫因為上述因素過慢,您可能需要憑經驗調整視窗大小與群組大小參數。您也能排程複寫避開網路尖峰時段,因而改善整體網路使用率。最後,目錄伺服器支援壓縮複寫資料以最佳情況使用頻寬。
視窗與群組網路參數可決定複寫機制如何將項目群組化,以用更有效率的方式將其在網路上進行傳送。這些參數會影響供應者與用戶如何交換複寫更新訊息與回應。這些參數可配置於每個複寫協議中,讓您可以根據各用戶的特定網路條件自訂複寫效能。
監視您所做的任何修改效果,並據以調整參數。如需相關指示,請參閱取得複寫狀態。您無須中斷複寫以修改視窗大小與群組大小參數。
視窗大小 (預設值 10) 表示不需要用戶立即回應即可傳送的最大更新訊息數目。
快速連續傳送多則訊息,會比在每則訊息之後等待回應來得有效率。您可以使用適當的視窗大小,降低複本等待複寫更新或回應抵達的時間。
如果用戶複本比供應者慢,請將視窗大小增加到比預設值還要高的值,例如 100,並在進一步調整之前再次檢查複寫效能。當複寫更新率很高而使得更新之間的時間縮短時,即使是區域網路 (LAN) 連線的複本也會從較高的視窗大小獲益。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
修改視窗大小。
$ dsconf set-repl-agmt-prop -h host -p port suffix-DN consumer-host:consumer-port transport-window-size:value |
例如:
$ dsconf set-repl-agmt-prop -h host2 -p 1389 dc=example,dc=com host1:1389 \ transport-window-size:20 |
群組大小 (預設值 1) 表示可以隨附在單一更新訊息中的最大資料修改數目。如果網路連線阻礙了複寫的進行,請將群組大小增加為比預設值還要高的值,例如 10,再重新檢查複寫效能。
增加群組大小時,請確定以下為真:
視窗大小會設為比群組大小還要大。
視窗大小除以群組大小會遠大於用戶上 cn=config 下的 nsslapd-maxThreadsPerConn 值 (一般為兩倍)。
群組大小設為大於 1 時,供應者不會等待填滿一個群組後,再傳送更新給用戶。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
修改群組大小。
$ dsconf set-repl-agmt-prop -h host -p port suffix-DN \ consumer-host:consumer-port transport-group-size:value |
例如:
$ dsconf set-repl-agmt-prop -h host2 -p 1389 dc=example,dc=com host1:1389 \ transport-group-size:10 |
如果複本之間立即同步化不是很重要,您可以在網路使用率低的期間排程複寫。資料複寫的完成速度應於網路使用率高時快得多。
您可以排程複寫在一天當中的某個時間開始與結束,以每天或每週為基準。您可以透過用戶各自的複寫協議,獨立為每個用戶執行此項作業。新排程會立即生效,而導致對應用戶的下一個資料複寫延遲到排程允許的第一個複寫完成。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
修改複寫排程。
$ dsconf set-repl-agmt-prop -h host -p port suffix-DN \ host:port repl-schedule:value |
例如,若要設定複寫在每晚 2:00 與 4:00 之間執行,請鍵入:
$ dsconf set-repl-agmt-prop -h host2 -p 1389 dc=example,dc=com host1:1389 \ repl-schedule:"0200-0400 0123456" |
其中 0123456 表示一週內的各天,0 表示星期日,1 表示星期一,依此類推。
若要降低複寫使用的頻寬,可以配置複寫在更新用戶時壓縮要傳送的資料。複寫機制使用 Zlib 壓縮程式庫。供應者與用戶必須執行於 Solaris 或 Linux 平台上,才能啟用壓縮。
您應該憑經驗測試與選取壓縮層級,以在 WAN 環境中使用預期複寫時達到最佳結果。由於壓縮與解壓縮運算會使複寫變慢,因此請勿在具有廣域網路頻寬的地方設定 LAN 中的此參數。
無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。
在主伺服器的複寫協議項目上配置複寫壓縮。
$ dsconf set-repl-agmt-prop -h host -p port suffix-DN \ consumer-host:consumer-port transport-compression:level |
其中 level 可以是 high、medium、low 或 none。
例如,若要在傳送複寫更新給 host1:1389 上的用戶時使用最快速的壓縮,請鍵入:
$ dsconf set-repl-agmt-prop -h host2 -p 1389 dc=example,dc=com host1:1389 \ transport-compression:high |
如需有關設定壓縮層級的更多資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.2 Reference」。
本節說明管理現有複寫拓樸的以下幾方面:
您可以編輯複寫協議,以變更用以連結至用戶伺服器的複寫管理員身份識別。若要避免複寫中斷,請在用戶上定義新的複寫管理員項目或憑證項目,再修改複寫協議。但是,如果複寫因為連結失敗而中斷,複寫機制將在複寫回復設定的限制內,於更正錯誤時自動傳送所有必要的更新。如需相關程序,請參閱使用非預設複寫管理員。
您可以停用、啟用或刪除複寫協議。
停用複寫協議時,主伺服器會停止傳送更新給指定的用戶。複寫到該伺服器的動作會停止,但是會保留協議中所有的設定。您可能會在稍後重新啟用協議而繼續複寫。如需有關中斷之後繼續複寫機制的資訊,請參閱啟用複寫協議。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
停用複寫協議。
$ dsconf disable-repl-agmt -h host -p port suffix-DN consumer-host:consumer-port |
例如:
$ dsconf disable-repl-agmt -h host2 -p 1389 dc=example,dc=com host1:1389 |
啟用複寫協議會繼續指定用戶的複寫。但是,如果複寫中斷的時間比複寫回復設定所允許的時間長,且其他供應者尚未更新用戶,就必須重新初始化用戶。複寫回復設定的大小為此供應者變更記錄的大小上限以及用戶清除延遲之最長存在期限 (請參閱執行進階用戶配置)。
當中斷時間很短且複寫可以回復時,主伺服器將會在重新啟用協議時自動更新用戶。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
啟用複寫協議。
$ dsconf -h host -p port enable-repl-agmt suffix-DN consumer-host:consumer-port |
例如:
$ dsconf -h host2 -p 1389 enable-repl-agmt dc=example,dc=com host1:1389 |
刪除複寫協議時會停止對應用戶的複寫,並會移除關於協議的所有配置資訊。若要在稍後繼續複寫,請改以停用複寫協議。中所述停用協議。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
刪除複寫協議。
$ dsconf delete-repl-agmt -h host -p port suffix-DN consumer-host:consumer-port |
例如:
$ dsconf delete-repl-agmt -h host2 -p 1389 dc=example,dc=com host1:1389 |
升級或降級複本會變更其在複寫拓樸中的角色。專屬用戶可升級為集散中心,而集散中心可升級為主伺服器。主伺服器可降級為集散中心,而集散中心也可降級為專屬用戶。但是,主伺服器無法直接降級為用戶,正如用戶無法直接升級為主伺服器。
多重主伺服器複寫機制內所允許的升級與降級使得拓樸非常具有彈性。之前由用戶複本提供服務的站點可能會增大,而需要集散中心與多個複本以處理負載。如果負載包含許多複本內容修改,集散中心會變成主伺服器以允許更快速的本機變更,而能接著複寫至其他站點的其他主伺服器。
升級或降級複本時,請注意下列事項:
如果您將用戶升級,它會變成集散中心。如果您將集散中心升級,它會變成主伺服器。您無法將伺服器直接從用戶升級為主伺服器。您必須先將用戶升級為集散中心,然後再將集散中心升級為主伺服器。反之亦然,當您將主伺服器降級為用戶時,必須先將主伺服器降級為集散中心,然後才能從集散中心降級為用戶。
將主伺服器降級為集散中心時,複本會變成唯讀且會配置成傳送參照至其他主伺服器。新的集散中心會保留所有用戶,不論是集散中心或專屬用戶。
將單一主伺服器降級為集散中心會建立不含主伺服器複本的拓樸。假設您將定義新的主伺服器,目錄伺服器可讓您執行此項作業。但是,最好增加新主伺服器做為多重主伺服器並初始化該主伺服器,再降級其他主伺服器。
將集散中心降級為用戶之前,必須停用或刪除出入集散中心的所有複寫協議。若未這麼做,降級作業將失敗並出現錯誤:LDAP_OPERATIONS_ERROR “Unable to demote a hub to a read-only replica if some agreements are enabled (如果啟用某些協議,便無法將集散中心降級為唯讀的複本)”。
如果其他集散中心或主伺服器尚未更新集散中心的用戶,之後將無法更新。您應該在其他集散中心或主伺服器上建立新的協議,以更新這些用戶。
將用戶升級為集散中心時,會啟用其變更記錄,且可利用用戶定義新的協議。
將集散中心升級為主伺服器時,複本會接受修改請求,且您可利用其他主伺服器、集散中心或專屬用戶定義新的協議。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
使用下列其中一個指令升級或降級複本:
$ dsconf promote-repl -h host -p port role suffix-DN |
$ dsconf demote-repl -h host -p port role suffix-DN |
其中 role 是 master、hub 或 consumer。
停用複寫的尾碼會從複寫拓樸中移除該尾碼。若尾碼角色為主伺服器、集散中心或用戶,尾碼將再也無法更新或傳送更新。停用供應者伺服器上的尾碼會刪除所有複寫協議,且如果再次啟用複本,將必須重新建立複寫協議。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
停用複寫的尾碼。
$ dsconf disable-repl -h host -p port suffix-DN |
例如:
$ dsconf disable-repl -h host2 -p 1389 dc=example,dc=com |
在停止複寫中所包含的目錄伺服器以進行定期維護之後,必須確保當伺服器恢復連線時,能立即透過複寫取得更新。若是多重主伺服器環境中的主伺服器,必須有多重主伺服器集中的其他主伺服器更新目錄資訊。在其他情況下,集散伺服器或專屬用戶伺服器離線進行維護之後,當伺服器再次連線時,必須由主伺服器加以更新。
本節說明複寫重試演算法,並說明如何不等待下次重試便強制執行複寫更新。
本節所述的程序僅能在已設定複寫且已初始化用戶時使用。
當來源複本複寫至目標失敗時,會定期依遞增時間間隔重試。重試間隔會視錯誤類型而定。
請注意,如果所配置的複寫協議一律會使來源複本與目標複本保持同步化,光是立即更新離線超過五分鐘的複本都會不足。
如果停止複寫,您可以強制執行目標尾碼的複寫更新。
無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。
在來源伺服器上重新啟動目標伺服器的複寫更新。
$ dsconf update-repl-dest-now -h host -p port suffix-DN destination-host:destination-port |
例如:
$ dsconf update-repl-dest-now -h host2 -p 1389 dc=example,dc=com host1:1389 |
在某些情況中,可能需要將主伺服器複本移至不同的機器。若不需要使用相同的主機名稱與連接埠號碼,請使用 dsconf change-repl-dest 變更遠端複本的主機名稱與連接埠號碼。如需更多資訊,請參閱變更複寫協議的目標。
若需要保留相同的主機名稱與連接埠號碼,您必須從現有的拓樸中移除主伺服器,再將主伺服器重新加入拓樸。
由於 DSCC 會處理所有受影響的複寫協議,因此使用 DSCC 比較容易執行這些作業。但是,如果使用 DSCC,您將無法指定主伺服器在拓樸中原本就有的相同複本 ID。若要使用相同的複本 ID,您必須使用如下的指令行來執行這些作業。
請確定已複寫所有來自主伺服器的變更。
如果可以的話,請使用二進位副本備份主伺服器,以避免遺失任何變更。
將主伺服器複本降級為集線器複本。
請參閱升級或降級複本。
等候集線器啟動至其他伺服器的複寫。
當集線器開啟至拓樸中其他伺服器的複寫階段作業時,RUV 中會保留該集線器,但參照已不再使用。
停止集線器。
從拓樸中移除集線器。
請參閱停用複寫的尾碼。
使用相同複本 ID 增加主伺服器複本。
請參閱啟用主伺服器複本上的複寫。
從該主伺服器重建至拓樸中其他複本的複寫協議。
初始化新的主伺服器。
本節提供有關如何使用 6.2 之前的目錄伺服器版本配置複寫之資訊。
Directory Server 5.1、5.2 與 6.2 在複寫配置方面相容,但下列幾點例外:
Directory Server 6.2 之前的版本不支援複寫優先權。如果在 6.2 主伺服器複本上配置複寫優先權,複寫優先權會傳輸到執行 Directory Server 6.2 的用戶,而不會傳輸到執行目錄伺服器之前版本的任何用戶。
包含 Directory Server 5.1 或 5.2 主伺服器的複寫拓樸上不支援具有無限部主伺服器。雖然 Directory Server 6.2 支援複寫拓樸中有無限部主伺服器,但如果複寫拓樸包含任何 Directory Server 5.2 主伺服器,此數目會限制為四。Directory Server 5.1 不支援多重主伺服器複寫。
LDAP 用戶端使用回溯變更記錄確定對目錄伺服器資料所做的變更歷程記錄。回溯變更記錄儲存在與目錄伺服器變更記錄不同的資料庫中,位於尾碼 cn=changelog 下。
回溯變更記錄可以在複寫拓樸中的獨立伺服器或每部伺服器上啟用。在一部伺服器上啟用回溯變更記錄時,預設會記錄該伺服器上所有尾碼的更新。回溯變更記錄可以配置為僅記錄指定尾碼的更新。
如需有關在複寫的拓樸中使用回溯變更記錄的資訊,以及有關使用回溯變更記錄的限制,請參閱「Sun Java System Directory Server Enterprise Edition 6.2 Reference」中的「Replication and the Retro Change Log Plug-In」。
如需有關回溯變更記錄中某項目的屬性之資訊,請參閱 changeLogEntry(5dsoc) 線上手冊。
如需修改回溯變更記錄的更多資訊,請參閱 dsconf(1M) 線上手冊。
本節說明可以使用回溯變更記錄的各種方式。
若要使用回溯變更記錄,必須啟用記錄。
無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。
修改回溯變更記錄配置項目:
$ dsconf set-server-prop -h host -p port retro-cl-enabled:on |
重新啟動伺服器。
如需相關資訊,請參閱啟動、停止與重新啟動目錄伺服器實例。
在一部伺服器上啟用回溯變更記錄時,預設會記錄該伺服器上所有尾碼的更新。本程序說明如何配置回溯變更記錄僅記錄指定尾碼的更新。
無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。
修改回溯變更記錄配置項目:
$ dsconf set-server-prop -h host -p port retro-cl-suffix-dn:suffix-DN |
例如,若要僅記錄在 cn=Contractors,dc=example,dc=com 尾碼與 ou=People,dc=example,dc=com 尾碼上的變更,請使用此指令:
$ dsconf set-server-prop -h host2 -p 1389 \ retro-cl-suffix-dn:"cn=Contractors,dc=example,dc=com" \ retro-cl-suffix-dn:"ou=People,dc=example,dc=com" |
若要將尾碼增加至現有的指定尾碼清單中,請使用此指令:
$ dsconf set-server-prop -h host -p port retro-cl-suffix-dn+:suffix-DN |
重新啟動伺服器。
如需相關資訊,請參閱啟動、停止與重新啟動目錄伺服器實例。
本程序說明如何配置回溯變更記錄,以在刪除項目時記錄該項目的指定屬性。
無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。
指定必須記錄的屬性:
$ dsconf set-server-prop -h host -p port retro-cl-deleted-entry-attr: \ attribute1 attribute2 |
例如,若要將回溯變更記錄設為記錄刪除項目的 UID 屬性,請使用此指令:
$ dsconf set-server-prop -h host -p port retro-cl-deleted-entry-attr:uid |
若要將屬性增加至現有的指定屬性清單中,請使用此指令:
$ dsconf set-server-prop -h host -p port retro-cl-deleted-entry-attr+:attribute |
重新啟動伺服器。
如需相關資訊,請參閱啟動、停止與重新啟動目錄伺服器實例。
回溯變更記錄中的項目在指定的一段時間過後,會自動移除。若要配置項目經過多久的時間後會自動刪除,請務必啟用回溯變更記錄,再設定 cn=Retro Changelog Plugin、cn=plugins 與 cn=config 項目中的 nsslapd-changelogmaxage 配置屬性。
無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。
檢查是否已啟用回溯變更記錄。
$ dsconf get-server-prop -h host -p port retro-cl-enabled |
若未啟用回溯變更記錄,請啟用記錄。
$ dsconf set-server-prop -h host -p port retro-cl-enabled:on |
為記錄的變更設定最長存在期限。
$ dsconf set-server-prop -h host -p port retro-cl-max-age:duration |
其中 duration 可以是undefined (無存在期限) 或下列其中之一:
s 表示秒
m 表示分鐘
h 表示小時
d 表示天
w 表示週
例如,若要將回溯變更記錄最長存在期限設為兩天,請鍵入:
$ dsconf set-server-prop -h host 2 -p 1389 retro-cl-max-age:2d |
下次在變更記錄上進行作業時會修剪回溯變更記錄。
回溯變更記錄支援搜尋作業。該記錄適用於包含此格式的篩選器之搜尋:
(&(changeNumber>=X)(changeNumber<=Y)) |
根據一般規則,請勿於回溯變更記錄項目上執行增加或修改作業。您可以刪除項目以修剪記錄大小。修改預設存取控制策略是唯一需要在回溯變更記錄上執行的修改作業。
所有認證的使用者 (userdn=anyone,以與 userdn=all 的匿名存取有所區分) 皆會被授予回溯變更記錄最上層項目 cn=changelog 之讀取、搜尋與比較權限。
除了以隱含方式授予目錄管理員之外,不會授予寫入與刪除存取權。
請勿授予匿名使用者讀取權,因為回溯變更記錄項目可能包含密碼等機密資訊的修改。如果不希望認證的使用者能檢視回溯變更記錄內容,可能會想要進一步限制該內容的存取權。
若要修改套用到回溯變更記錄的預設存取控制策略,請修改 cn=changelog 項目的 aci 屬性。請參閱第 6 章, 目錄伺服器存取控制。
您可以使用 [尾碼] 標籤以圖形化方式檢視複寫,包含複寫協議與複寫延遲。如需更多資訊,請參閱 DSCC 線上說明。
此外,您可以使用 DSCC 檢視複寫拓樸,如下圖所示。
如果無法使用 DSCC,請使用指令行工具取得複寫部署的相關資訊。
線上手冊提供完整的指令行語法與這些工具的使用範例。
repldisc -「探索」與建構包含複寫部署中所有已知伺服器的表格。請參閱 repldisc(1) 線上手冊。
insync - 表示供應者與一或多個用戶複本之間的同步化狀態。請參閱 insync(1) 線上手冊。
entrycmp - 比較兩個以上複本中的相同項目。請參閱 entrycmp(1) 線上手冊。
若要尋找這些指令所在的目錄,請參閱指令位置。
多重主伺服器複寫使用約略一致的複寫模式。這表示相同的項目可能會在不同的伺服器上同時修改。當更新在兩部伺服器之間互傳時,必須解決所有衝突的變更。大多數的衝突會自動解決。例如,與各伺服器上的變更相關之時間戳記會經由使用最近的變更而獲得解決。但是,某些變更衝突需要手動介入才能解決。
本節包含下列主題:
解決複寫衝突最簡單的方式是使用 DSCC。如需相關資訊,請參閱 DSCC 線上說明。
您可以使用指令行解決複寫衝突。無法經由複寫程序自動解決之變更衝突的項目,會包含操作屬性 nsds5ReplConflict 做為衝突記號。
若要尋找出現衝突的項目,請定期搜尋包含此屬性的項目。例如,您可以使用下列 ldapsearch 指令尋找衝突的項目:
$ ldapsearch -h host2 -p 1389 -D cn=admin,cn=Administrators,cn=config \ -w - -b "dc=example,dc=com" "(nsds5ReplConflict=*)" |
請注意,預設會編製 nsds5ReplConflict 屬性的索引。
具有相同 DN 的項目如果是在伺服器彼此複寫變更之前所建立的,則可能是建立在不同的主伺服器上。經過複寫之後,衝突解決機制會自動重新命名第二個建立的項目。
具有 DN 命名衝突的項目會在其 DN 中包含操作屬性 nsuniqueid 提供的唯一識別碼,進行重新命名。
例如,如果項目 uid=bjensen,ou=People,dc=example,dc=com 在兩部主伺服器上同時建立,則這兩部主伺服器在複寫之後會有以下兩個項目:
uid=bjensen,ou=People,dc=example,dc=com
nsuniqueid=66446001-1dd211b2-66225011-2ee211db+uid=bjensen,dc=example,dc=com
必須為第二個項目提供有用的 DN。您可以刪除衝突的項目,並再次以非衝突的名稱增加。但是,重新命名項目可確保其內容不會變更。重新命名程序會視命名屬性是單值或多值而有所不同。請參閱下列程序。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
重新命名項目,同時保留舊 RDN 值,例如:
$ ldapmodify -h host2 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - Enter bind password: dn: nsuniqueid=66446001-1dd211b2-66225011-2ee211db+uid=bjensen,dc=example,dc=com changetype: modrdn newrdn: uid=bj66446001 deleteoldrdn: 0 ^D |
您無法刪除此步驟中的舊 RDN 值,因為該值還同時包含無法刪除的 nsuniqueid 操作屬性。
移除命名屬性的舊 RDN 值與衝突記號屬性,例如:
$ ldapmodify -h host2 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - Enter bind password: dn: uid=bj66446001,dc=example,dc=com changetype: modify delete: uid uid: bjensen - delete: nsds5ReplConflict ^D |
複寫項目中的命名屬性為單值時,例如 dc (網域元件),您無法僅重新命名項目為相同屬性的其他值。相反的,您必須提供項目暫存名稱。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
使用不同的命名屬性重新命名項目,並保留舊 RDN,例如:
$ ldapmodify -h host2 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - Enter bind password: dn: nsuniqueid=66446001-1dd211b2-66225011-2ee211db+dc=HR,dc=example,dc=com changetype: modrdn newrdn: o=TempHREntry deleteoldrdn: 0 ^D |
您無法刪除此步驟中的舊 RDN 值,因為該值還同時包含無法刪除的 nsuniqueid 操作屬性。
將想要的命名屬性變更為唯一值,並移除衝突記號屬性,例如:
$ ldapmodify -h host2 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - Enter bind password: dn: o=TempHREntry,dc=example,dc=com changetype: modify replace: dc dc: NewHR delete: nsds5ReplConflict ^D |
將項目重新命名回預定命名屬性,例如:
$ ldapmodify -h host2 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - Enter bind password: dn: dc=NewHR,dc=example,dc=com changetype: modrdn newrdn: dc=HR deleteoldrdn: 1 ^D |
您可以將 deleteoldrdn 屬性值設為 1,刪除成對的暫存屬性值組 o=TempHREntry。若要保留此屬性,請將 deleteoldrdn 屬性值設為 0。
複寫刪除作業時,若是用戶伺服器發現要刪除的項目有子項目,衝突解決程序會建立接點項目,以避免目錄中出現孤立項目。
同理,複寫增加作業時,若是用戶伺服器找不到父項目,衝突解決程序就會建立表示父系的接點項目,使得新項目不會成為孤立項目。
接點項目是包含物件類別 glue 與 extensibleObject 的暫存項目。接點項目會以下列各種方式建立:
如果衝突解決程序發現有刪除的項目符合唯一識別碼,接點項目會是該項目的復原內容。接點項目也包含 glue 物件類別與 nsds5ReplConflict 屬性。
此情況下,您可以修改接點項目以移除 glue 物件類別與 nsds5ReplConflict 屬性,使該項目維持為一般項目,或刪除接點項目與其子項目。
伺服器會以 glue 與 extensibleObject 物件類別建立基本項目。
此情況下,您必須修改項目使其變成有意義的項目,或刪除項目與所有子項目。
如需依賴屬性唯一性的應用程式互通操作,例如郵件伺服器,您可能必須限制包含 nsds5ReplConflict 屬性的項目之存取權。如果沒有限制這些項目的存取權,僅需要一個屬性的應用程式會同時選擇原始項目與包含 nsds5ReplConflict 的衝突解決項目,而作業將因此失敗。
若要限制存取,您必須使用下列指令修改授予匿名讀取權的預設 ACI:
$ ldapmodify -h host2 -p 1389 -D cn=admin,cn=Administrators,cn=config -w - Enter bind 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 屬性的項目。