16.11. 同期更新の送信

同期は、winSyncInterval (Active Directory ドメインから変更内容を取得する場合) またはnsds5replicaupdateschedule 設定 (Directory Server から変更内容をプッシュする場合) で設定された頻度で行われます。デフォルトでは、変更は 5 分ごとに Active Directory から取得され、Directory Server からの変更がすぐに送信されます。
同期の更新は手動でトリガーできます。また、完全な再同期を行うことも可能で、Directory Server と Active Directory のすべてのエントリーを、あたかも新しいもののように送信したり、引き出したりすることができます。完全な再同期には、以前同期されていない既存の Directory Server エントリーが含まれます。

16.11.1. 手動増分同期の実行

通常の運用では、Directory Server のエントリーに行われた更新のうち、Active Directory に送信する必要のあるものはすべて changelog に集められ、増分更新の際に再生されます。
変更を手動で同期するには、以下を実行します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-winsync-agmt poke --suffix="dc=example,dc=com" example-agreement

16.11.2. 完全同期の実行

データに大きな変更があった場合や、既存の Directory Server エントリーに同期属性を追加する場合は、再同期 を開始する必要があります。再同期は合計更新であり、同期されたサブツリーのコンテンツ全体が検証され、必要に応じて更新されます。再同期は changelog を使用せずに行われます。これは、レプリケーションのコンシューマーの初期化または再初期化に似ています。

16.11.2.1. コマンドラインを使用した完全同期の実行

コマンドラインで完全同期を開始するには、以下を実行します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-winsync-agmt init --suffix="suffix" agreement_name
同期の状態を表示するには、以下を実行します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-winsync-agmt init-status --suffix="suffix" agreement_name

16.11.2.2. Web コンソールを使用した完全同期の実行

完全同期を開始するには、以下を実行します。
  1. Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
  2. インスタンスを選択します。
  3. Replication メニューを開き、Winsync Agreements エントリーを選択します。
  4. 同期合意の横にある Choose Action メニューを開き、Full Re-Synchronization を選択します。
    再同期は、同期ピアのデータを削除しません。プロセスは、すべての更新を送受信して、新規または変更した Directory Server エントリーを追加します。たとえば、このプロセスは、ntUser オブジェクトクラスが追加される既存の Directory Server ユーザーを追加します。
Web コンソールで同期ステータスを表示するには、以下を実行します。
  1. Replication メニューを開きます。
  2. Winsync Agreements エントリーを選択します。
    同期が正常に完了すると、Web コンソールは Last Update Status 列に Error (0) Replica acquired successfully: Incremental update succeeded メッセージを表示します。

16.11.3. 同期スケジュールの設定

同期は 2 つの方法で機能します。Directory Server は、nsds5replicaupdateschedule 属性を使用して、レプリケーションと同様に設定可能なスケジュールの Active Directory に更新を適用します。Directory Server は Active Directory をポーリングして変更の有無 (Active Directory サーバーが winSyncInterval 属性に設定されている頻度) を確認します。
デフォルトでは、Directory Server の更新スケジュールは常に同期されます。Active Directory の間隔は、5 分ごとに Active Directory をポーリングする間隔です。
Directory Server が更新を Active Directory に送信するために使用するスケジュールを変更するには、nsds5replicaupdateschedule 属性を編集します。スケジュールは、24 時間クロックを使用して HHMM 形式の開始 (SSSS) および終了 (EEEE) 時間で設定されます。同期の更新スケジュールを設定する日は、0 (日曜日) から 6 (土曜日) までです。
nsds5replicaupdateschedule: SSSS EEEE DDDDDDD
たとえば、日曜日、火曜日、木曜日、土曜日の正午から午後 2 時まで同期を実行するようにスケジュールを設定します。
nsds5replicaupdateschedule: 1200 1400 0246
注記
同期時間は真夜中を含むことはできないため、設定 2300 0100 は有効ではありません。
Directory Server が Active Directory エントリーへの変更をチェックする頻度を変更するには、winSyncInterval 属性をリセットします。この属性は秒単位で設定されるため、デフォルトの 300 は、Directory Server が Active Directory サーバーを 300 秒または 5 分間隔でポーリングすることを意味します。これを高い値に設定すると、ディレクトリーの検索に時間がかかり、パフォーマンスに影響する場合に便利です。
winSyncInterval: 1000

16.11.4. 同期接続の変更

同期合意について接続の 2 つの側面を変更することができます。
  • バインドユーザー名およびパスワード (nsDS5ReplicaBindDN および nsDS5ReplicaCredentials)
  • 接続方法 (nsDS5ReplicaTransportInfo)。
    nsDS5ReplicaTransportInfoLDAP から StartTLS に (その逆も) しか変更できません。LDAPS への変更、または LDAPS からの変更はポート番号を変更することができないため、LDAP と LDAPS の切り替えにはポート番号の変更が必要となります。
以下に例を示します。
nsDS5ReplicaBindDN: cn=sync user,cn=Users,dc=ad1
nsDS5ReplicaCredentials: {DES}ffGad646dT0nnsT8nJOaMA==
nsDS5ReplicaTransportInfo: StartTLS
警告
Active Directory 同期ピアのポート番号を変更することはできません。そのため、標準ポートとセキュアでないポートの間で変更する必要があるため、標準/STARTTLS 接続と TLS 接続を切り替えることはできません。
TLS に変更するには、同期合意を削除し、更新されたポート番号と新しいトランスポート情報を再度追加します。

16.11.5. 同期しているサブツリーから移動するエントリーの処理

同期合意は、Active Directory と Directory Server の両方において、またその 2 つの間で同期するサブツリーを定義します。スコープ のエントリー (サブツリー) が同期され、他のエントリーは無視されます。
ただし、同期プロセスは実際にルート DN で開始し、同期のエントリーの評価を開始します。エントリーは、Active Directory の samAccount と Directory Server の uid 属性に基づいて相関します。同期プラグインは、(samAccount/uid 関係に基づいて) エントリーが削除または移動されたために、同期されたサブツリーから削除された場合、その旨を通知します。これは、同期プラグインに対して、そのエントリーがもう同期されないことを示す信号です。
この問題は、同期プロセスで、移動したエントリーの処理方法を決定するための設定が必要となることです。対応するエントリーの削除、エントリー (デフォルト) の無視、またはエントリーの同期解除を 3 つのオプションがあります。
注記
これらの同期アクションは、Active Directory 側でエントリーが範囲外に移動した場合の Directory Server 側での 処理方法にのみ関連しています。エントリーが Directory Server 側で同期されたサブツリーからエントリーを移動しても、Active Directory エントリーには影響はありません。
Directory Server 9.0 のデフォルトの動作では、対応する Directory Server エントリーが削除されるようになりました。これは、Active Directory 側のエントリーが Directory Server 側に同期されていなかった場合でも該当します。Directory Server 9.1 以降、デフォルトの動作ではエントリーを無視して、何も実行しません。
たとえば、samAccount ID が jsmith のユーザーは、Active Directory の ou=Employees サブツリーに作成されています。同期されたサブツリーは ou=Users であるため、jsmith ユーザーは Directory Server に同期されませんでした。

図16.4 Active Directory ツリー

Active Directory ツリー
バージョン 7.x および 8.x の Directory Server では、そのユーザーは同期されたサブツリーの外にあったため、同期は単にそのユーザーを無視していました。
Directory Server 9.0 以降、Directory Server はサブツリーの名前変更をサポートします。つまり、既存のエントリーはディレクトリーツリーのブランチ間で移動できるようになりました。同期プラグインは、Active Directory ツリーの中で、Directory Server のユーザー (samAccount/uid 関係) に対応し、同期サブツリーの外にあるエントリーを、意図的に 同期サブツリーの外に移動させることを前提としています (基本的には名前の変更操作)。対応する Directory Server エントリーを削除する必要があることを前提とします。

図16.5 Active Directory と Directory Server ツリーの比較

Active Directory と Directory Server ツリーの比較
この仮定は必ずしも正確なものではなく、特に同期サブツリーの外側に常に存在するユーザーエントリーの場合は注意が必要です。
同期合意の winSyncMoveAction 属性は、これらの移動したエントリーの処理方法を設定します。
  • none は何もしないため、同期した Directory Server エントリーが存在する場合は、同期するか、スコープ に Active Directory エントリーを作成したりできます。同期された Directory Server エントリーが存在しない場合は、何も起こりません (Directory Server バージョン 9.1 以降では、これがデフォルトの動作です)。
  • unsync は、Directory Server エントリーから同期関連の属性 (ntUser または ntGroup) を削除しますが、Directory Server エントリーはそのまま残されます。
    重要
    エントリーの同期を解除すると、Active Directory のエントリーが後から削除され、Directory Server のエントリーがそのまま残ってしまう危険性があります。これにより、特に Active Directory 側でエントリーを再作成するのに Directory Server エントリーを使用する場合などに、データが不整合になる可能性があります。
  • delete は、Active Directory と同期していたかどうかに関わらず、Directory Server で該当するエントリーを削除します (これは 9.0 のデフォルト動作です)。
    重要
    対応する Active Directory エントリーを削除せずに Directory Server エントリーを削除することはありません。このオプションは、Directory Server 9.0 システムとの互換性でのみ利用できます。
デフォルトを変更する必要がある場合:
# dsconf -D "cn=Directory Manager" ldap://server.example.com repl-winsync-agmt --move-action="action" --suffix="suffix" agreement_name