22 プロキシを使用した分散の構成

プロキシdsconfigまたはOracle Unified Directory Services Manager (OUDSM)を使用して分散を構成することを選択できます。

ノート:

場合によっては、dsconfigまたはOracle Unified Directory Services Manager (OUDSM)を使用した分散の構成を選択できます。

クライアント・リクエストをリモートLDAPサーバーに分散を使用して転送するには、プロキシ・サーバーに次のコンポーネントを構成する必要があります。

  • 分散ワークフロー要素

  • 分散アルゴリズム

  • 1つ以上の分散パーティション(通常はリモートLDAPサーバーごとに1つ)

1つの分散ワークフロー要素には、データの分散方法が定義される分散アルゴリズムを1つのみ設定できます。1つの分散アルゴリズムで、複数のパーティションを使用できます。

ノート:

分散の詳細は、「プロキシを使用したデータ分散の概要」を参照してください。

22.1 dsconfigコマンドを使用した分散デプロイメントの構成

dsconfigコマンドを使用して、分散デプロイメントを構成し、分散ワークフロー要素、アルゴリズムおよびパーティションを作成できます。

22.1.1 dsconfigコマンドを使用した分散の構成

dsconfigコマンドを使用して分散を構成するには、分散デプロイメントを設定する必要があります。

設定時の分散デプロイメントの設定の詳細は、『Oracle Unified Directoryのインストール』単純な分散の構成に関する項を参照してください。

次の各プロシージャで使用するすべてのコマンドで、プロキシ・ホスト名(-h)、プロキシ管理ポート(-p)、バインドDN(-D)およびバインド・パスワード・ファイル(-j)が指定されます。各例では、すべての証明書を信頼するために-Xオプションも使用されます。

  1. 分散ワークフロー要素を作成します。

    「分散ワークフロー要素の作成」を参照してください。

  2. 分散アルゴリズムを作成します。

    「分散アルゴリズムの作成」を参照してください。

  3. パーティション化されたデータのチャンクごとに1つのパーティションを作成します。1つのパーティションを1つのリモートLDAPサーバーに、またはレプリケートされた複数のリモートLDAPサーバーの1つのセットに関連付ける必要があります。

22.1.2 分散ワークフロー要素の作成

分散を構成するには、dsconfig create-workflow-elementコマンドを使用して、分散ワークフロー要素を作成する必要があります。

例:

$ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
  create-workflow-element \
  --element-name distrib-we \
  --type distribution \
  --set enabled:true \
  --set base-dn:ou=people,dc=example,dc=com

分散ワークフロー要素を作成するには、タイプをdistributionにする必要があります。ワークフロー要素の名前は、element-nameで定義され、この例ではdistrib-weです。

ノート:

前述のように、create-workflow-elementサブコマンドを使用してbase-dnを宣言する場合、必ず完全なツリー構造を指定してください。

構成の分散要素を完成するには、分散アルゴリズムおよび適切なパーティションを作成します。

22.1.3 分散アルゴリズムの作成

分散デプロイメントで、リクエストが転送される方法を指定するには、分散アルゴリズムを構成する必要があります。アルゴリズム・セットによって、データをパーティション化する方法およびリクエストの送信先のパーティションが指定されます。

使用可能な分散タイプは、numericlexicoまたはdnpatternです。

分散アルゴリズムを作成するには、分散ワークフロー要素が必要です。「分散ワークフロー要素の作成」を参照してください。

dsconfig create-distribution-algorithmコマンドを使用して、分散アルゴリズムを作成します。たとえば:

$ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
  create-distribution-algorithm \
  --element-name distrib-we \
  --type numeric \
  --set distribution-attribute:uid

ワークフロー要素の名前は、element-nameで定義され、この例ではdistrib-weです。分散アルゴリズムのタイプをcapacitynumericlexicoまたはdnpatternに設定する必要があります。設定するプロパティは、アルゴリズム・タイプによって異なります。この例では、アルゴリズム・タイプがnumericであるため、distribution-attributeを設定する必要があります。

22.1.4 分散パーティションの作成

dsconfig create-distribution-partitionを使用して分散パーティションを作成できます。分散パーティションを作成する前に、分散ワークフロー要素および分散アルゴリズムを作成しておく必要があります。

22.1.4.1 capacity分散パーティションの作成

capacity分散パーティションを作成するには、分散ワークフロー要素および分散アルゴリズムを作成しておく必要があります。データ・セットごとに1つの分散パーティションを作成する必要があります。

分散パーティションを作成するには、dsconfig create-distribution-partitionコマンドを使用します。たとえば:

$ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
  create-distribution-partition \
  --element-name distrib-we \
  --partition-name distrib-partition1 \
  --type capacity \
  --set partition-id:1 \
  --set workflow-element: proxy-we1 \
  --set max-entries:1000

ノート:

容量ベースのアルゴリズムを使用する場合は、グローバル索引カタログを作成して、DNに索引を付ける必要があります。グローバル索引カタログを作成するには、「グローバル索引が含まれるグローバル索引カタログの作成」を参照してください。

分散パーティションは、パーティション名(この例ではdistrib-partition1)とパーティションIDの両方で識別されます。パーティションIDは、グローバル索引カタログ参照で使用されることになるため、簡単な整数にする必要があります。タイプは、関連付けられている分散アルゴリズムで定義されているものと同じにする必要があり、ここではcapacityです。

分散パーティションを作成する場合、パーティションを管理する既存の分散ワークフロー要素の名前(element-name、ここではdistrib-we)、およびLDAPワークフロー要素などワークフロー内の次の要素の名前(workflow-element、この例ではproxy-we1)も指定する必要があります。プロキシ・ワークフロー要素によって、リモートLDAPサーバー上のデータへのアクセスに使用されるパスが指定されます。プロキシの詳細は、「リモートLDAPサーバーとの通信の構成」を参照してください。

capacity分散パーティションを作成する場合、パーティションで保持可能なエントリの最大数を指定する必要があります(たとえば、1000)。

22.1.4.2 lexicoまたはnumeric分散パーティションの作成

辞書編集分散と数値分散はよく似ており、辞書編集分散または数値分散の分散パーティションを作成する場合は同じプロパティを設定します。データ・セットごとに1つの分散パーティションを作成する必要があります。

lexicoまたはnumeric分散パーティションを作成するには、分散ワークフロー要素および分散アルゴリズムを作成しておく必要があります。

分散パーティションを作成するには、dsconfig create-distribution-partitionコマンドを使用します。数値分散の例として、次のようなパーティションを作成する場合があります:

$ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
  create-distribution-partition \
  --element-name distrib-we \
  --partition-name distrib-partition1 \
  --type numeric \
  --set partition-id:1 \
  --set workflow-element: proxy-we1 \
  --set lower-bound:1000 \
  --set upper-bound:2000 

分散パーティションは、パーティション名(この例ではdistrib-partition1)とパーティションIDの両方で識別されます。パーティションIDは、グローバル索引カタログ参照で使用されることになるため、簡単な整数にする必要があります。タイプは、関連付けられている分散アルゴリズムで定義されているものと同じにする必要があり、ここではnumericです。

分散パーティションを作成するために、既存の分散ワークフローの名前(ここではdistrib-we)、およびLDAPワークフロー要素などの関連付けられているワークフロー要素の名前(この例ではproxy-we1)も指定する必要があります。プロキシ・ワークフロー要素によって、リモートLDAPサーバー上のデータへのアクセスに使用されるパスが指定されます。プロキシの詳細は、「リモートLDAPサーバーとの通信の構成」を参照してください。

lexicoまたはnumeric分散パーティションを作成する場合、パーティションの下限と上限を指定する必要があります。プロキシによって、どの2つのパーティションの範囲にも、重なりがないことが確認されます。つまり、パーティション1の下限と上限を1000-3000に設定して、パーティション2の下限と上限を2000-4000に設定することはできません。

上限値自体は含まれません。つまり、前述の例では、パーティション化されるデータは1000から1999までの値のみになります。上限または下限を無制限にする場合は、キーワードunlimitedを使用します。

設定するプロパティ(この例では下限と上限)は、作成した分散のタイプに関連します。アルゴリズム・タイプに関連した、パーティションのプロパティの詳細は、「dsconfigコマンドを使用した分散デプロイメントの作成」を参照してください。

ノート:

なお、辞書編集分散アルゴリズムの場合、使用されるソート・シーケンスはASCIIです。

22.1.4.3 dnpattern分散パーティションの作成

dnpattern分散パーティションを作成する前に、分散ワークフロー要素および分散アルゴリズムを作成しておく必要があります。

dnpattern分散パーティションを作成するには、dsconfig create-distribution-partitionコマンドを使用します。たとえば:

$ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
  create-distribution-partition \
  --element-name distrib-we \
  --partition-name distrib-partition5 \
  --type dnpattern \
  --set partition-id:5 \
  --set workflow-element: proxy-we1 \
  --set dn-pattern:uid=[0-9]*[01].* 

分散パーティションは、パーティション名(この例ではdistrib-partition5)とパーティションIDの両方で識別されます。パーティションIDは、グローバル索引カタログ参照に使用されるため、簡単な整数にします。分散パーティションを作成するために、既存の分散ワークフローの名前(ここではdistrib-we)、およびLDAPプロキシなど関連付けられているワークフロー要素の名前(この例ではproxy-we1)も指定する必要があります。タイプは、関連付けられている分散アルゴリズムで定義されているものと同じにする必要があり、ここではdnpatternです。

dnpatternアルゴリズムを使用する分散シナリオでは、リクエストは、分散ベースDNより下位のリクエストRDNがDN文字列パターンに一致した場合にパーティションに送信されます。たとえば、分散ベースDNがou=people,dc=example,dc=comで、リクエスト・ベースDNがuid=1,ou=people,dc=example,dc=comの場合、文字列パターンに対するチェックはRDN uid=1で実行されます。

同様に、分散ベースDNがou=people,dc=example,dc=comで、リクエスト・ベースDNがuid=1,ou=region1,ou=people,dc=example,dc=comの場合、文字列パターンに対するチェックは、RDN uid=1,ou=region1で実行されます。

22.1.4.4 DNパターン文字列構文について

DN文字列パターンは、DN構文およびJava Patternクラスのサブセットに準拠する必要があります。

DNパターン文字列 説明

.

任意の文字

\\

バックスラッシュ

\t

タブ文字

[abc]

a、bまたはc

[^abc]

a、bまたはcを除く任意の文字

[a-zA-Z]

aからzまたはAからZ、範囲指定に使用する文字も含む(範囲)

[a-d[m-p]]

aからd、またはmからp(和集合)

[a-z&&[def]]

d、eまたはf(積集合)

[a-z&&[^bc]]

aからzのうち、bおよびcを除く(減算)

[A-Z&&[^M-P]]

aからzのうち、mからpを除く(減算)

次の数量詞を使用できます:

DNパターンの数量詞 説明

X?

X、1回または0回

X*

X、0回以上

X+

X、1回以上

X{n}

X、n回

X{n,}

X、n回以上

X{n,m}

X、n回以上m回以下

22.1.4.5 DNパターンnegative-matchの使用

negative-matchという分散プロパティを使用して、一致する必要のあるDNパターンに反するものを指定できます。つまり、無視するDNパターンを指定します。指定したDNパターンに一致しない値が分散されます。デフォルトで、negative-matchプロパティは、falseに設定されます。

次のように、negative-matchを使用して、dnpattern分散パーティションを作成します:

$ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
  create-distribution-partition \
  --element-name distrib-we \
  --partition-name distrib-partition5 \
  --type dnpattern \
  --set partition-id:5 \
  --set workflow-element: proxy-we1 \
  --set dn-pattern:uid=[123]*[0-9].* \
  --set negative-match:true

この例では、negative-matchtrueに設定されているため、1、2または3で開始して、n個の文字が続くもの以外のuidについてのリクエストはすべて、対象のパーティションに転送されます。

22.1.5 DNの変更リクエストの管理

新規エントリが元のエントリと同じパーティションに留まるようDNを変更できます。デフォルトで、プロキシでは現行パーティションの範囲外の値にDNを変更することは許可されません。

modifyDNリクエストで、エントリが配置されているパーティションの境界外の値にDNを変更できるようにするには、force-modify-dnフラグをtrueに設定します。

たとえば、uidの境界が0-999のパーティション1と、uidの境界が1000-1999のパーティション2があるとします。force-modify-dnフラグをtrueに設定して、特定のエントリのuid1から1001に変更すると、変更は許可されますが、uid1001のそのエントリはパーティション1に留まります。このエントリがパーティション2に移動されることはありません。

uid=1001を検索すると、サーバーは、そのようなエントリは見つからないというエラーを返します。エントリの位置を特定するには、グローバル索引カタログを使用する必要があります。これによって、変更されているエントリが常に見つかります。グローバル索引カタログを構成するには、「コマンド行を使用したグローバル索引の構成」を参照してください。

DN変更操作を強制実行するには、次のように、force-modify-dnフラグをtrueに設定します:

$ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
  --advanced set-workflow-element-prop --element-name distrib-we \
  --set force-modify-dn:true

22.1.6 dsconfigを使用したワークフローのクリティカル度の構成

クリティカル度の構成によって、検索操作が失敗したときのサーバーの動作が指定されます。クリティカル度は検索リクエストにのみ適用されます。その他のリクエストはすべてサーバーによって通常どおりに処理されます。

クリティカル度は、ワークフロー・レベルでクリティカル度フラグを設定することによって構成できます。ワークフローで検索リクエストを実行するときに、下位ワークフローがある場合は、いくつかのワークフローでそのリクエストが実行されます。ワークフローのクリティカル度の設定は、次のいずれかになります:

  • true

    これはデフォルト設定で、対象のワークフローをクリティカルであると見なすことを示します。特定のワークフローで結果を返すことに失敗した場合、その他のワークフローでの操作の実行が成功したかどうかにかかわらず、処理は停止します。

  • false

    この設定は、対象のワークフローが非クリティカルであることを示します。クリティカル度の設定がfalseの場合、特定のワークフローでの操作実行の失敗は全体的な結果にとってクリティカルではないことがサーバーに伝えられます。非クリティカルのワークフローが結果を返すことに失敗した場合、サーバーでは単にその結果が省略され(ワークフローが何もデータを返さなかったかのように)、クライアントに成功の結果コードを返し、エラーが示されることはありません。

  • Partial

    この設定は、対象のワークフローが部分的にクリティカルであることを示します。これは、結果の一部が取得されたことをアプリケーションからアプリケーションのユーザーに通知できることを意味します。たとえば、完全に飽和したことや無効になっていることによって、部分的にクリティカルなパーティションが結果を返すことに失敗した場合、サーバーはAdmin Limit Exceededエラーを返します。これは、実際の内容とは異なるエラーですが、この設定の目的は、クライアント・アプリケーションのロジックによって、表示されている結果が全体の一部にすぎないことが示されることです。

ワークフローのクリティカル度を設定するには、dsconfig set-workflow-propコマンドを使用します。たとえば、次のコマンドでは、workflow-1という名前のワークフローのクリティカル度がtrueに設定されます。

$ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
  set-workflow-prop --workflow-name workflow-1 \
  --set criticality:true

22.1.7 dsconfigを使用したワークフロー要素のクリティカル度の構成

分散デプロイメントでは、クリティカル度構成によって、ホスト・エラーによって検索操作が失敗したときのサーバーの動作を指定します。クリティカル度は検索リクエストにのみ適用されます。その他のリクエストはすべてサーバーによって通常どおりに処理されます。

クリティカル度は、分散ワークフロー要素の分散パーティションごとに構成されます。分散パーティションのクリティカル度の設定は、次のいずれかになります:

  • true

    これはデフォルト設定で、対象のパーティションをクリティカルであると見なすことを示します。たとえば、完全に飽和したことや無効になっていることによって、特定のパーティションが結果を返すことに失敗した場合、データが他のパーティションで見つかったかどうかにかかわらず、サーバーは使用不可のエラーをクライアントに返します。

  • false

    この設定は、対象のパーティションが非クリティカルであることを示します。クリティカル度の設定がfalseの場合、特定のパーティションでの操作実行の失敗は全体的な結果にとってクリティカルではないことがサーバーに伝えられます。たとえば、完全に飽和したことや無効になっていることによって、非クリティカルのパーティションが結果を返すことに失敗した場合、サーバーでは単にその結果が省略され(パーティションが何もデータを返さなかったかのように)、クライアントに成功の結果コードを返し、エラーが示されることはありません。

  • Partial

    この設定は、対象のパーティションが部分的にクリティカルであることを示します。これは、結果の一部が取得されたことをアプリケーションからアプリケーションのユーザーに通知できることを意味します。たとえば、完全に飽和したことや無効になっていることによって、部分的にクリティカルなパーティションが結果を返すことに失敗した場合、サーバーはAdmin Limit Exceededエラーを返します。これは、実際の内容とは異なるエラーですが、この設定の目的は、クライアント・アプリケーションのロジックによって、表示されている結果が全体の一部にすぎないことが示されることです。

分散ワークフロー要素を除くすべてのタイプのワークフロー要素について、クリティカル度は暗黙的であり、次のように処理されます:

  • ロード・バランシング: すべてのルートが非クリティカルと見なされます。1つのルートが機能しない場合、それがロード・バランサで選択ルートの決定に考慮されることはないためです。

  • LDAPプロキシ・ワークフロー要素: LDAPサーバーは常にクリティカルと見なされます。

  • ローカル・バックエンド・ワークフロー要素: ローカル・バックエンド・サーバーは常にクリティカルと見なされます。

分散パーティションのクリティカル度を設定するには、dsconfig set-distribution-partition-propコマンドを使用します。たとえば、次のコマンドでは、distrib-partition-1という名前のパーティションのクリティカル度がtrueに設定されます。

$ dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -j pwd-file -X -n \
  set-distribution-partition-prop --element-name distrib-we \
  --partition-name distrib-partition-1 --set criticality:true

22.1.8 分散構成の削除

分散構成は分散ワークフロー要素を削除することによって削除できます。

分散ワークフロー全体(ワークフロー要素、アルゴリズムおよびパーティションを含む)を削除するために必要な処理は、分散ワークフロー要素の削除のみです。分散ワークフロー要素を削除すると、関連付けられている分散アルゴリズムおよびパーティションは通知なしに削除されます。

22.2 OUDSMを使用した分散デプロイメントの構成

ロード・バランシングや分散を構成せずにプロキシ・サーバーを設定した場合は、OUDSMによって分散を構成できます。ワークフローのクリティカル度は、OUDSMを使用することによって構成できます。

次の各トピックでは、OUDSMを使用して分散とワークフローにおけるクリティカル度を構成する方法について説明します。

22.2.1 OUDSMを使用した分散の構成

ロード・バランシングまたは分散を構成せずにプロキシ・サーバー・インスタンスを設定した場合は、OUDSMを使用して分散を構成できます。開始する前に、分散デプロイメントを構成しているコンポーネントについて理解しておくと便利です。

OUDSMを使用して分散を構成するには:

  1. 「OUDSMを使用したサーバーへの接続」の説明に従って、OUDSMからプロキシ・サーバーに接続します。
  2. 「ホーム」タブを選択します。
  3. 「構成」項目の「ディストリビュータの設定」を選択します。
  4. 「分散: データのパーティション化」画面で、次の情報を入力します:
    • 「パーティション数」を選択します。

    • 「分散アルゴリズム」を選択します。使用可能な分散アルゴリズムの詳細は、「プロキシを使用したデータ分散の概要」を参照してください。

    • この分散デプロイメントで対応する「ネーミング・コンテキスト」、つまり接尾辞を入力します。

    • 分散を構成する「ネットワーク・グループ」を選択します。

    • 選択した分散アルゴリズムに応じて、各パーティションの容量、DNパターンまたは境界を入力します。

  5. すべてのパーティション詳細を入力したら、「次」をクリックして続行します。
  6. 「分散: サーバー・パーティション」で、パーティションごとに「追加」をクリックして、パーティション化されたデータを保持する各バックエンドLDAPサーバーの接続詳細を入力します。

    OUDSMでは、アクセス可能かどうかを確認するために、これらのバックエンドLDAPサーバーへの接続が試行されます。接続試行が失敗した場合、それでもそのサーバー詳細を使用するか、それとも接続詳細を確認するかを尋ねるプロンプトが表示されます。

  7. 必要なサーバーについてすべて追加したら、「次」をクリックして続行します。
  8. 「分散: グローバル索引」画面で、グローバル索引の詳細を指定します。グローバル索引の詳細は、「グローバル索引カタログの理解」を参照してください。
  9. グローバル索引を構成したら、「次」をクリックして続行します。
  10. 「分散: サマリー」画面で、分散構成を確認し、「終了」をクリックして構成を完了します。

分散を構成した後は、OUDSMの「構成」タブで構成の任意の側面を変更できます。

詳細は、「構成2: 単純な分散」を参照してください。

22.2.2 OUDSMを使用したワークフローのクリティカル度の構成

クリティカル度フラグという新規のパラメータを追加して、ワークフローを構成します。デフォルトで、クリティカル度フラグはTrueに設定されます。

次の各項では、OUDSMを使用してワークフローのクリティカル度を構成する方法について説明します。dsconfigを使用したクリティカル度の構成の詳細は、「dsconfigを使用したワークフローのクリティカル度の構成」を参照してください。

OUDSMを使用してワークフローのクリティカル度を構成するには:

  1. 「OUDSMを使用したサーバーへの接続」の説明に従って、OUDSMからプロキシ・サーバーに接続します。
  2. 「構成」タブを選択します。
  3. 「コア構成」ビューを選択します。
  4. 「ワークフロー」要素で、クリティカル度フラグを設定する、目的のワークフローを選択します。
  5. ワークフローに設定するクリティカル度の値(True、FalseまたはPartial)を選択します。たとえば、選択したワークフロー要素にクリティカル度を設定するには、「True」をクリックします。

    図22-1 クリティカル度フラグ

    図22-1の説明が続きます
    「図22-1 クリティカル度フラグ」の説明