この章では、分散の構成方法について説明します。
注意: 場合によっては、dsconfig またはOracle Directory Services Manager (ODSM)を使用した分散の構成を選択できます。
|
クライアント・リクエストをリモートLDAPサーバーに分散を使用して転送するには、プロキシ・サーバーに次のコンポーネントを構成する必要があります。
分散ワークフロー要素
分散アルゴリズム
1つ以上の分散パーティション(通常はリモートLDAPサーバーごとに1つ)
1つの分散ワークフロー要素には、データの分散方法が定義される分散アルゴリズムを1つのみ設定できます。1つの分散アルゴリズムで、複数のパーティションを使用できます。
この章の構成は、次のとおりです。
dsconfig
コマンドを使用した分散の構成次の各例は、dsconfig
コマンドを使用して、分散を構成する方法を示しています。設定時の分散デプロイメントの設定の詳細は、Oracle Unified Directoryのインストールの単純な分散の構成に関する項を参照してください。
次の各プロシージャで使用するすべてのコマンドで、プロキシ・ホスト名(-h
)、プロキシ管理ポート(-p
)、バインドDN(-D
)およびバインド・パスワード・ファイル(-j
)が指定されます。各例では、すべての証明書を信頼するために-X
オプションも使用されます。
分散ワークフロー要素を作成します。
第22.1.1項「分散ワークフロー要素の作成」を参照してください。
分散アルゴリズムを作成します。
第22.1.2項「分散アルゴリズムの作成」を参照してください。
パーティション化されたデータのチャンクごとに1つのパーティションを作成します。1つのパーティションを1つのリモートLDAPサーバーに、またはレプリケートされた複数のリモートLDAPサーバーの1つのセットに関連付ける必要があります。
容量ベースの分散の場合は、第22.1.3.1項「capacity
分散パーティションの作成」を参照してください。
辞書編集分散または数値分散の場合は、第22.1.3.2項「lexico
またはnumeric
分散パーティションの作成」を参照してください。
DNパターン・アルゴリズムを使用している場合は、第22.1.3.3項「dnpattern
分散パーティションの作成」を参照してください。
分散を構成するには、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 を宣言する場合、必ず完全なツリー構造を指定してください。 |
構成の分散要素を完成するには、分散アルゴリズムおよび適切なパーティションを作成します。
分散デプロイメントで、リクエストが転送される方法を指定するには、分散アルゴリズムを構成する必要があります。アルゴリズム・セットによって、データをパーティション化する方法およびリクエストの送信先のパーティションが指定されます。使用可能な分散タイプは、numeric
、lexico
またはdnpattern
です。
分散アルゴリズムを作成するには、分散ワークフロー要素が必要です。第22.1.1項「分散ワークフロー要素の作成」を参照してください。
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
です。分散アルゴリズムのタイプをcapacity
、numeric
、lexico
またはdnpattern
に設定する必要があります。設定するプロパティは、アルゴリズム・タイプによって異なります。この例では、アルゴリズム・タイプがnumeric
であるため、distribution-attribute
を設定する必要があります。
次のタイプの分散パーティションを作成できます:
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に索引を付ける必要があります。グローバル索引カタログを作成するには、第23.7.1.1項「グローバル索引が含まれるグローバル索引カタログの作成」を参照してください。 |
分散パーティションは、パーティション名(この例ではdistrib-partition1
)とパーティションIDの両方で識別されます。パーティションIDは、グローバル索引カタログ参照で使用されることになるため、簡単な整数にする必要があります。タイプは、関連付けられている分散アルゴリズムで定義されているものと同じにする必要があり、ここではcapacity
です。
分散パーティションを作成する場合、パーティションを管理する既存の分散ワークフロー要素の名前(element-name
、ここではdistrib-we
)、およびLDAPワークフロー要素などワークフロー内の次の要素の名前(workflow-element
、この例ではproxy-we1
)も指定する必要があります。プロキシ・ワークフロー要素によって、リモートLDAPサーバー上のデータへのアクセスに使用されるパスが指定されます。プロキシの詳細は、第20.2項「リモートLDAPサーバーとの通信の構成」を参照してください。
capacity
分散パーティションを作成する場合、パーティションで保持可能なエントリの最大数を指定する必要があります(たとえば、1000)。
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サーバー上のデータへのアクセスに使用されるパスが指定されます。プロキシの詳細は、第20.2項「リモートLDAPサーバーとの通信の構成」を参照してください。
lexico
またはnumeric
分散パーティションを作成する場合、パーティションの下限と上限を指定する必要があります。プロキシによって、どの2つのパーティションの範囲にも、重なりがないことが確認されます。つまり、パーティション1の下限と上限を1000-3000に設定して、パーティション2の下限と上限を2000-4000に設定することはできません。
上限値自体は含まれません。つまり、前述の例では、パーティション化されるデータは1000から1999までの値のみになります。上限または下限を無制限にする場合は、キーワードunlimited
を使用します。
設定するプロパティ(この例では下限と上限)は、作成した分散のタイプに関連します。アルゴリズム・タイプに関連した、パーティションのプロパティの詳細は、第22.1項「dsconfig
コマンドを使用した分散の構成」を参照してください。
注意: なお、辞書編集分散アルゴリズムの場合、使用されるソート・シーケンスはASCIIです。 |
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
で実行されます。
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を除く(減算) |
次の数量詞を使用できます:
X? | X、1回または0回 |
X* | X、0回以上 |
X+ | X、1回以上 |
X{n} | X、n回 |
X{n,} | X、n回以上 |
X{n,m} | X、n回以上m回以下 |
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-match
がtrue
に設定されているため、1、2または3で開始して、n個の文字が続くもの以外のuid
についてのリクエストはすべて、対象のパーティションに転送されます。
新規エントリが元のエントリと同じパーティションに留まるようDNを変更できます。デフォルトで、プロキシでは現行パーティションの範囲外の値にDNを変更することは許可されません。
modifyDN
リクエストで、エントリが配置されているパーティションの境界外の値にDNを変更できるようにするには、force-modify-dn
フラグをtrue
に設定します。
たとえば、uid
の境界が0-999のパーティション1と、uid
の境界が1000-1999のパーティション2があるとします。force-modify-dn
フラグをtrue
に設定して、特定のエントリのuid
を1
から1001
に変更すると、変更は許可されますが、uid
が1001
のそのエントリはパーティション1に留まります。このエントリがパーティション2に移動されることはありません。
uid=1001
を検索すると、サーバーは、そのようなエントリは見つからないというエラーを返します。エントリの位置を特定するには、グローバル索引カタログを使用する必要があります。これによって、変更されているエントリが常に見つかります。グローバル索引カタログを構成するには、第23.7項「コマンド行を使用したグローバル索引の構成」を参照してください。
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
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
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
分散ワークフロー全体(ワークフロー要素、アルゴリズムおよびパーティションを含む)を削除するために必要な処理は、分散ワークフロー要素の削除のみです。分散ワークフロー要素を削除すると、関連付けられている分散アルゴリズムおよびパーティションは通知なしに削除されます。
ロード・バランシングまたは分散を構成せずにプロキシ・サーバー・インスタンスを設定した場合は、ODSMを使用して分散を構成できます。開始する前に、分散デプロイメントを構成しているコンポーネントについて理解しておくと便利です。詳細は、第3.2.2項「構成2: 単純な分散」を参照してください。
ODSMを使用して分散を構成するには、次のステップを実行します:
第16.2項「ODSMを使用したサーバーへの接続」の説明に従って、ODSMからプロキシ・サーバーに接続します。
「ホーム」タブを選択します。
「構成」項目の「ディストリビュータの設定」を選択します。
「分散: データのパーティション化」画面で、次の情報を入力します:
「パーティション数」を選択します。
「分散アルゴリズム」を選択します。使用可能な分散アルゴリズムの詳細は、第12.3項「プロキシを使用したデータ分散の理解」を参照してください。
この分散デプロイメントで対応する「ネーミング・コンテキスト」、つまり接尾辞を入力します。
分散を構成する「ネットワーク・グループ」を選択します。
選択した分散アルゴリズムに応じて、各パーティションの容量、DNパターンまたは境界を入力します。
すべてのパーティション詳細を入力したら、「次」をクリックして続行します。
「分散: サーバー・パーティション」で、パーティションごとに「追加」をクリックして、パーティション化されたデータを保持する各バックエンドLDAPサーバーの接続詳細を入力します。
ODSMでは、アクセス可能かどうかを確認するために、これらのバックエンドLDAPサーバーへの接続が試行されます。接続試行が失敗した場合、それでもそのサーバー詳細を使用するか、それとも接続詳細を確認するかを尋ねるプロンプトが表示されます。
必要なサーバーについてすべて追加したら、「次」をクリックして続行します。
「分散: グローバル索引」画面で、グローバル索引の詳細を指定します。グローバル索引の詳細は、第12.6項「グローバル索引カタログの理解」を参照してください。
グローバル索引を構成したら、「次」をクリックして続行します。
「分散: サマリー」画面で、分散構成を確認し、「終了」をクリックして構成を完了します。
分散を構成した後は、ODSMの「構成」タブで構成の任意の側面を変更できます。
クリティカル度フラグという新規のパラメータを追加して、ワークフローを構成します。デフォルトで、クリティカル度フラグはTrue
に設定されます。
次の項では、ODSMを使用してワークフローのクリティカル度を構成する方法を説明します。dsconfig
を使用したクリティカル度の構成の詳細は、第22.1.5項「dsconfig
を使用したワークフローのクリティカル度の構成」を参照してください。
ODSMを使用してワークフローのクリティカル度を構成するには、次のステップを実行します:
第16.2項「ODSMを使用したサーバーへの接続」の説明に従って、ODSMからプロキシ・サーバーに接続します。
「構成」タブを選択します。
「コア構成」ビューを選択します。
「ワークフロー」要素で、クリティカル度フラグを設定する、目的のワークフローを選択します。
ワークフローに設定するクリティカル度の値(True、False
またはPartial
)を選択します。たとえば、選択したワークフロー要素にクリティカル度を設定するには、「True」をクリックします。