Sun Java System Directory Server Enterprise Edition 6.0 管理指南

第 10 章 目錄伺服器複寫

複寫是一套機制,讓目錄內容可利用此機制從目錄伺服器自動複製到一或多個其他的目錄伺服器。所有寫入作業都會自動鏡像到其他目錄伺服器。如需複寫概念、複寫方案,以及如何規劃目錄部署中複寫之完整說明,請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Deployment Planning Guide」

一般會在複寫拓樸中,將伺服器上的某個尾碼複寫至伺服器上的其他尾碼,或以伺服器上的其他尾碼複寫伺服器上的某個尾碼。因此,複本、複寫的尾碼與複寫的伺服器等字詞會交換使用。

本章說明使用指令行設定各種複寫方案所執行的作業,其中包含下列主題:

規劃複寫部署

您可以使用無限部主伺服器進行複寫部署的配置。部署中不需要包含集散中心或用戶。本章包含配置集散中心與用戶的複寫程序,不過其為可選擇的項目。

開始配置複寫之前,必須清楚瞭解貴機構中要部署複寫的方式。您必須瞭解「Sun Java System Directory Server Enterprise Edition 6.0 Reference」中所述的複寫概念。您也必須使用「Sun Java System Directory Server Enterprise Edition 6.0 Deployment Planning Guide」中提供的設計準則,謹慎規劃未來的複寫配置。

配置與管理複寫的建議介面

配置與管理複寫最簡單的方式是使用目錄服務控制中心 (DSCC)。您可以使用 DSCC 自動配置複寫。您可以選擇設定複寫拓樸所需的自動化層級,例如,是否要在複寫配置期間初始化尾碼。DSCC 也會提供檢查以避免錯誤。此外,DSCC 提供複寫拓樸的圖形化檢視。

DSCC 線上說明提供使用 DSCC 設定複寫的程序。


備註 –

只有在無法使用 DSCC 配置複寫時,才請使用本章所提供的指令行程序。


配置複寫的步驟摘要

配置複寫的步驟摘要假設複寫的是單一尾碼。若要複寫多個尾碼,可以平行配置每部伺服器上的尾碼。亦即可以在多個尾碼上重複配置複寫的每個步驟。

本章其餘部分包含如何配置複寫的詳細指示。

Procedure配置複寫的步驟摘要

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

若要配置複寫拓樸,請按照本程序中概要說明的一般步驟進行。

  1. 在包含專屬用戶複本的所有伺服器上,執行下列作業:

    1. 為用戶複寫的尾碼建立空的尾碼。

      請參閱建立用戶複本的尾碼

    2. 啟用用戶複寫的尾碼。

      請參閱啟用用戶複本

    3. (可選擇) 配置進階用戶設定。

      請參閱執行進階用戶配置

  2. 請視需要在包含集散複寫的尾碼之所有伺服器上,執行下列作業:

    1. 為集散複寫的尾碼建立空的尾碼。

      請參閱建立集散複本的尾碼

    2. 啟用集散複寫的尾碼。

      請參閱啟用集散複本

    3. (可選擇) 配置進階集散中心設定。

      請參閱修改集散複本上的變更記錄設定

  3. 在包含主伺服器複寫的尾碼之所有伺服器上,執行下列作業:

    1. 為主伺服器複寫的尾碼建立尾碼。

      請參閱建立主伺服器複本的尾碼

    2. 啟用主伺服器複寫的尾碼。

      請參閱啟用主伺服器複本

    3. (可選擇) 配置進階主伺服器設定。

      請參閱修改主伺服器複本上的變更記錄設定


    備註 –

    請確定建立複寫協議之前已啟用所有複本,如此一來,建立複寫協議之後便能立即初始化用戶複本。用戶初始化一律會是設定複寫的最後一個階段。


  4. 請確定複寫管理員配置已完成。

  5. 依下列方式在所有主伺服器複本上建立複寫協議:

    1. 在多重主伺服器拓樸的主伺服器之間

    2. 在主伺服器與其專屬用戶之間

    3. 在主伺服器與集散複本之間

    請參閱建立複寫協議

  6. (可選擇) 若要使用部分複寫,請立即進行配置。

    請參閱部分複寫

  7. (可選擇) 若要使用複寫優先權,請立即進行配置。

    請參閱複寫優先權

  8. 配置集散複本與其用戶之間的複寫協議。

    請參閱建立複寫協議

  9. 若是多重主伺服器複寫,請從包含原始資料副本的相同主伺服器複本,初始化所有主伺服器。

    請參閱初始化複本

  10. 初始化集散複本與用戶複本。

    請參閱初始化複本

啟用專屬用戶上的複寫

專屬用戶是複寫的尾碼之唯讀副本。專屬用戶會從連結做為複寫管理員的伺服器接收更新,以進行變更。用戶伺服器的配置作業包含準備空的尾碼以保留複寫的尾碼,以及啟用該尾碼上的複寫。選擇性進階配置可包含設定參照、變更清除延遲與修改特性。

下列幾節說明如何在伺服器上配置一個專屬用戶複寫的尾碼。在將包含專屬用戶複寫的尾碼之每部伺服器上,重複所有程序。

Procedure建立用戶複本的尾碼

    如果不存在空的尾碼,請在具有相同 DN 的用戶上建立尾碼做為預定主伺服器複本。

    如需相關指示,請參閱建立尾碼


    注意 – 注意 –

    如果尾碼存在且不是空值,其內容會在從主伺服器初始化複寫的尾碼時遺失。


Procedure啟用用戶複本

建立空的尾碼之後,需要啟用用戶複寫的尾碼。

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

    啟用用戶複寫的尾碼。


    $ dsconf enable-repl -h host -p port consumer suffix-DN
    

    例如:


    $ dsconf enable-repl -h host1 -p 1389 consumer dc=example,dc=com

Procedure執行進階用戶配置

若要為進階功能配置用戶複寫的尾碼,請立即執行。

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

  1. 若要使用 SSL 進行參照,請設定安全參照。


    $ dsconf set-suffix-prop -h host -p port suffix-DN referral-url:ldaps://servername:port
    

    例如:


    $ dsconf set-suffix-prop -h host1 -p 1636 dc=example,dc=com \
     referral-url:ldaps://server2:2389

    複寫機制會自動配置用戶傳回複寫拓樸中所有已知主伺服器的參照。這些預設參照假設用戶端將在標準連線上使用簡單認證。若要讓用戶端可使用 SSL 安全連線連結至主伺服器,請增加使用安全連接埠號,同時格式為 ldaps://servername :port 的參照。請注意,如果主伺服器配置為僅能使用安全連線,URL 預設會指向安全連接埠。

    如果增加多個 LDAP URL 做為參照,可以強制用戶僅傳送這些 LDAP URL 的參照,而不會傳送主伺服器複本的參照。例如,假設您要用戶端一律參照主伺服器上的安全連接埠,而不是預設連接埠。請建立這些安全連接埠的 LDAP URL 清單,並設定特性以使用這些參照。若要定義特定主伺服器或目錄伺服器代理處理所有更新,也可以使用專用參照。

  2. 若要變更用戶的複寫清除延遲,請使用此指令:


    $ 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 天便已足夠。

啟用集散中心上的複寫

集散複本會做為用戶與主伺服器,進一步分佈複寫的資料給更多的用戶。集散複本從其供應者接收複寫更新,再傳送複寫更新給其用戶。這些複本不接受修改,而會傳回參照至主伺服器。

集散伺服器的配置作業包含準備空的尾碼以保留複寫的尾碼,以及啟用該尾碼上的複寫。選擇性進階配置可包含選擇不同的複寫管理員、設定參照、設定清除延遲,以及修改變更記錄參數。

下列幾節說明如何配置一部集散伺服器。在將包含集散複寫的尾碼之每部伺服器上,重複所有程序。

Procedure建立集散複本的尾碼

    如果不存在空的尾碼,請在具有相同 DN 的集散伺服器上建立尾碼做為預定主伺服器複本。

    如需相關指示,請參閱建立尾碼

    如果尾碼存在且不是空值,其內容會在從主伺服器初始化複寫的尾碼時遺失。

Procedure啟用集散複本

如果有集散複本,請立即啟用。

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

    啟用集散複寫的尾碼。


    $ dsconf enable-repl -h host -p port hub suffix-DN
    

    例如:


    $ dsconf enable-repl -h host1 -p 1389 hub dc=example,dc=com

Procedure修改集散複本上的變更記錄設定

您可能會想為進階集散配置修改的唯一參數,會與該變更記錄相關。集散伺服器需要變更記錄才能做為供應者。

您可以使用 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
    

啟用主伺服器複本上的複寫

主伺服器複本包含主伺服器的資料副本,並會集中所有修改,再傳播更新給所有其他複本。主伺服器會記錄所有變更、檢查其用戶的狀態,並視需要傳送更新給用戶。在多重主伺服器複寫中,主伺服器複本也會從其他主伺服器接收更新。

主伺服器的配置作業包含定義內含主伺服器複本的尾碼、啟用主伺服器複本,以及視需要配置複本以供進階複寫使用。

下列幾節說明如何配置一部主伺服器。在將包含主伺服器複寫的尾碼之每部伺服器上,重複所有程序。

Procedure建立主伺服器複本的尾碼

    在將包含要複寫的項目之主伺服器上,選擇或建立尾碼。

    如需相關指示,請參閱建立尾碼

    若要確定多重主伺服器的配置與初始化正確,請僅載入一部含資料的主伺服器。其他複寫的尾碼之任何資料將會遭覆寫。

Procedure啟用主伺服器複本

啟用主伺服器上的複寫時,必須指定複寫 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

Procedure修改主伺服器複本上的變更記錄設定

若是進階主伺服器配置,您可能會想要修改變更記錄設定。

您可以使用 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 與其密碼。

Procedure設定非預設複寫管理員

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

  1. 在所有用戶 (目標) 複寫的尾碼上,建立新的複寫管理員與密碼。


    $ 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
  2. 在所有用戶 (目標) 複寫的尾碼上,設定複寫管理員連結 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"
  3. 針對已在所有供應者 (來源) 複寫的尾碼上建立的所有複寫協議,設定複寫管理員連結 DN。

    1. 建立暫存檔以設定新的複寫管理員密碼。

      此檔案只能讀取一次,您必須儲存密碼以供日後使用。


      $ echo password > password-file
      
    2. 設定複寫管理員連結 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
    3. 移除密碼暫存檔。


      $ rm password-file
      

Procedure變更預設複寫管理員密碼

  1. 建立暫存檔以設定複寫管理員密碼。

    此檔案只能讀取一次,您必須儲存密碼以供日後使用。


    $ echo password > password-file
    
  2. 在複寫拓樸中的所有用戶 (目標) 伺服器上,設定複寫管理員連結密碼。


    $ dsconf set-server-prop -h host -p port suffix-DN def-repl-manager-pwd-file:password-file
    

    例如:


    $ dsconf set-server-prop -h host1 -p 1389 dc=example,dc=com \
     def-repl-manager-pwd-file:pwd.txt
  3. 移除密碼暫存檔。


    $ rm password-file
    

建立複寫協議

複寫協議是供應者上的一組參數,其可配置並控制傳送更新給指定用戶的方式。複寫協議必須建立於傳送更新給其用戶之供應者複寫的尾碼上。您必須為每個要更新的用戶,在供應者上建立複寫協議。

Procedure建立複寫協議

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

如果使用 DSCC 建立新的複寫協議,可以選擇從現有的複寫協議複製部分或所有的複寫協議配置設定。

  1. 為要進行複寫的各個用戶,從主伺服器建立複寫協議。


    $ 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) 建立新協議。


  2. 檢查複寫協議是否已正確建立。


    $ dsconf show-repl-agmt-status -h host -p port suffix-DN consumer-host:consumer-port
    
  3. 如果認證狀態不正確,請執行 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

部分複寫

複寫作業預設會將複寫的尾碼中整個項目複製到用戶複本。您可以使用部分複寫功能,選取要使用的尾碼以及要包含或排除的屬性。部分複寫會配置於複寫協議中,讓您可為主伺服器各用戶複寫的尾碼定義屬性集。您可以控制要分佈的資料,並更有效地使用複寫頻寬與用戶資源。

例如,若要減少複寫頻寬,可以選擇不要複寫含有 photojpegPhotoaudio 等一般說來過大的值之屬性。因此,用戶上將無法使用這些屬性。在另外一個情況下,您可能會選擇在專門執行認證的用戶伺服器上,僅複寫 uiduserpassword 屬性。

部分複寫的注意事項


備註 –

部分複寫無法在 Directory Server 5.2 之前的產品版本中使用。配置部分複寫協議時,主伺服器與用戶複本至少必須使用 Directory Server 5.2。


啟用或修改部分屬性集需要重新初始化用戶複本。因此,您必須在部署之前決定部分複寫需求,並在第一次初始化複寫的尾碼之前定義屬性集。

複寫小型的屬性集時,由於考慮到特定屬性上 ACI、角色與 CoS 等複雜功能的相依性,因此您必須謹慎進行。此外,不複寫 ACI、角色或 CoS 機制的限定符號或篩選中所提及的其他屬性,可能會危及資料的安全性。不複寫可能也會導致搜尋中傳回不同的屬性集。管理要排除的屬性清單比管理要包含的屬性清單要來得安全,且不容易有人為疏失。

如果複寫的屬性集不允許所有複寫的項目遵守模式,則必須關閉用戶伺服器上的模式檢查。由於複寫機制會略過用戶上的模式檢查,因此複寫不相符的項目不會導致錯誤。但是,用戶將包含這些不相符的項目,並會關閉模式檢查以向其用戶端顯示一致的狀態。

部分複寫會配置於包含集散中心與專屬用戶的主伺服器複本之複寫協議中。不支援在多重主伺服器複寫環境中配置兩個主伺服器複本之間的部分複寫。此外,如果多個主伺服器有含相同複本的複寫協議,則所有協議皆須複寫相同的屬性集。

Procedure配置部分複寫

若要配置部分複寫,必須指定尾碼、決定包含或排除該尾碼上的屬性,並接著選擇要包含或排除的屬性。如果選擇在尾碼上排除屬性,將會自動包含所有其他屬性。同理,如果選擇在尾碼上包含特定屬性,將會自動排除所有其他屬性。

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

    在位於來源伺服器的複寫協議上配置部分複寫。


    $ dsconf set-repl-agmt-prop -h host -p port suffix-DN consumer-host:consumer-port property:value
    

    其中 propertyrepl-fractional-exclude-attrrepl-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

複寫優先權

指定複寫優先權為可選擇的項目。您可以建立複寫規則以指定某些變更 (例如更新使用者密碼) 以高優先權進行複寫。複寫規則中指定的任何變更皆會以高優先權進行複寫,而所有其他變更則會以一般優先權進行複寫。


備註 –

複寫優先權規則僅需要建立於主伺服器上。不需要為集散中心與用戶進行配置。


Procedure配置複寫優先權

您可以使用 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) 線上手冊。

初始化複本

建立複寫協議並配置兩個複本之後,必須初始化用戶複寫的尾碼,才會開始複寫。您可以在初始化期間,實際將資料從供應者複寫的尾碼複製到用戶複寫的尾碼。

此外,部分錯誤情況或配置變更會需要重新初始化複本。例如,如果因為任何理由從備份復原單一主伺服器複寫的尾碼中之資料,則必須重新初始化其所更新的所有複本。

重新初始化時,會刪除用戶上複寫的尾碼之內容,並以主伺服器上的尾碼內容取代。如此做可確保複本會進行同步化,且複寫更新可以繼續進行。本節中所述的所有初始化方法會自動重建用戶複本的索引,使得用戶能以最佳方式回應用戶端的讀取請求。

使用多重主伺服器複寫時,如果拓樸中有其他主伺服器已更新用戶,則用戶可能無須重新初始化。

Procedure從遠端 (供應者) 伺服器初始化複寫的尾碼

您可以使用現有的複寫協議,從遠端伺服器初始化尾碼。此初始化方法比其他方法簡單,因此請儘可能使用此方法。而僅在有大量資料使得匯入耗費太多時間時使用其他方法。

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

使用 DSCC 以線上方式初始化複寫的尾碼,是初始化或重新初始化用戶的簡單方式。但是,如果初始化大量的項目,此程序可能很耗時。此時,使用指令行以離線方式初始化用戶可能比較有效率。

  1. 初始化複本。


    $ dsconf init-repl-dest -h host -p port suffix-DN destination-host:destination-port [destination-host:destination-port]

    其中 destination-host:destination-port 是您從遠端伺服器初始化目標伺服器的主機與連接埠。

  2. (可選擇) 請為各個協議檢查尾碼是否已初始化。


    $ dsconf show-repl-agmt-status -h host -p port suffix-DN destination-host:destination-port 
    

從 LDIF 初始化複本

Procedure從 LDIF 初始化複寫的尾碼

本程序概要說明從 LDIF 檔案初始化複寫的尾碼所用之一般步驟。

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

使用 DSCC 以線上方式初始化複寫的尾碼,是初始化或重新初始化用戶的簡單方式。但是,如果初始化大量的項目,此程序可能很耗時。此時,使用指令行以離線方式初始化用戶可能比較有效率。

  1. 請確定已設定複寫協議。

    您必須在初始化複本之前執行此項作業。

  2. 從主伺服器複寫的尾碼匯出尾碼資料的原始副本至 LDIF 檔案。

    請參閱匯出複寫的尾碼至 LDIF

    您可以在多重主伺服器複寫環境中,使用從原始主伺服器匯出的 LDIF 檔案同時初始化其他主伺服器與任何用戶。您可以在串聯複寫環境中,使用相同的檔案同時初始化集散複本及其用戶。

    在所有的情況下,皆須以從配置的主伺服器複本匯出之 LDIF 檔案開始。您無法使用任意的 LDIF 檔案初始化所有複本,因為該檔案可能不包含複寫中介資料。

  3. 如果初始化部分複本,請篩選檔案而僅保留複寫的屬性,再將該檔案傳輸到所有用戶伺服器。

    請參閱為部分複寫篩選 LDIF 檔案

  4. 初始化複本。

    請執行下列其中一項動作:

    • 若要在離線的 (停止的) 伺服器上快速進行初使化,請使用 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) 線上手冊。

  5. (可選擇) 請為各個協議檢查尾碼是否已初始化。


    $ dsconf show-repl-agmt-status -h host -p port suffix-DN destination-host:destination-port 
    

Procedure匯出複寫的尾碼至 LDIF

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

    使用下列其中一個指令匯出 LDIF 檔案中複寫的尾碼內容:

    • 若是以離線方式匯出,請鍵入:


      $ 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

    如需更多資訊,請參閱備份至 LDIFdsadm(1M) 線上手冊與 dsconf(1M) 線上手冊。

為部分複寫篩選 LDIF 檔案

使用 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 檔案匯入資料中所述,傳輸檔案至用戶伺服器並匯入檔案。

使用二進位副本初始化複寫的尾碼

二進位副本可讓您使用某部伺服器的二進位備份檔案,復原相同的目錄內容到另一部伺服器上,以複製整部伺服器。您可以使用二進位副本初始化,或從主伺服器或集散伺服器的二進位副本重新初始化任何伺服器,或從其他用戶伺服器的二進位副本重新初始化用戶。


備註 –

此進階程序會與目錄伺服器的資料庫檔案互動,且應僅由有經驗的管理員使用。

如果複本有大型資料庫檔案,例如包含百萬條項目的複本,在此功能上設定某些限制有助執行與節省時間。


使用二進位副本的複寫限制

由於二進位副本會將資料庫檔案從一部機器移動到另一部,該機制會遵守下列嚴格限制:

建立初始化伺服器的二進位副本

本節說明如何建立初始化伺服器的二進位副本,以及如何建立使用最低磁碟空間的二進位副本。

Procedure建立初始化伺服器的二進位副本

本程序可用以執行二進位副本,以初始化複寫的伺服器,因為其使用標準備份功能建立伺服器資料庫檔案的副本。執行標準備份可確保所有資料庫檔案皆處於一致的狀態,而不需要停止伺服器。

本程序有幾點限制。備份與復原作業會在相同機器上建立資料庫檔案的副本,因此會加倍各機器上這些檔案所需的磁碟空間量。此外,如果目錄包含十億位元組的資料,這些檔案上的實際複製作業可能需要相當長的時間。

針對此程序的某些部分,您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。此程序的其他部分只能使用指令行完成。

  1. 為新複寫的尾碼在目標機器上安裝目錄伺服器,視需要建立新的伺服器實例,並根據使用二進位副本的複寫限制配置伺服器。

  2. 在包含此複寫的尾碼之複寫拓樸中建立所有複寫協議。

    在此複本中包含來自供應者的協議。如果此複本不是專屬用戶,請在其用戶中包含來自此複本的協議。請參閱建立複寫協議

  3. 選取完整配置與想要初始化的相同類型 (主伺服器、集散中心或用戶) 之初始化複本,並根據二進位備份在複本上執行標準備份。

  4. 例如,使用 ftp 指令從備份目錄複製或傳輸檔案到目標機器上的目錄。

  5. 如果已在多重主伺服器複寫方案中初始化新主伺服器,請遵循復原多重主伺服器方案中的主伺服器中的程序。

Procedure使用二進位副本初始化使用最低磁碟空間的伺服器

本程序不會建立資料庫檔案的備份副本,因此會使用較少的磁碟空間與較少的時間。但是,您需要停止正在複製到排序中的伺服器,以確保資料庫檔案的狀態一致。


注意 – 注意 –

本程序不得用以重新初始化已在多重主伺服器複寫方案中使用的主伺服器,僅能用以重新初始化用戶伺服器或初始化新的主伺服器。若要重新初始化現有的主伺服器複本,請使用線上初始化,匯入 LDIF 檔案,或遵循建立初始化伺服器的二進位副本中的程序。


針對此程序的某些部分,您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。此程序的其他部分只能使用指令行完成。

  1. 為新複寫的尾碼在目標機器上安裝目錄伺服器,視需要建立新的伺服器實例,並根據使用二進位副本的複寫限制配置伺服器。

  2. 在包含此複本的複寫拓樸中建立所有複寫協議。

    在此複本中包含來自供應者的協議。如果此複本不是專屬用戶,請在其用戶中包含來自此複本的協議。請參閱建立複寫協議

  3. 啟動、停止與重新啟動目錄伺服器實例中所述,停止要初始化或重新初始化的目標伺服器。

  4. 選取完整配置與想要初始化的相同類型 (主伺服器、集散中心或用戶) 初始化的複本,同時停止此伺服器。

    如果複製的是多重主伺服器配置中的主伺服器複本,請確保已完整更新所有其他主伺服器最近的變更,再停止伺服器。

  5. 從目標伺服器移除所有資料庫檔案,包含作業事件記錄、變更記錄與區域檔案 (__db.xxx 檔案)。

    除非已遷移檔案,否則資料庫檔案與作業事件記錄會位於 instance-path/db 目錄中。

  6. 例如,使用 ftp 指令從來源複本機器複製或傳輸所有資料庫檔案 (包含作業事件記錄與變更記錄) 到目標機器。

    除非已遷移檔案,否則資料庫檔案與作業事件記錄會位於 instance-path/db 目錄中。

    如果初始化的是主伺服器或集散複本,也須複製變更記錄中的所有檔案,變更記錄預設會位於 instance-path/changelog 中。

  7. 重新啟動來源與目標伺服器。

在串聯複寫中初始化複本

串聯複寫中,請一律以下列程序中所示的順序初始化複本。

Procedure在串聯複寫中初始化複本

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

  1. 如果也有多重主伺服器複寫,請確保其中一部主伺服器有要複寫的完整資料集,再使用此主伺服器初始化其他主伺服器的複本。

  2. 從第一層集散複本的主伺服器複本初始化複本。

  3. 如果有多層集散中心,請從之前初始化的集散層級初始化每個層級。

  4. 從最後一層集散複本初始化專屬用戶上的複本。

編製複寫的尾碼之索引

索引不會從一部伺服器實例自動複寫到另一部伺服器實例。若要為所有保留複寫的尾碼之伺服器實例編製其屬性的索引,請執行下列動作之一。

遞增多個項目到大型複寫的尾碼

如果您的目錄已有大量項目,而還想再增加大量項目,請勿使用 ldapmodify -a,這麼做會很耗時。請改搭配在複寫的拓樸中增加項目之選項,使用 dsconf import 指令遞增新項目。當您匯入項目時,會產生包含增加項目與複寫中介資料的 LDIF 檔案。您可以接著匯入此產生的 LDIF 檔案至其他複本。產生的 LDIF 檔案可確保在您增加資料的複本之間持續同步化複寫。

Procedure將多個項目增加至大型複寫的尾碼

開始之前

本程序會產生大型 LDIF 檔案。在執行第一個 dsconf import 指令之前,請確定有足夠的磁碟空間可供產生的 LDIF 檔案使用。

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。


注意 – 注意 –

您可以使用本程序以分次傳遞方式初始化有大量項目的伺服器。但是,如果其中一個匯入失敗,便會遺失整個資料庫。請務必於每次匯入之前備份資料。


  1. 匯入項目到任何主伺服器複本。


    $ dsconf import -h host -p port -K generated-LDIF-file suffix-DN
    

    -K 選項可確保不會移除現有的資料,也會產生包含複寫程序所需的新項目與資訊之檔案 generated-LDIF-file

  2. 在所有其他複本中,匯入上一個步驟所產生的檔案。


    $ dsconf import -h host -p port \
    -K -f incremental-output=no generated-LDIF-file suffix-DN
    

    選項 -f incremental-output=no 會指定不會產生其他 LDIF 檔案。本程序僅需要一個產生的 LDIF 檔案。

複寫與參照完整性

如果搭配複寫使用參照完整性外掛程式,則必須在所有主伺服器上啟用外掛程式。您不需要在集散伺服器或用戶伺服器上啟用外掛程式。

下列限制與在複寫環境中使用參照完整性外掛程式相關:

如需有關配置參照完整性外掛程式的資訊,請參閱配置參照完整性外掛程式

經由 SSL 的複寫

可以配置在複寫中包含目錄伺服器,如此一來,所有複寫作業會經由 SSL 連線執行。

Procedure配置 SSL 的複寫作業

本程序顯示在複寫拓樸中設定兩部主伺服器的複寫之指令範例。


備註 –

此範例顯示使用自行簽署的憑證之簡單複寫配置。在生產環境中設定經由 SSL 的複寫時,如果改用憑證授權機構信任的憑證會更安全。

如果供應者伺服器憑證為僅用於 SSL 伺服器的憑證,而無法在 SSL 訊號交換期間做為用戶端,則經由 SSL 的複寫會失敗。


經由 SSL 保護複寫時,複寫管理員的認證仍會使用簡單連結與密碼完成。您可以使用以用戶端為基礎的認證來完整保護複寫,但是這麼做需要更複雜的設定。

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

  1. 建立並啟動新的伺服器。


    $ dsadm create -p 1389 -P 1636 /local/ds1
    $ dsadm create -p 2389 -P 2636 /local/ds2
    
    $ dsadm start /local/ds1
    $ dsadm start /local/ds2
  2. 在所有伺服器上建立空的尾碼。


    $ dsconf create-suffix -e -i -p 1389 dc=example,dc=com
    $ dsconf create-suffix -e -i -p 2389 dc=example,dc=com
  3. 在所有伺服器上設定多重主伺服器密碼檔案。


    $ 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
  4. 在所有伺服器上啟用複寫。


    $ 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
  5. 在所有伺服器上檢視現有的預設憑證。


    $ dsadm show-cert -F der -o certfile1 /local/ds1 defaultCert
    $ dsadm show-cert -F der -o certfile2 /local/ds2 defaultCert
  6. 從所有其他伺服器將 CA 信任的憑證增加至所有伺服器上。


    $ dsadm add-cert --ca /local/ds1 "ds2 Repl Manager Cert" certfile2
    $ dsadm add-cert --ca /local/ds2 "ds1 Repl Manager Cert" certfile1
  7. 在所有主伺服器與集散 (來源) 伺服器上,建立所有用戶 (目標) 伺服器的複寫協議。

    請注意,複寫協議使用 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
  8. 請針對所有複寫協議,在複寫協議中將認證密碼檔案配置為用戶 (目標) 伺服器的複寫管理員密碼檔案。


    $ 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 執行,也將使用安全連線。

  9. 請在所有伺服器上重新啟動伺服器,以使配置變更生效。


    $ dsadm restart /local/ds1
    $ dsadm restart /local/ds2
  10. 在其中一部主伺服器上初始化尾碼。


    $ dsconf import -h example1.server -p 1389 -e -i /tmp/Example.ldif dc=example,dc=com
  11. 在尚未初始化的所有伺服器上,使用複寫協議初始化伺服器。


    $ dsconf init-repl-dest -e -i -h example1.server -p 1389 \
     dc=example,dc=com example1.server:2636

經由 WAN 的複寫

目錄伺服器可讓您執行所有格式的複寫,包含透過廣域網路 (WAN) 連線的機器之間的多重主伺服器複寫。此複寫可讓供應者伺服器初始化與更新用戶時,使用較高延遲與較低頻寬的最佳網路頻寬。


備註 –

部署或疑難排解經由 WAN 複寫的複寫拓樸時,必須檢查網路速度、延遲與資料封包遺失。這幾方面任何一個網路問題都可能會導致複寫延遲。

此外,複寫資料傳輸率在頻寬方面一律會比可用實際媒體允許的速率低。如果複本之間的更新磁碟區無法實際符合可用的頻寬,調校將無法避免複本在沉重的更新負載下有所差異。複寫延遲與更新效能受到許多因素的影響,包含但不限於:修改率、項目大小、伺服器硬體、錯誤率、平均延遲與平均頻寬。

如果您對貴環境中的複寫有任何疑問,請連絡 Sun 服務提供者。


複寫機制的內部參數預設會針對 WAN 進行最佳化。但是,如果複寫因為上述因素過慢,您可能需要憑經驗調整視窗大小與群組大小參數。您也能排程複寫避開網路尖峰時段,因而改善整體網路使用率。最後,目錄伺服器支援壓縮複寫資料以最佳情況使用頻寬。

配置網路參數

視窗與群組網路參數可決定複寫機制如何將項目群組化,以用更有效率的方式將其在網路上進行傳送。這些參數會影響供應者與用戶如何交換複寫更新訊息與回應。這些參數可配置於每個複寫協議中,讓您可以根據各用戶的特定網路條件自訂複寫效能。

監視您所做的任何修改效果,並據以調整參數。如需相關指示,請參閱取得複寫狀態。您無須中斷複寫以修改視窗大小與群組大小參數。

配置視窗大小

視窗大小 (預設值 10) 表示不需要用戶立即回應即可傳送的最大更新訊息數目。

快速連續傳送多則訊息,會比在每則訊息之後等待回應來得有效率。您可以使用適當的視窗大小,降低複本等待複寫更新或回應抵達的時間。

如果用戶複本比供應者慢,請將視窗大小增加到比預設值還要高的值,例如 100,並在進一步調整之前再次檢查複寫效能。當複寫更新率很高而使得更新之間的時間縮短時,即使是區域網路 (LAN) 連線的複本也會從較高的視窗大小獲益。

Procedure配置視窗大小

您可以使用 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,再重新檢查複寫效能。

增加群組大小時,請確定以下為真:

Procedure配置群組大小

您可以使用 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

排程複寫活動

如果複本之間立即同步化不是很重要,您可以在網路使用率低的期間排程複寫。資料複寫的完成速度應於網路使用率高時快得多。

您可以排程複寫在一天當中的某個時間開始與結束,以每天或每週為基準。您可以透過用戶各自的複寫協議,獨立為每個用戶執行此項作業。新排程會立即生效,而導致對應用戶的下一個資料複寫延遲到排程允許的第一個複寫完成。

Procedure排程複寫活動

您可以使用 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 中的此參數。

Procedure配置複寫壓縮

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

    在主伺服器的複寫協議項目上配置複寫壓縮。


    $ dsconf set-repl-agmt-prop -h host -p port suffix-DN \
     consumer-host:consumer-port transport-compression:level
    

    其中 level 可以是 highmediumlownone

    例如,若要在傳送複寫更新給 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.0 Reference」

修改複寫拓樸

本節說明管理現有複寫拓樸的以下幾方面:

變更複寫管理員

您可以編輯複寫協議,以變更用以連結至用戶伺服器的複寫管理員身份識別。若要避免複寫中斷,請在用戶上定義新的複寫管理員項目或憑證項目,再修改複寫協議。但是,如果複寫因為連結失敗而中斷,複寫機制將在複寫回復設定的限制內,於更正錯誤時自動傳送所有必要的更新。如需相關程序,請參閱使用非預設複寫管理員

管理複寫協議

您可以停用、啟用或刪除複寫協議。

停用複寫協議。

停用複寫協議時,主伺服器會停止傳送更新給指定的用戶。複寫到該伺服器的動作會停止,但是會保留協議中所有的設定。您可能會在稍後重新啟用協議而繼續複寫。如需有關中斷之後繼續複寫機制的資訊,請參閱啟用複寫協議

Procedure停用複寫協議。

您可以使用 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

啟用複寫協議

啟用複寫協議會繼續指定用戶的複寫。但是,如果複寫中斷的時間比複寫回復設定所允許的時間長,且其他供應者尚未更新用戶,就必須重新初始化用戶。複寫回復設定的大小為此供應者變更記錄的大小上限以及用戶清除延遲之最長存在期限 (請參閱執行進階用戶配置)。

當中斷時間很短且複寫可以回復時,主伺服器將會在重新啟用協議時自動更新用戶。

Procedure啟用複寫協議

您可以使用 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

刪除複寫協議。

刪除複寫協議時會停止對應用戶的複寫,並會移除關於協議的所有配置資訊。若要在稍後繼續複寫,請改以停用複寫協議。中所述停用協議。

Procedure刪除複寫協議

您可以使用 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

升級或降級複本

升級或降級複本會變更其在複寫拓樸中的角色。專屬用戶可升級為集散中心,而集散中心可升級為主伺服器。主伺服器可降級為集散中心,而集散中心也可降級為專屬用戶。但是,主伺服器無法直接降級為用戶,正如用戶無法直接升級為主伺服器。

多重主伺服器複寫機制內所允許的升級與降級使得拓樸非常具有彈性。之前由用戶複本提供服務的站點可能會增大,而需要集散中心與多個複本以處理負載。如果負載包含許多複本內容修改,集散中心會變成主伺服器以允許更快速的本機變更,而能接著複寫至其他站點的其他主伺服器。

升級或降級複本時,請注意下列事項:

Procedure升級或降級複本

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

    使用下列其中一個指令升級或降級複本:


    $ dsconf promote-repl -h host -p port role suffix-DN
    

    $ dsconf demote-repl -h host -p port role suffix-DN
    

    其中 rolemasterhubconsumer

停用複寫的尾碼

停用複寫的尾碼會從複寫拓樸中移除該尾碼。若尾碼角色為主伺服器、集散中心或用戶,尾碼將再也無法更新或傳送更新。停用供應者伺服器上的尾碼會刪除所有複寫協議,且如果再次啟用複本,將必須重新建立複寫協議。

Procedure停用複寫的尾碼

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

    停用複寫的尾碼。


    $ dsconf disable-repl -h host -p port suffix-DN
    

    例如:


    $ dsconf disable-repl -h host2 -p 1389 dc=example,dc=com

保持複寫的尾碼同步化

停止複寫中使用的目錄伺服器以進行定期維護之後,當伺服器再次連線時,必須確保伺服器會透過複寫立即更新。若是多重主伺服器環境中的主伺服器,必須有多重主伺服器集中的其他主伺服器更新目錄資訊。在其他情況下,集散伺服器或專屬用戶伺服器離線進行維護之後,當伺服器再次連線時,必須由主伺服器加以更新。

本節說明複寫重試演算法,並說明如何不等待下次重試便強制執行複寫更新。


備註 –

本節所述的程序僅能在已設定複寫已初始化用戶時使用。


複寫重試演算法

當來源複本複寫至目標失敗時,會定期依遞增時間間隔重試。重試間隔會視錯誤類型而定。

請注意,如果所配置的複寫協議一律會使來源複本與目標複本保持同步化,光是立即更新離線超過五分鐘的複本都會不足。

Procedure強制執行複寫更新

如果停止複寫,您可以強制執行目標尾碼的複寫更新。

無法使用 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

Directory Server 6.0 之前的版本複寫

節提供有關如何配置 Directory Server 6.0 之前的版本複寫的資訊。

在 Directory Server 6.0 與 Directory Server 5.1 或 5.2 之間進行複寫

Directory Server 5.1、5.2 與 6.0 在複寫配置方面相容,但下列幾點例外:

使用回溯變更記錄

LDAP 用戶端使用回溯變更記錄,確認目錄伺服器資料的變更歷程記錄。回溯變更記錄儲存在與目錄伺服器變更記錄不同的資料庫中,位於尾碼 cn=changelog 下。

回溯變更記錄可以在複寫拓樸中的獨立伺服器或每部伺服器上啟用。在一部伺服器上啟用回溯變更記錄時,預設會記錄該伺服器上所有尾碼的更新。回溯變更記錄可以配置為僅記錄指定尾碼的更新。

如需有關在複寫拓樸中使用回溯變更記錄以及使用回溯變更記錄的限制之資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Reference」中的「Replication and the Retro Change Log Plug-In」

如需有關回溯變更記錄中某項目的屬性之資訊,請參閱 changeLogEntry(5dsoc) 線上手冊。

如需修改回溯變更記錄的更多資訊,請參閱 dsconf(1M) 線上手冊。

本節說明可以使用回溯變更記錄的各種方式。

Procedure啟用回溯變更記錄

若要使用回溯變更記錄,必須啟用記錄。

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 修改回溯變更記錄配置項目:


    $ dsconf set-server-prop -h host -p port retro-cl-enabled:on
  2. 重新啟動伺服器。

    如需相關資訊,請參閱啟動、停止與重新啟動目錄伺服器實例

Procedure配置回溯變更記錄以記錄指定尾碼的更新

在一部伺服器上啟用回溯變更記錄時,預設會記錄該伺服器上所有尾碼的更新。本程序說明如何配置回溯變更記錄僅記錄指定尾碼的更新。

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 修改回溯變更記錄配置項目:


    $ 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"
  2. 重新啟動伺服器。

    如需相關資訊,請參閱啟動、停止與重新啟動目錄伺服器實例

Procedure配置回溯變更記錄以記錄刪除項目的屬性

本程序說明如何配置回溯變更記錄,以在刪除項目時記錄該項目的指定屬性。

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 修改回溯變更記錄配置項目:


    $ 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
  2. 重新啟動伺服器。

    如需相關資訊,請參閱啟動、停止與重新啟動目錄伺服器實例

Procedure修剪回溯變更記錄

在指定的一段時間過後,回溯變更記錄中的項目可自動移除。若要配置一段時間使項目在此時間之後自動刪除,請確定已啟用回溯變更記錄,再設定 cn=Retro Changelog Plugin, cn=plugins, cn=config 項目中的 nsslapd-changelogmaxage 配置屬性。

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 檢查是否已啟用回溯變更記錄。


    $ dsconf get-server-prop -h host -p port retro-cl-enabled
  2. 若未啟用回溯變更記錄,請啟用記錄。


    $ dsconf set-server-prop -h host -p port retro-cl-enabled:on
  3. 為記錄的變更設定最長存在期限。


    $ 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))

根據一般規則,請勿於回溯變更記錄項目上執行增加或修改作業。您可以刪除項目以修剪記錄大小。修改預設存取控制策略是唯一需要在回溯變更記錄上執行的修改作業。

建立回溯變更記錄時,預設會套用下列存取控制規則:

若要修改套用到回溯變更記錄的預設存取控制策略,請修改 cn=changelog 項目的 aci 屬性。請參閱第 6 章, 目錄伺服器存取控制

取得複寫狀態

您可以使用 DSCC 或指令行工具,取得複寫狀態。

在 DSCC 中取得複寫狀態

您可以使用 [尾碼] 標籤以圖形化方式檢視複寫,包含複寫協議與複寫延遲。如需更多資訊,請參閱 DSCC 線上說明。

此外,您可以使用 DSCC 檢視複寫拓樸,如下圖所示。

圖 10–1 複寫拓樸範例

DSCC 中的複寫拓樸範例。

透過使用指令行取得複寫狀態

如果無法使用 DSCC,請使用指令行工具取得複寫部署的相關資訊。

線上手冊提供完整的指令行語法與這些工具的使用範例。

若要尋找這些指令所在的目錄,請參閱指令位置

解決常見複寫衝突

多重主伺服器複寫使用約略一致的複寫模式。這表示相同的項目可能會在不同的伺服器上同時修改。當更新在兩部伺服器之間互傳時,必須解決所有衝突的變更。大多數的衝突會自動解決。例如,與各伺服器上的變更相關之時間戳記會經由使用最近的變更而獲得解決。但是,某些變更衝突需要手動介入才能解決。

本節包含下列主題:

使用 DSCC 解決複寫衝突

解決複寫衝突最簡單的方式是使用 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 在兩部主伺服器上同時建立,則這兩部主伺服器在複寫之後會有以下兩個項目:

必須為第二個項目提供有用的 DN。您可以刪除衝突的項目,並再次以非衝突的名稱增加。但是,重新命名項目可確保其內容不會變更。重新命名程序會視命名屬性是單值或多值而有所不同。請參閱下列程序。

Procedure重新命名具有多值命名屬性的衝突項目

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

  1. 重新命名項目,同時保留舊 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 操作屬性。

  2. 移除命名屬性的舊 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

Procedure重新命名具有單值命名屬性的衝突項目

複寫項目中的命名屬性為單值時,例如 dc (網域元件),您無法僅重新命名項目為相同屬性的其他值。相反的,您必須提供項目暫存名稱。

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

  1. 使用不同的命名屬性重新命名項目,並保留舊 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 操作屬性。

  2. 將想要的命名屬性變更為唯一值,並移除衝突記號屬性,例如:


    $ 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
  3. 將項目重新命名回預定命名屬性,例如:


    $ 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

解決孤立項目的衝突

複寫刪除作業時,若是用戶伺服器發現要刪除的項目有子項目,衝突解決程序會建立接點項目,以避免目錄中出現孤立項目。

同理,複寫增加作業時,若是用戶伺服器找不到父項目,衝突解決程序就會建立表示父系的接點項目,使得新項目不會成為孤立項目。

接點項目是包含物件類別 glueextensibleObject 的暫存項目。接點項目會以下列各種方式建立:

解決可能的互通操作問題

如需依賴屬性唯一性的應用程式互通操作,例如郵件伺服器,您可能必須限制包含 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 屬性的項目。