Sun Java System Directory Server Enterprise Edition 6.1 管理ガイド

第 18 章 Directory Proxy Server の設定

この章では、Directory Proxy Server のインスタンスを設定する方法について説明します。この章で示す手順では、dpadm コマンドと dpconf コマンドを使用します。これらのコマンドについては、dpadm(1M) および dpconf(1M) のマニュアルページを参照してください。

この章の内容は次のとおりです。

設定例

この節では、Directory Proxy Server の 2 つの設定例を示します。1 つは負荷分散、もう 1 つはデータ配布のための設定例です。仮想ディレクトリの詳細は、「仮想設定の例」を参照してください。

Directory Proxy Server で負荷分散を実行するための設定

単純な負荷分散の例として、検索操作と比較操作を 1 つのディレクトリセットに送信し、その他の操作をもう 1 つのディレクトリセットに送信します。Directory Proxy Server は、すべてのクライアント操作を受け取ります。Directory Proxy Server は、読み取りを取得するディレクトリセットとその他の操作を取得するディレクトリセットを判別する必要があります。

    Directory Proxy Server でこの負荷分散を処理するための設定の主要な手順は次のとおりです。

  1. Directory Proxy Server 用のデータソースとしてディレクトリを追加します。

  2. それらのデータソースをデータソースプールに追加します。

  3. それらのデータソースのいくつかで検索と比較の操作を受け入れるように設定し、残りのデータソースで追加、バインド、削除、変更、および DN 変更の操作を受け入れるように設定します。

  4. データソースプールをデータビューに追加します。

次の例では、Directory Proxy Server はポート 9389 で待機しています。この例では、記述されているように、検索操作と比較操作を処理する Directory Server インスタンス (ds1:1389) と、その他の操作を処理する Directory Server インスタンス (ds2:2389 ) に負荷を分散するようにプロキシを設定します。

最初の手順では、データソースを作成し、そのデータソースを有効にします。この手順では、プロキシサーバーを再起動する必要があります。


$ dpconf create-ldap-data-source -p 9389 ds1 localhost:1389
$ dpconf create-ldap-data-source -p 9389 ds2 localhost:2389
$ dpconf set-ldap-data-source-prop -p 9389 ds1 is-enabled:true
$ dpconf set-ldap-data-source-prop -p 9389 ds2 is-enabled:true
$ dpadm restart /local/dps

2 番目の手順では、データソースをデータソースプールに追加します。


$ dpconf create-ldap-data-source-pool -p 9389 "Directory Pool"
$ dpconf attach-ldap-data-source -p 9389 "Directory Pool" ds1 ds2

3 番目の手順では、ds1 が検索操作と比較操作を受け入れ、ds2 がその他の操作を受け入れるように設定します。


$ dpconf set-attached-ldap-data-source-prop -p 9389 "Directory Pool" ds1 \
add-weight:disabled bind-weight:disabled compare-weight:1 delete-weight:disabled \
modify-dn-weight:disabled modify-weight:disabled search-weight:1
$ dpconf set-attached-ldap-data-source-prop -p 9389 "Directory Pool" ds2 \
add-weight:1 bind-weight:1 compare-weight:disabled delete-weight:1 \
modify-dn-weight:1 modify-weight:1 search-weight:disabled

4 番目の手順では、クライアントアプリケーション要求がデータソースプールに経路指定されるように、そのプールをデータビューに追加します。


$ dpconf create-ldap-data-view -p 9389 "Balanced View" "Directory Pool" \
dc=example,dc=com

サフィックスデータを配布するための Directory Proxy Server の設定

単純なデータ配布の例として、A から M までの文字で始まる UID を持つエントリを 1 つのディレクトリセットに格納し、N から Z までの文字で始まる UID を持つエントリをもう 1 つのディレクトリセットに格納します。Directory Proxy Server は、すべてのクライアント操作を受け取ります。Directory Proxy Server は、A から M を処理するディレクトリセットと N から Z を処理するディレクトリセットを判別する必要があります。

    Directory Proxy Server でこのデータ配布を処理するための設定の主要な手順は次のとおりです。

  1. Directory Proxy Server 用のデータソースとしてディレクトリを追加します。

  2. それらのデータソースを、各データ配布を処理するデータソースプールに追加します。

  3. クライアント要求を適切なデータプールに配布するためのデータビューを作成します。

  4. 適切なデータソースに読み込まれるように LDIF を分割します。

  5. 分割した LDIF を適切なデータソースにインポートします。

  6. 適切なデータプールに接続されたデータソースごとに、操作ベースのウェイトを調整します。

次の例では、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 を分割します。この例では、dsadm split-ldif コマンドを使用して最初の分割を実行し、さらに、ファイル編集を使用して、すべてのデータソースで最上位エントリを保持します。これにより、アクセス制御命令を指定する最上位エントリの保持と、各データソースに対する 1 つのインポートコマンドの使用が可能になります。


$ dpadm split-ldif /local/dps /local/ds6/ldif/Example.ldif /tmp/
[14/May/2007:21:14:13 +0200] - STARTUP    - INFO  - Java Version: 1.5.0_09
 (Java Home: /local/jre)
[14/May/2007:21:14:13 +0200] - STARTUP    - INFO  - Java Heap Space: Total Memory
 (-Xms) = 3MB,
 Max Memory (-Xmx) = 63MB
[14/May/2007:21:14:13 +0200] - STARTUP    - INFO  - Operating System: SunOS/sparc 5.10
[14/May/2007:21:14:15 +0200] - INTERNAL   - ERROR - Entry starting at line 0 does not
 start with a DN
[14/May/2007:21:14:15 +0200] - INTERNAL   - ERROR - Unable to parse line "# Kirsten is
 a Directory Administrator and therefore should not" of entry "uid=kvaughan, ou=People,
 dc=example,dc=com" starting at line 112 as an attribute/value pair -- no colon found.
[14/May/2007:21:14:15 +0200] - INTERNAL   - ERROR - Unable to parse line "# Robert is
 a Directory Administrator and therefore should not" of entry "uid=rdaugherty,
 ou=People, dc=example,dc=com" starting at line 298 as an attribute/value pair --
 no colon found.
[14/May/2007:21:14:16 +0200] - INTERNAL   - ERROR - Unable to parse line "# Harry is
 a Directory Administrator and therefore should not" of entry "uid=hmiller, ou=People,
 dc=example,dc=com" starting at line 556 as an attribute/value pair -- no colon found.
[14/May/2007:21:14:16 +0200] - INTERNAL   - INFO  - SplitLDIF processing complete.
  Processed 156 entries.
$ ls /tmp/*ldif
/tmp/a-m view.ldif    /tmp/base view.ldif   /tmp/n-z view.ldif

この手順では、インポートの前に LDIF に追加する最上位エントリも必要です。


$ cp /local/ds6/ldif/Example.ldif /tmp/top.ldif
$ vi /tmp/top.ldif 
$ cat /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 の設定の変更

この節では、Directory Proxy Server の設定を変更する方法について説明します。

ProcedureDirectory Proxy Server の設定を変更する

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

  1. Directory Proxy Server の現在の設定を調べます。


    $ dpconf get-server-prop -h host -p port
    

    あるいは、1 つまたは複数のプロパティーの現在の設定を確認します。


    $ dpconf get-server-prop -h host -p port property-name ...

    たとえば、このコマンドを実行することで、未認証の操作が許可されているかどうかを調べます。


    $ dpconf get-server-prop -h host -p port allow-unauthenticated-operations
    allow-unauthenticated-operations  :  true
  2. 1 つまたは複数の設定パラメータを変更します。


    $ dpconf set-server-prop -h host -p port property:value ...

    たとえば、このコマンドを実行することで、未認証の操作を許可しないようにします。


    $ dpconf set-server-prop -h host -p port allow-unauthenticated-operations:false

    不正な変更を試みても、変更は行われません。たとえば、allow-unauthenticated-operations パラメータを false ではなく f に設定すると、次のようなエラーが発生します。


    $ dpconf set-server-prop -h host -p port allow-unauthenticated-operations:f
    The value "f" is not a valid value for the property "allow-unauthenticated-operations".
    Allowed property values: BOOLEAN
    The "set-server-prop" operation failed.
  3. 必要に応じて、変更を有効にするために Directory Proxy Server のインスタンスを再起動します。

    Directory Proxy Server の再起動については、「Directory Proxy Server を再起動する」を参照してください。

Directory Proxy Server インスタンスの設定情報の表示

Directory Proxy Server インスタンスの設定を表示するには、「dpconf info」と入力します。


$ dpconf info
インスタンスのパス           :  instance path
ホスト名               :  host
セキュリティー保護された待機アドレス   :  IP address
ポート                    :  port
セキュリティー保護されたポート             :  secure port
SSL サーバー証明書  :  defaultServerCert

Directory Proxy Server を再起動する必要があります。

dpconf info では、「セキュリティー保護された待機アドレス」と「待機アドレス」は、これらのプロパティーがデフォルト以外の値に設定されている場合にのみ表示されます。この出力例では、「待機アドレス」のプロパティーがデフォルト値に設定されているため、この項目は表示されていません。

また、dpconf info では、必要な場合はインスタンスを再起動するようにユーザーに促します。

dpadm info でも Directory Proxy Server インスタンスの設定情報を表示できます。このコマンドは、停止されているインスタンスに対しても使用できます。

Directory Proxy Server インスタンスのバックアップと復元

dpadm を使って Directory Proxy Server をバックアップすると、設定ファイルとサーバー証明書がバックアップされます。Directory Proxy Server の仮想 ACI が実装されている場合は、ACI もバックアップされます。

Directory Proxy Server では、サーバーが正常に起動した場合は常に、conf.ldif ファイルが自動的にバックアップされます。

ProcedureDirectory Proxy Server インスタンスをバックアップする

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

  1. Directory Proxy Server のインスタンスを停止します。


    $ dpadm stop instance-path
    
  2. Directory Proxy Server のインスタンスをバックアップします。


    $ dpadm backup instance-path archive-dir
    

    archive-dir ディレクトリは backup コマンドによって作成され、このコマンドを実行する前から存在してはいけません。このディレクトリには、設定ファイルと証明書のそれぞれのバックアップが含まれます。

ProcedureDirectory Proxy Server インスタンスを復元する

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

復元操作を開始する前に、Directory Proxy Server インスタンスを作成してください。

  1. Directory Proxy Server のインスタンスを停止します。


    $ dpadm stop instance-path
    
  2. Directory Proxy Server のインスタンスを復元します。


    $ dpadm restore instance-path archive-dir
    
    • インスタンスパスが存在する場合、復元操作はメッセージを表示せずに実行されます。instance-path ディレクトリ内の設定ファイルと証明書は、archive-dir ディレクトリ内のもので置き換えられます。

    • インスタンスパスが存在しない場合、復元操作は失敗します。

Proxy Manager の設定

Proxy Manager とは、特権を持つ管理者のことで、UNIX® システムの root ユーザーにあたります。Proxy Manager のエントリは、Directory Proxy Server のインスタンスの作成時に定義されます。Proxy Manager のデフォルト DN は cn=Proxy Manager です。

Proxy Manager DN およびパスワードは、次の手順で示すように表示および変更できます。

ProcedureProxy Manager を設定する

DSCC を使用してこの作業を実行できます。詳細は、「Directory Service Control Center のインタフェース」と DSCC のオンラインヘルプを参照してください。

  1. Proxy Manager の設定を調べます。


    $ dpconf get-server-prop -h host -p port configuration-manager-bind-dn configuration-manager-bind-pwd
    configuration-manager-bind-dn   :  cn=proxy manager
    configuration-manager-bind-pwd  :  {3DES}U77v39WX8MDpcWVrueetB0lfJlBc6/5n

    Proxy Manager のデフォルト値は cn=proxy manager です。設定マネージャーのパスワードに対するハッシュ値が返されます。

  2. Proxy Manager の DN を変更します。


    $ dpconf set-server-prop -h host -p port configuration-manager-bind-dn:bindDN
    
  3. Proxy Manager に対するパスワードを含むファイルを作成し、そのファイルを指すプロパティーを設定します。


    $ dpconf set-server-prop -h host -p port configuration-manager-bind-pwd-file:filename
    

サーバーの再起動を必要とする設定変更

Directory Proxy Server とそのエントリに対するほとんどの設定変更は、オンラインで行うことができます。一部の変更は、変更を有効にするためにサーバーを再起動する必要があります。次のリストのプロパティーに対する設定変更を行う場合は、サーバーを再起動する必要があります。

aci-data-view
bind-dn
client-cred-mode
custom-distribution-algorithm
db-name
db-pwd
db-url
db-user
distribution-algorithm
ldap-address
ldap-port
ldaps-port
listen-address
listen-port
load-balancing-algorithm
num-bind-init
num-read-init
num-write-init
number-of-search-threads
number-of-threads
number-of-worker-threads
ssl-policy
use-external-schema

プロパティーの rws キーワードとrwd キーワードは、プロパティーを変更した場合にサーバーを再起動する必要があるかどうかを示します。

プロパティーに対する変更でサーバーを再起動する必要があるかどうかを確認するには、次のコマンドを実行します。

$ dpconf help-properties | grep property-name

たとえば、LDAP データのバインド DN の変更でサーバーを再起動する必要があるかどうかを確認するには、次のコマンドを実行します。

$ dpconf help-properties | grep bind-dn
connection-handler   	bind-dn-filters        rwd  STRING | any
This property specifies a set of regular expressions. The bind DN 
of a client must match at least one regular expression in order for 
the connection to be accepted by the connection handler. (Default: any)
ldap-data-source      bind-dn               rws  DN | ""
This property specifies the DN to use when binding to the LDAP data 
source. (Default: undefined)

設定変更のあとでサーバーを再起動する必要があるかどうかを確認するには、次のコマンドを実行します。

$ dpconf get-server-prop -h host -p port is-restart-required

Directory Proxy Server による Directory Server の設定エントリへのアクセス

Directory Proxy Server の設定エントリは cn=config 内にあります。Directory Proxy Server を使用して設定エントリにアクセスすると、デフォルトでは、Directory Proxy Server の設定エントリにアクセスします。

ディレクトリサーバーの設定エントリにアクセスするには、Directory Proxy Server ではなく Directory Server に直接接続することをお勧めします。Directory Server の設定方法の詳細は、第 3 章「Directory Server の設定」を参照してください。


注意 – 注意 –

ディレクトリサーバーの設定エントリにアクセスするよう Directory Proxy Server を設定し直すと、たいていは Directory Proxy Server の管理フレームワークが壊れます。


どうしても Directory Proxy Server からディレクトリサーバーの設定エントリにアクセスする必要がある場合は、Directory Proxy Server の管理フレームワークが壊れないよう、特別の手順をとります。この節では、Directory Proxy Server を使用してディレクトリサーバーの設定エントリにアクセスする方法について説明します。

ProcedureDirectory Proxy Server を使用して Directory Server の設定エントリにアクセスする

  1. 1 つまたは複数のデータソースを作成します。これについては、「LDAP データソースの作成と設定」を参照してください。

  2. LDAP データソースプールを作成します。これについては、「LDAP データソースプールの作成と設定」を参照してください。

  3. 1 つまたは複数のデータソースを、データソースプールに接続します。これについては、「LDAP データソースのデータソースプールへの接続」を参照してください。

    • 1 つの特定のデータソースの設定エントリを公開するには、1 つの LDAP データソースだけを LDAP データソースプールに接続します。


      $ dpconf attach-ldap-data-source -h host -p port pool-name data-source-name
      

      この手順を実行したあと、クライアントは、Directory Proxy Server に接続されているデータソースの設定エントリにアクセスできるようになります。

    • 任意の特定のデータソースの設定エントリを公開するには、複数の LDAP データソースを LDAP データソースプールに接続します。


      $ dpconf attach-ldap-data-source -h host -p port pool-name data-source-name \
       data-source-name ...

      この手順を実行したあと、クライアントは、Directory Proxy Server に接続されているデータソースの 1 つの設定エントリにアクセスできるようになります。ただし、クライアントには、設定エントリがどのデータソースに属するかはわかりません。

  4. LDAP データビューを作成して、cn=config を公開します。


    $ dpconf create-ldap-data-view -h host -p port view-name pool-name cn=config