15.3. マルチサプライヤーのレプリケーション


マルチサプライヤーレプリケーションシナリオでは、ディレクトリーデータのサプライヤーコピーが複数の読み取り/書き込みレプリカに保存されます。これらのサーバーはそれぞれ、読み取り/書き込みレプリカの changelog を維持します。Directory Server は、レプリケーショントポロジーでサプライヤーを最大 20 台サポートします。
注記
マルチサプライヤーレプリケーション環境のそれぞれのサプライヤーは、自動的にコンシューマーです。
以下の図は、2 つのサプライヤーを持つマルチサプライヤーレプリケーション環境を示しています。

図15.2 2 つのサプライヤーを持つマルチサプライヤーレプリケーション

2 つのサプライヤーを持つマルチサプライヤーレプリケーション
複雑な環境では、レプリケーショントポロジーには複数の読み取り/書き込みサプライヤーと読み取り専用コンシューマーが含まれることがよくあります。以下の図は、各サプライヤーが 2 つの他のサプライヤーと 8 つのコンシューマーにデータを複製するために 10 個のレプリカ合意で設定されたトポロジーを示しています。

図15.3 4 つのサプライヤーと 8 つのコンシューマーを持つ複雑なレプリケーションシナリオ

4 つのサプライヤーと 8 つのコンシューマーを持つ複雑なレプリケーションシナリオ
注記
レプリケーション速度は、以下に依存します。
  • ネットワークの速度。
  • 送信および受信のレプリカ合意の数。
コマンドラインまたは Web コンソールを使用して、マルチサプライヤーレプリケーショントポロジーを設定します。参照:

15.3.1. コマンドラインを使用したマルチサプライヤーレプリケーションの設定

以下の例では、既存の Directory Server インスタンスが supplier1.example.com という名前のホストで実行されていることを前提としています。以下の手順では、supplier2.example.com という名前の別の読み取り/書き込みレプリカをトポロジーに追加する方法と、dc=example,dc=com 接尾辞のマルチサプライヤーレプリケーションを設定する方法を説明します。

参加する新しいサーバーの準備

supplier2.example.com ホスト:
  1. Directory Server をインストールして、インスタンスを作成します。詳細は、Red Hat Directory Server インストールガイド を参照してください。
  2. データベースなしでインスタンスを作成した場合には、接尾辞のデータベースを作成します。たとえば、dc=example,dc=com 接尾辞に userRoot という名前のデータベースを作成するには、以下のコマンドを実行します。
    # dsconf -D "cn=Directory Manager" ldap://supplier2.example.com backend \
        create --suffix="dc=example,dc=com" --be-name="userRoot"
    接尾辞のデータベース作成に関する詳細は、「接尾辞の作成」を参照してください。
  3. 接尾辞のレプリケーションを有効にし、レプリケーションマネージャーアカウントを作成します。
    # dsconf -D "cn=Directory Manager" ldap://supplier2.example.com replication \
        enable --suffix="dc=example,dc=com" --role="supplier" --replica-id=1 \
        --bind-dn="cn=replication manager,cn=config" --bind-passwd="password"
    このコマンドは、supplier2.example.com ホストを dc=example,dc=com 接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を 1 に設定します。さらに、サーバーは指定のパスワードで cn=replication manager,cn=config ユーザーを作成し、このアカウントがこのホストに接尾辞の変更を複製することができます。
    重要
    トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は 1 から 65534 の間の一意の整数である必要があります。

既存のサーバーをサプライヤーに設定

supplier1.example.com ホスト:
  1. 参加する新しいサーバーで実行したコマンドと同様に、dc=example,dc=com 接尾辞のレプリケーションを有効にし、レプリケーションマネージャーアカウントを作成します。
    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com replication \
        enable --suffix="dc=example,dc=com" --role="supplier" --replica-id=2 \
        --bind-dn="cn=replication manager,cn=config" --bind-passwd="password"
    レプリカ ID は、「参加する新しいサーバーの準備」で作成されるものとは異なるものでなければなりませんが、レプリケーションマネージャーアカウントは同じ DN を使用できます。
  2. レプリカ合意を追加し、新しいサーバーを初期化します。以下に例を示します。
    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com repl-agmt \
         create --suffix="dc=example,dc=com" --host="supplier2.example.com" --port=636 \
         --conn-protocol=LDAPS --bind-dn="cn=replication manager,cn=config" \
         --bind-passwd="password" --bind-method=SIMPLE --init \
         example-agreement-supplier1-to-supplier2
    このコマンドは、example-agreement-supplier1-to-supplier2 という名前のレプリカ合意を作成します。レプリカ合意は、コンシューマーへのデータの接続や複製時にサプライヤーが使用するコンシューマーのホスト名、プロトコル、認証情報などの設定を定義します。
    この合意の作成後、Directory Server はコンシューマーを初期化します。後ほどコンシューマーを初期化する場合は、--init オプションを省略します。コンシューマーを初期化する前にレプリケーションが起動しないことに注意してください。コンシューマーの初期化の詳細は、「コンシューマーの初期化」を参照してください。
    コマンドで使用するオプションの詳細は、以下を入力します。
    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com repl-agmt --help
  3. 初期化が成功したかどうかを確認します。
    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com repl-agmt \
         init-status --suffix="dc=example,dc=com" example-agreement-supplier1-to-supplier2
    Agreement successfully initialized.
    複製するデータ量によっては、初期化に時間がかかる場合があります。

新しいサーバーをサプライヤーに設定

supplier2.example.com ホスト:
警告
「既存のサーバーをサプライヤーに設定」 で説明されているように、既存のサーバーで接尾辞 dc=example,dc=com を初期化していない場合は、続行しないでください。それ以外の場合は、新規サーバーの空のデータベースは、既存のサプライヤーのデータベースを上書きします。
  • supplier 2 から supplier 1 に情報を複製する複製合意を追加します。以下に例を示します。
    # dsconf -D "cn=Directory Manager" ldap://supplier2.example.com repl-agmt \
         create --suffix="dc=example,dc=com" --host="supplier1.example.com" --port=636 \
         --conn-protocol=LDAPS --bind-dn="cn=replication manager,cn=config" \
         --bind-passwd="password" --bind-method=SIMPLE \
         example-agreement-supplier2-to-supplier1
    このコマンドは、example-agreement-supplier2-to-supplier1 という名前のレプリカ合意を作成します。レプリカ合意は、コンシューマーへのデータの接続や複製時にサプライヤーが使用するコンシューマーのホスト名、プロトコル、認証情報などの設定を定義します。

15.3.2. Web コンソールを使用したマルチサプライヤーレプリケーションの設定

以下の例では、既存の Directory Server インスタンスが supplier1.example.com という名前のホストで実行されていることを前提としています。以下の手順では、supplier2.example.com という名前の別の読み取り/書き込みレプリカをトポロジーに追加する方法と、dc=example,dc=com 接尾辞のマルチサプライヤーレプリケーションを設定する方法を説明します。

参加する新しいサーバーの準備

supplier2.example.com ホスト:
  1. Directory Server をインストールして、インスタンスを作成します。詳細は、Red Hat Directory Server インストールガイド を参照してください。
  2. Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
  3. インスタンスを選択します。
  4. データベースなしでインスタンスを作成した場合は、接尾辞からデータベースを作成します。接尾辞のデータベース作成に関する詳細は、「接尾辞の作成」を参照してください。
  5. 接尾辞のレプリケーションを有効にします。
    1. Replication メニューを開きます。
    2. dc=example,dc=com 接尾辞を選択し、Enable Replication をクリックします。
    3. Replication Role フィールドで Supplier を選択し、レプリカ ID を入力し、作成するレプリケーションマネージャーアカウントの DN およびパスワードを入力します。以下に例を示します。
      この設定により、supplier2.example.com ホストを dc=example,dc=com 接尾辞のサプライヤーとして設定し、このエントリーのレプリカ ID を 1 に設定します。さらに、サーバーは指定のパスワードで cn=replication manager,cn=config ユーザーを作成し、このアカウントがこのホストに接尾辞の変更を複製することができます。
      重要
      トポロジー内のすべてのサプライヤーの接尾辞については、レプリカ ID は 1 から 65534 の間の一意の整数である必要があります。
    4. Enable Replication をクリックします。

既存のサーバーをサプライヤーに設定

supplier1.example.com ホスト:
  1. Web コンソールで Directory Server ユーザーインターフェイスを開きます。「Web コンソールを使用した Directory Server へのログイン」を参照してください。
  2. インスタンスを選択します。
  3. 参加する新規サーバーの設定と同様に、dc=example,dc=com 接尾辞のレプリケーションを有効にし、レプリケーションコントローラーアカウントを作成します。
    1. Replication メニューを開きます。
    2. dc=example,dc=com 接尾辞を選択し、Enable Replication をクリックします。
    3. Replication Role フィールドで Supplier を選択し、レプリカ ID を入力し、作成するレプリケーションマネージャーアカウントの DN およびパスワードを入力します。以下に例を示します。
      レプリカ ID は、「参加する新しいサーバーの準備」で作成されるものとは異なるものでなければなりませんが、レプリケーションマネージャーアカウントは同じ DN を使用できます。
    4. Enable Replication をクリックします。
  4. レプリカ合意を追加し、コンシューマーを初期化します。
    1. Replication メニューを開き、Agreements エントリーを選択します。
    2. Create Replication Agreement をクリックし、フィールドに入力します。以下に例を示します。
      この設定により、example-agreement-supplier1-to-supplier2 という名前のレプリカ合意が作成されます。レプリカ合意は、コンシューマーへのデータの接続や複製時にサプライヤーが使用するコンシューマーのホスト名、プロトコル、認証情報などの設定を定義します。
    3. Consumer Initialization フィールドで Do Online Initialization を選択し、合意の保存後にコンシューマーを自動的に初期化します。
      後でコンシューマーを初期化する場合は、Do Not Initialize を選択します。コンシューマーを初期化する前にレプリケーションが起動しないことに注意してください。コンシューマーの初期化の詳細は、「コンシューマーの初期化」を参照してください。
    4. Save Agreement をクリックします。
  5. 初期化が成功したかどうかを確認します。
    1. Replication メニューを開きます。
    2. Agreements エントリーを選択します。
      初期化が正常に完了したら、Web コンソールの Last Update Status 列に Error (0) Replica acquired successfully: Incremental update succeeded メッセージが表示されます。
      複製するデータ量によっては、初期化に時間がかかる場合があります。

新しいサーバーをサプライヤーに設定

supplier2.example.com ホスト:
警告
「既存のサーバーをサプライヤーに設定」 で説明されているように、既存のサーバーでレプリカ合意を初期化していない場合は、続行しないでください。それ以外の場合は、新規サーバーの空のデータベースは、既存のサプライヤーのデータベースを上書きします。
  1. レプリカ合意を追加し、コンシューマーを初期化します。
    1. Replication メニューを開き、Agreements エントリーを選択します。
    2. Create Replication Agreement をクリックし、フィールドに入力します。以下に例を示します。
      この設定により、example-agreement-supplier2-to-supplier1 という名前のレプリカ合意が作成されます。
    3. Consumer Initialization フィールドで Do Online Initialization を選択し、合意の保存後にコンシューマーを自動的に初期化します。
      後でコンシューマーを初期化する場合は、Do Not Initialize を選択します。コンシューマーを初期化する前にレプリケーションが起動しないことに注意してください。コンシューマーの初期化の詳細は、「コンシューマーの初期化」を参照してください。
    4. Save Agreement をクリックします。
  2. 初期化が成功したかどうかを確認します。
    1. Replication メニューを開きます。
    2. Agreements エントリーを選択します。
      初期化が正常に完了すると、Web コンソールは Last Update Status 列に Error (0) Replica acquired successfully: Incremental update succeeded メッセージを表示します。
      複製するデータ量によっては、初期化に時間がかかる場合があります。

15.3.3. マルチサプライヤーレプリケーションにおけるコンシューマーの独占を防ぐ

マルチサプライヤーレプリケーションの機能の 1 つは、サプライヤーが複製されたエリアのコンシューマーへの排他的アクセスを取得することです。この間、他のサプライヤーは、コンシューマーによる直接通信がロックされます。ロックアウトされた状態でサプライヤーがアクセス権を取得しようとすると、コンシューマーはビジー応答を返し、サプライヤーは数秒間スリープしてから再度アクセスを試みます。更新負荷が低い間に、最初のコンシューマーがロックされたときにサプライヤーが別のコンシューマーに更新を送信し、最初のコンシューマーが再び解放されると更新を送信します。
ロックサプライヤーの更新負荷が高かったり、changelog に多くの保留中の更新があったりすると、問題が発生することがあります。ロックサプライヤーが更新の送信を終了し、送信する保留中の変更が複数ある場合は、直ちにコンシューマーの再取得を試みます。他のサプライヤーは通常スリープ状態であるため、ほとんどの場合、このような試みは成功します。これにより、単一のサプライヤーが数時間またはそれ以上にわたってコンシューマーを独占することになります。
以下の属性は、この問題に対応します。
nsds5ReplicaBusyWaitTime
別のアクセスの取得を試みる前に、コンシューマーがビジー応答を返した後、サプライヤーが待機する時間を秒単位で設定します。
たとえば、別の取得を試みる前に、サプライヤーが 5 秒待機するように設定するには、以下を実行します。
# dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt \
     set --suffix="suffix" --busy-wait-time=5 agreement_name
nsds5ReplicaSessionPauseTime
2 つの更新セッションの間にサプライヤーが待機する時間を秒単位で設定します。nsds5ReplicaBusyWaitTime で指定した値またはそれよりも小さい値を設定すると、Directory Server は、nsds5ReplicaBusyWaitTime で設定した値よりも大きな値である nsds5ReplicaSessionPauseTime パラメーターの値を自動的に使用します。
たとえば、サプライヤーは 2 つの更新セッション間で 10 秒待機するように設定するには、以下を実行します。
# dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt \
     set --suffix="suffix" --session-pause-time=10 agreement_name
nsds5ReplicaReleaseTimeout
更新の送信を終了したかどうか、サプライヤーがレプリカのリリース後のタイムアウトを設定します。これにより、単一サプライヤーがレプリカを独占しなくなります。
たとえば、サプライヤーが大きいレプリケーション環境で 90 秒後にレプリカを解放するように設定するには、以下を実行します。
# dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication \
     set --suffix="suffix" --repl-release-timeout=90
詳細は、Red Hat Directory Server 設定、コマンド、およびファイルリファレンス のパラメーターの説明を参照してください。
レプリカのビジーエラーをログに記録するには、Replication エラーログ (ログレベル 8192) を有効にします。「ログレベルの設定」を参照してください。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.