Oracle® Fusion Middleware Oracle Directory Server Enterprise Edition管理者ガイド 11g リリース1 (11.1.1.7.0) B72439-01 |
|
前 |
次 |
Directory Proxy Serverでは、データ・ビューの定義を使用した配布が可能です。データ・ビューは、そのデータ・ビューのエントリのベースDNを決定するビュー・ベースによって定義されます。Directory Proxy Serverが提供する配布アルゴリズムに基づいて、エントリを様々なデータ・ビュー間で分割する方法を指定できます。
Directory Proxy Serverの配布の概要および使用例の説明は、Oracle Directory Server Enterprise Editionのリファレンスの第17章のDirectory Proxy Serverの配布についての章を参照してください。
この章の内容は、次のとおりです。
Directory Proxy Serverには、次の配布アルゴリズムが用意されています。
パターン一致
数値
辞書編集
レプリケーション
カスタム
Directory Proxy Serverは、リクエストのパラメータと1つ以上のパターンの間の一致に基づいて、リクエストをデータ・ビューに配布します。次のパラメータを設定して、パターン一致配布アルゴリズムを構成します。
pattern-matching-base-dn-regular-expression
pattern-matching-base-dn-regular-expression
pattern-matching-base-object-search-filter
pattern-matching-base-object-search-filter
pattern-matching-dn-regular-expression
pattern-matching-dn-regular-expression
pattern-matching-one-level-search-filter
pattern-matching-one-level-search-filter
pattern-matching-subtree-search-filter
pattern-matching-subtree-search-filter
パターン一致配布アルゴリズムのプロパティは、すべて複数値です。値を追加するにはPROP+:VAL
を使用し、値を削除するにはPROP-:VAL
を使用します。次に例を示します。
$ dpconf set-ldap-data-view-prop -p port-number ldap-data-view \ pattern-matching-dn-regular-expression:1:value $ dpconf set-ldap-data-view-prop -p port-number ldap-data-view \ pattern-matching-dn-regular-expression+:2:value2
値が設定される順序によって優先度が決定されます。
$ ldapsearch -D "cn=proxy manager" -w - -p port-number -b "cn=ldap-data-view,cn=data views,cn=config" \ "objectclass=*" dnMatchingRegex version: 1 dn: cn=ldap-data-view,cn=data views,cn=config dnMatchingRegex: 1:value dnMatchingRegex: 2:value2
前述の例では、接頭辞が1
である値が最も高い優先順位です。
パターン一致配布アルゴリズムをバージョン6の動作に戻すには、Directory Proxy Serverの構成プロパティcompat-flag
をpattern-matching-algo-6
に設定します。
filter
で終わる構成属性は、LDAPフィルタです。正規表現ではありません。これらのLDAPフィルタは、着信検索リクエストに含まれているLDAPフィルタに対して評価されます。
たとえば、次の設定を使用して、偶数のuid
を持つユーザーのリクエストを偶数
のデータ・ビューに送信し、奇数のuid
を持つユーザーのリクエストを奇数のデータ・ビューに送信するように、パターン一致配布アルゴリズムを構成します。
$ dpconf set-ldap-data-view-prop even pattern-matching-base-object-search-filter:'|(uid=\2a)(uid=*0)(uid=*2)\ (uid=*4)(uid=*6)(uid=*8))'\ pattern-matching-one-level-search-filter:'|(uid=\2a)(uid=*0)(uid=*2)\ (uid=*4)(uid=*6)(uid=*8))'\ pattern-matching-subtree-search-filter:'|(uid=\2a)(uid=*0)(uid=*2)\ (uid=*4)(uid=*6)(uid=*8))'\ pattern-matching-dn-regular-expression:'uid=[0-9]+[02468]' distribution-algorithm: pattern-matching $ dpconf set-ldap-data-view-prop odd pattern-matching-base-object-search-filter:'|(uid=\2a)(uid=*1)(uid=*3)\ (uid=*5)(uid=*7)(uid=*9))'\ pattern-matching-one-level-search-filter:'|(uid=\2a)(uid=*1)(uid=*3)\ (uid=*5)(uid=*7)(uid=*9))'\ pattern-matching-subtree-search-filter:'|(uid=\2a)(uid=*1)(uid=*3)\ (uid=*5)(uid=*7)(uid=*9))'\ pattern-matching-dn-regular-expression:'uid=[0-9]+[13579]' distribution-algorithm: pattern-matching
式(uid=\2a)
で、\2a
は、*
のASCII表現です。ここで、2
とa
は、16進法の2桁です。式(uid=\2a)
によって、データ・ビューは、すべてのuid
のリクエストを受け入れるようになります。
パターン一致アルゴリズムがサポートする構文は、Javaパターン・クラス(http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html
に記載)によって指定されます。この構文は、通常のregex
構文と同じではありません。
Directory Proxy Serverは、リクエストのRDNの数値に応じて、リクエストをデータ・ビューに配布します。数値は、データ・ビューのベースDNの下の最初のRDNの値から取得されます。次のパラメータを設定して、数値バウンドを定義します。
numeric-attrs
numeric-attrs
numeric-default-data-view
numeric-default-data-view
numeric-lower-bound
numeric-lower-bound
numeric-upper-bound
numeric-upper-bound
たとえば、uid
が0から99のリクエストを特定のデータ・ビューに送信するように数値配布アルゴリズムを構成するには、次の構文を使用します。残りのユーザーに同じ構文を使用しますが、異なるデータ・ビューを指定します。
$ dpconf set-ldap-data-view-prop dataview distribution-algorithm:numeric \
numeric-attrs:uid numeric-lower-bound:0 numeric-upper-bound:99
Directory Proxy Serverは、リクエストのRDNの辞書編集上の値に応じて、リクエストをデータ・ビューに配布します。辞書編集上のバウンドは、データ・ビューのベースDNの下の最初のRDNの値から取得されます。次のパラメータを設定して、辞書編集上のバウンドを定義します。
lexicographic-attrs
lexicographic-attrs
lexicographic-lower-bound
lexicographic-lower-bound
lexicographic-upper-bound
lexicographic-upper-bound
たとえば、名前がA
からM
で始まるユーザーのリクエストを一方のデータ・ビューに、残りのユーザーのリクエストを他方のデータ・ビューに送信するように辞書編集上の配布アルゴリズムを構成するには、次の構文を使用します。
$ dpconf set-ldap-data-view-prop dataview distribution-algorithm:lexicographic \
lexicographic-attrs:cn lexicographic-lower-bound:A lexicographic-upper-bound:M
Directory Proxy Serverは、レプリケーションのデータ・ビューのロールに応じて、リクエストをデータ・ビューに配布します。このアルゴリズムは、書込み操作をデータソース・プールのすべてのデータソースに配布し、読取り操作を1つのデータソースに配布します。レプリケーション・ロールは、replication-role
パラメータによって定義されます。データ・ビューは、マスター・ロールまたはコンシューマ・ロールを持つことができます。
$ dpconf set-ldap-data-view-prop dataview distribution-algorithm:replication
カスタム配布アルゴリズムは、すべてのタイプのデータ・ビュー(つまり、ldap-data-view
、jdbc-data-view
、ldif-data-view
およびjoin-data-view
)に対して構成できます。次の手順では、アルゴリズムは、ldap-data-view
に対してのみ設定されます。
extension-jar-file-url
プロパティを、配布アルゴリズム・クラスを含むJavaアーカイブ(JAR)ファイルのパスを含むように設定します。
$ dpconf set-server-prop -h host -p port extension-jar-file-url:jar file path
jar file pathは、有効なJARファイルのパス(file:/expt/dps/custom_plugin/myjar.jar
など)に置き換えることができます。
custom-distribution-algorithm
を構成する前に、distribution-algorithm
をnone
に設定します。
$ dpconf set-ldap-data-view-prop view name distribution-algorithm:none
custom-distribution-algorithm
プロパティを、カスタム配布アルゴリズム・クラスに設定します。
$ dpconf set-ldap-data-view-prop view name \ custom-distribution-algorithm:PackageName.AlgoClassName
単純なデータ配布は、AからMで始まるUIDを持つエントリをあるディレクトリ・セットに格納し、N
からZ
で始まるUIDを持つエントリを別のディレクトリ・セットに格納することによって構成されます。Directory Proxy Serverは、すべてのクライアント操作を受信します。サーバーは、どちらのディレクトリ・セットがAからMを処理し、どちらのセットがNからZを処理するかを決定する必要があります。
このデータ配布シナリオを処理するためのDirectory Proxy Serverの構成の重要なステージは次のとおりです。
Directory Proxy Serverのデータソースとしてディレクトリを追加します。
データソースをデータソース・プールに追加し、異なるデータ配布を処理します。
クライアント・リクエストを適切なデータ・プールに配布するように設計されたデータ・ビューを作成します。
適切なデータソースにロードされるようにLDIFを分割します。
分割したLDIFを適切なデータソースにインポートします。
適切なデータ・プールにアタッチされたデータソースに対して操作ベースの重みを調整します。
次に示すのは、Directory Proxy Serverがポート9389でリッスンしている例です。例を単純にするために、プロキシはここで構成され、3つのDirectory Serverのインスタンス間でのみ配布されます。可用性および読込み拡張性のため、複製されたディレクトリ・トポロジを使用してLDAPデータを格納します。あるDirectory ServerのインスタンスdsA-M:1389
が、AからMで始まるUIDを持つユーザー・エントリを処理します。別のDirectory ServerのインスタンスdsN-Z:2389
が、NからZで始まるUIDを持つユーザー・エントリを処理します。最後のディレクトリのインスタンスdsBase:3389
が接尾辞のベース・エントリを処理します。
最初の手順では、データソースを作成して有効化します。ベース・データソースは、UIDのない接尾辞のルートの近くのエントリを保持します。通常のデプロイメントでは、これらのエントリ数は、配布されるエントリ数よりもはるかに少ないです。
$ dpconf create-ldap-data-source -p 9389 dsA-M localhost:1389 $ dpconf set-ldap-data-source-prop -p 9389 dsA-M is-enabled:true $ dpconf create-ldap-data-source -p 9389 dsN-Z localhost:2389 $ dpconf set-ldap-data-source-prop -p 9389 dsN-Z is-enabled:true $ dpconf create-ldap-data-source -p 9389 dsBase localhost:3389 $ dpconf set-ldap-data-source-prop -p 9389 dsBase is-enabled:true
2番目の手順で、データソースをデータソース・プールに追加します。
$ dpconf create-ldap-data-source-pool -p 9389 "Base Pool" $ dpconf attach-ldap-data-source -p 9389 "Base Pool" dsBase $ dpconf create-ldap-data-source-pool -p 9389 "A-M Pool" $ dpconf attach-ldap-data-source -p 9389 "A-M Pool" dsA-M $ dpconf create-ldap-data-source-pool -p 9389 "N-Z Pool" $ dpconf attach-ldap-data-source -p 9389 "N-Z Pool" dsN-Z
3番目の手順で、クライアント・リクエストを適切なデータ・プールに配布するように設計されたデータ・ビューを作成します。ベース・プールがdc=example,dc=com
を処理するのに対して、UID値に従って配布されたデータを保持するプールはou=people,dc=example,dc=com
を処理することに注目してください。この手順では、サーバーの再起動が必要です。
$ dpconf create-ldap-data-view -p 9389 "Base View" "Base Pool" \ dc=example,dc=com $ dpconf create-ldap-data-view -p 9389 "A-M View" "A-M Pool" \ ou=people,dc=example,dc=com $ dpconf set-ldap-data-view-prop -p 9389 "A-M View" \ distribution-algorithm:lexicographic lexicographic-attrs:uid \ lexicographic-lower-bound:a lexicographic-upper-bound:m The proxy server will need to be restarted in order for the changes to take effect $ dpconf create-ldap-data-view -p 9389 "N-Z View" "N-Z Pool" \ ou=people,dc=example,dc=com $ dpconf set-ldap-data-view-prop -p 9389 "N-Z View" \ distribution-algorithm:lexicographic lexicographic-attrs:uid \ lexicographic-lower-bound:n lexicographic-upper-bound:z The proxy server will need to be restarted in order for the changes to take effect $ dpadm restart /local/dps
4番目の手順では、適切なデータソースにロードされるようにLDIFを分割します。この例では、初期分割を実行するdpadm split-ldif
コマンドと、すべてのデータソースの最上位エントリを保持するようにするためのファイル編集の両方を使用します。こうすることによって、アクセス制御手順を指定する最上位エントリの保持と各データソースに対する単一のインポート・コマンドの使用の両方が可能になります。
$ dpadm split-ldif /local/dps /opt/SUNWdsee7/resources/ldif/Example.ldif /tmp
この手順では、インポート前にLDIFに追加される最上位エントリも必要です。
$ cp /opt/SUNWdsee7/resources/ldif/Example.ldif /tmp/top.ldif $ vi /tmp/top.ldif dn: dc=example,dc=com objectclass: top objectclass: domain dc: example aci: (target ="ldap:///dc=example,dc=com")(targetattr != "userPassword")(version 3.0;acl "Anonymous read-search access"; allow (read, search, compare)(userdn = "ldap:///anyone");) aci: (target="ldap:///dc=example,dc=com") (targetattr = "*")(version 3.0; acl "allow all Admin group"; allow(all) groupdn = "ldap:///cn=Directory Administrators,ou=Groups,dc=example,dc=com";) $ cat /tmp/top.ldif /tmp/base\ view.ldif> /tmp/top\ and\ base\ view.ldif $ cat /tmp/top.ldif /tmp/a-m\ view.ldif> /tmp/top\ and\ a-m\ view.ldif $ cat /tmp/top.ldif /tmp/n-z\ view.ldif> /tmp/top\ and\ n-z\ view.ldif
5番目の手順では、分割したLDIFを適切なデータソースにインポートします。ここで、ベース・エントリを処理するディレクトリは、ポート3389にあります。A-Mを処理するディレクトリは、ポート1389をリッスンしています。N-Zを処理するディレクトリは、ポート2389をリッスンしています。
$ dsconf import -p 1389 /tmp/top\ and\ a-m\ view.ldif dc=example,dc=com ... Task completed (slapd exit code: 0). $ dsconf import -p 2389 /tmp/top\ and\ n-z\ view.ldif dc=example,dc=com ... Task completed (slapd exit code: 0). $ dsconf import -p 3389 /tmp/top\ and\ base\ view.ldif dc=example,dc=com ... Task completed (slapd exit code: 0).
6番目の手順では、適切なデータ・プールにアタッチされたデータソースに対して操作ベースの重みを調整します。クライアント・アプリケーションが検索以外の操作を実行する場合、重みをその操作に対しても設定する必要があります。
$ dpconf set-attached-ldap-data-source-prop -p 9389 "Base Pool" dsBase search-weight:1 $ dpconf set-attached-ldap-data-source-prop -p 9389 "A-M Pool" dsA-M search-weight:1 $ dpconf set-attached-ldap-data-source-prop -p 9389 "N-Z Pool" dsN-Z search-weight:1
操作ベースの重みを設定した後、クライアント・アプリケーションは、データが物理的に配布されなかったかのようにDirectory Proxy Serverを検索できます。
次の検索は、UIDがRで始まるユーザーを検索します。
$ ldapsearch -p 9389 -b dc=example,dc=com uid=rfisher version: 1 dn: uid=rfisher, ou=People, dc=example,dc=com cn: Randy Fisher sn: Fisher givenName: Randy objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson ou: Human Resources ou: People l: Cupertino uid: rfisher mail: rfisher@example.com telephoneNumber: +1 408 555 1506 facsimileTelephoneNumber: +1 408 555 1992 roomNumber: 1579
次の検索は、ベース・エントリの1つを検索します。
$ ldapsearch -p 9389 -b ou=groups,dc=example,dc=com cn=hr\ managers version: 1 dn: cn=HR Managers,ou=groups,dc=example,dc=com objectClass: top objectClass: groupOfUniqueNames cn: HR Managers ou: groups uniqueMember: uid=kvaughan, ou=People, dc=example,dc=com uniqueMember: uid=cschmith, ou=People, dc=example,dc=com description: People who can manage HR entries
この項では、データ・ビューとその作成および構成方法について説明します。
この項の事例では、接続ハンドラにより、すべてのクライアント接続がDirectory Proxy Serverで処理可能となることを前提としています。
この項では、サブツリーの様々な部分に単一のアクセス・ポイントを提供するデータ・ビューを構成する方法について説明します。この例には、同じベースDNを持つ2つのデータ・ビューが含まれています。数値配布アルゴリズムを使用して、エントリを異なるデータ・ビューに分割します。データソース・プールは、データと等価なデータソースのセットごとに構成されます。次の図にデプロイメントの例を示します。
このタイプのデプロイメントの詳細は、Oracle Directory Server Enterprise Editionのリファレンスのサブツリーの様々な部分が異なるデータソースに格納されている場合にリクエストをルーティングするデータ・ビューに関する項を参照してください。
図21-1 サブツリーの様々な部分が異なるデータソースに格納されている場合に単一のアクセス・ポイントを提供するデプロイメントの例
WebインタフェースのDirectory Service Control Center (DSCC)を使用して、このタスクを実行できます。
「LDAPデータソースの作成および構成」での説明どおりに、各LDAPサーバーに対してデータソースを作成します。
「LDAPデータソース・プールの作成および構成」での説明どおりに、データソース・プールを2つ作成します。
サブツリーのある部分を含むデータソースをdata-source-pool-1
にアタッチし、サブツリーの別の部分を含むデータソースをdata-source-pool-2
にアタッチします(「LDAPデータソースのデータソース・プールへのアタッチ」を参照)。
ロード・バランシングを構成します。
詳細は、「ロード・バランシングの構成」を参照してください。
ou=people,dc=example,dc=com
(uid
は0
から99
)のエントリを選択する配布アルゴリズムを持つデータ・ビューを作成し、リクエストをdata-source-pool-1
に転送するようにこのデータ・ビューを構成します。
$ dpconf set-ldap-data-view-prop -h host1 -p 1389 dataview-1 \ ldap-data-source-pool:data-source-pool-1 base-dn:ou=people,dc=example,dc=com \ distribution-algorithm :numeric numeric-attrs:uid numeric-lower-bound :0 \ numeric-upper-bound :99
ou=people,dc=example,dc=com
(uid
は100
から199
)のエントリを選択する配布アルゴリズムを持つ別のデータ・ビューを作成し、リクエストをdata-source-pool-2
に転送するようにこのデータ・ビューを構成します。
$ dpconf set-ldap-data-view-prop -h host1 -p 1389 dataview-2 \ ldap-data-source-pool:data-source-pool-2 base-dn:ou=people,dc=example,dc=com \ distribution-algorithm:numeric numeric-attrs:uid numeric-lower-bound:100 numeric-upper-bound :199
これらのデータ・ビューのその他のプロパティは、「デフォルト・データ・ビュー」のデフォルト・データ・ビューと同一になります。
必要な場合は、Directory Proxy Serverのインスタンスを再起動して、変更を有効にします。
Directory Proxy Serverの再起動については、「Directory Proxy Serverを再起動するには:」を参照してください。
この項では、階層を配布アルゴリズムと結合するようにデータ・ビューを構成する方法について説明します。このタイプのデプロイメントの詳細は、Oracle Directory Server Enterprise Editionのリファレンスの階層および配布アルゴリズムを持つデータ・ビューに関する説明を参照してください。
この項の例には、4つのデータ・ビューが含まれています。データ・ビュー1のベースDNは、他のデータ・ビューのベースDNより優先されます。データ・ビュー3とデータ・ビュー4は、同じベースDNを持っているが、数値配布アルゴリズムは、エントリを異なるデータ・ビューに分割します。
下位ブランチが別のデータ・ビューのベースDNとして構成されると、Directory Proxy Serverは、サブツリーの下位ブランチをデータ・ビューから自動的に除外します。数値配布アルゴリズムは、同じサブツリーからのエントリを異なるデータ・ビューに分割します。データソース・プールは、データと等価なデータソースのセットごとに構成されます。
次の図にデプロイメントの例を示します。
このタスクの実行には、DSCCを使用できません。次の手順の説明に従って、コマンドラインを使用してください。
「LDAPデータソースの作成および構成」での説明どおりに、各LDAPサーバーに対してデータソースを作成します。
「LDAPデータソース・プールの作成および構成」での説明どおりに、4つのデータソース・プールを作成します。
「LDAPデータソースのデータソース・プールへのアタッチ」の手順に従って、データソースをデータソース・プールにアタッチします。
dc=example,dc=com
を含むデータソースをdata-source-pool-1
にアタッチします。
ou=computer,dc=example,dc=com
を含むデータソースをdata-source-pool-2
にアタッチします。
ou=people,dc=example,dc=com
(uid
が0
から99
)のエントリを含むデータソースをdata-source-pool-3
にアタッチします。
ou=people,dc=example,dc=com
(uid
が100
から199
)のエントリを含むデータソースをdata-source-pool-4
にアタッチします。
ロード・バランシングを構成します。
詳細は、「ロード・バランシングの構成」を参照してください。
data-source-pool-1
を参照する、dc=example,dc=com
のベースDNを持つデータ・ビューを作成します。
$ dpconf create-ldap-data-view -h host1 -p 1389 dataview-1 \ data-source-pool-1 dc=example,dc=com
data-source-pool-2
を参照する、ou=computer,dc=example,dc=com
のベースDNを持つデータ・ビューを作成します。
$ dpconf create-ldap-data-view -h host1 -p 1389 dataview-2 \ data-source-pool-2 ou=computer,dc=example,dc=com
(オプション)下位データ・ビューをその親から切断します。
dataview-1にアクセスするサブツリー操作は、dataview-2に及びます。場合によっては、サブツリー操作が下位データ・ビューに及ぶのを防ぐために、下位データ・ビューをその親から切断することが有効です。dataview-1のサブツリー操作がdataview-2に及ぶのを回避するには、これを親から切断します。次に例を示します。
$ dpconf set-ldap-data-view-prop -h host1 -p 1389 dataview-2 connect-to-parent:false
data-source-pool-3
を参照する、ou=people,dc=example,dc=com
のベースDNを持つデータ・ビューを作成します。uid
が0
から99
であるエントリを選択するように、このデータ・ビューに関する配布アルゴリズムを構成します。
$ dpconf create-ldap-data-view -h host1 -p 1389 dataview-3 \ data-source-pool-3 ou=people,dc=example,dc=com $ dpconf set-ldap-data-view-prop dataview-3 distribution-algorithm:numeric \ numeric-attrs:uid numeric-lower-bound:0 numeric-upper-bound:99
data-source-pool-4
を参照する、ou=people,dc=example,dc=com
のベースDNを持つデータ・ビューを作成し、uid
が100
から199
であるエントリを選択するようにこのデータ・ビューに関する配布アルゴリズムを構成します。
$ dpconf create-ldap-data-view -h host1 -p 1389 dataview-4 \ data-source-pool-4 ou=people,dc=example,dc=com $ dpconf set-ldap-data-view-prop dataview-4 distribution-algorithm:numeric \ numeric-attrs:uid numeric-lower-bound:100 numeric-upper-bound:199
excluded-subtrees
パラメータを調べて、サブツリーou=computer,dc=example, dc=com
およびou=people,dc=example, dc=com
がdataview-1
から除外されたことを確認します。
$ dpconf get-ldap-data-view-prop -h host1 -p 1389 dataview-1 excluded-subtrees
除外されたサブツリーのリストが返されます。
Directory Proxy Serverのインスタンスを再起動して、変更を有効にします。
Directory Proxy Serverの再起動については、「Directory Proxy Serverを再起動するには:」を参照してください。