Red Hat Training

A Red Hat training course is available for Red Hat Directory Server

2.2. データベースの作成および維持

ディレクトリーデータを整理するための接尾辞を作成したら、そのディレクトリーのデータを含むデータベースを作成します。

2.2.1. データベースの作成

ディレクトリーツリーは、複数の Directory Server データベースに配布できます。複数のデータベースにデータを分散する方法は 2 つあります。
各接尾辞に 1 つのデータベース各接尾辞のデータは個別のデータベースに含まれます。
個別の接尾辞に含まれるデータを格納するために、3 つのデータベースが追加されます。
このツリーユニットの分割は、たとえば次の 3 つのデータベースに対応しています。
この例では、DB1 には ou=people のデータおよび dc=example,dc=com のデータが含まれ、クライアントが dc=example,dc=com に基づいて検索を実行できるようにします。ただし、DB2 には ou=groups のデータのみが含まれ、DB3 には ou=contractors のデータのみが含まれます。
1 つの接尾辞に複数のデータベースがあります。
ディレクトリーツリーの ou=people ブランチ内のエントリー数が非常に大きくなると、2 つのデータベースを格納しなければならないとします。この場合、ou=people に含まれているデータは 2 つのデータベースに分散できます。
DB1 には A-K からの名前の人が含まれ、DB2 には L-Z からの名前が含まれます。DB3 には ou=groups のデータが含まれ、DB4 には ou=contractors のデータが含まれます。
カスタムプラグインは、複数のデータベースにまたがってデータを単一の接尾辞から分散します。Directory Server のディストリビューションロジックの作成方法は、Red Hat コンサルティングにお問い合わせください。

2.2.1.1. コンソールを使用した既存の接尾辞の新規データベースの作成

  1. Directory Server コンソールで、Configuration タブを選択します。
  2. 左側のペインで Data を展開し、新しいデータベースを追加する接尾辞をクリックします。
  3. 接尾辞を右クリックし、ポップアップメニューから New Database を選択します。
  4. example2 などのデータベースの一意の名前を入力します。データベース名は、英数字、ダッシュ(-)、およびアンダースコア(_)の組み合わせになります
    Create database in フィールドには、デフォルトのデータベースディレクトリー(/var/lib/dirsrv/slapd-instance/db)と新規データベースの名前が自動的に入力されます。また、別のディレクトリーの場所を入力またはブラウズすることもできます。

2.2.1.2. コマンドラインから単一の接尾辞用の新規データベースの作成

ldapmodify コマンドラインユーティリティーを使用して、ディレクトリー設定ファイルに新しいデータベースを追加します。データベース設定情報は cn=ldbm database,cn=plugins,cn=config エントリーに保存されます。たとえば、新しいデータベースをサーバー example1 に追加します。
  1. ldapmodify を実行して、新規データベースのエントリーを作成します。
    # ldapmodify -a -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
    
    dn: cn=UserData,cn=ldbm database,cn=plugins,cn=config
    changetype: add
    objectclass: extensibleObject
    objectclass: nsBackendInstance
    nsslapd-suffix: ou=people,dc=example,dc=com
    追加されたエントリーは、root またはサブ接尾辞 ou=people,dc=example,dc=com のデータが含まれる UserData という名前のデータベースに対応します。
  2. 「コマンドラインでのルート接尾辞およびサブ接尾辞の作成」 の説明に従って、ルートまたは従属接尾辞を作成します。DN 属性で指定されるデータベース名は、接尾辞エントリーの nsslapd-backend 属性の値に対応している必要があります。

2.2.1.3. 単一の接尾辞に複数のデータベースの追加

1 つの接尾辞は、複数のデータベースに分散できます。ただし、接尾辞を配布するには、ディレクトリーを拡張するためにカスタムディストリビューション機能を作成する必要があります。カスタムディストリビューション機能の作成に関する詳細は、Red Hat コンサルティングにお問い合わせください。
注記
エントリーが分散されたら、再分散できません。以下の制限が適用されます。
  • ディストリビューション機能は、エントリーディストリビューションのデプロイ後は変更できません。
  • エントリーを異なるデータベースに分散させる可能性がある場合は、LDAP modrdn 操作を使用してエントリーの名前を変更することができません。
  • 分散ローカルデータベースは複製できません。
  • エントリーを異なるデータベースに分散させる可能性がある場合は、ldapmodify 操作を使用してエントリーを変更することができません。
これらの制限に違反すると、Directory Server はエントリーを正しく特定して返さないようにします。
カスタムディストリビューションロジックプラグインを作成したら、そのプラグインをディレクトリーに追加します。
ディストリビューションロジックは、接尾辞で宣言された関数です。この関数は、この接尾辞に到達するすべての操作に対して呼び出されます。これには、接尾辞の前に開始するサブツリー検索操作が含まれます。ディストリビューション機能は、コンソールとコマンドラインインターフェースの両方を使用して接尾辞に挿入できます。
2.2.1.3.1. Directory Server コンソールを使用したカスタムディストリビューション機能の接尾辞への追加
  1. Directory Server コンソールで、Configuration タブを選択します。
  2. 左側のナビゲーションペインで Data を展開します。ディストリビューション機能を適用する接尾辞を選択します。
  3. 右側のウィンドウで Databases タブを選択します。
  4. 接尾辞に関連付けられているデータベースは、Databases タブにすでにリストされています。Add をクリックして、追加のデータベースを接尾辞に関連付けます。
  5. ディストリビューションライブラリーへのパスを入力します。
  6. Function name フィールドにディストリビューション機能の名前を入力します。
2.2.1.3.2. コマンドラインを使用したカスタムディストリビューション機能の接尾辞への追加
  1. ldapmodify を実行します。
    # ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
  2. 以下の属性を接尾辞エントリー自体に追加し、カスタムディストリビューションロジックに関する情報を提供します。
    dn: suffix
    changetype: modify
    add: nsslapd-backend
    nsslapd-backend: Database1
    -
    add: nsslapd-backend
    nsslapd-backend: Database2
    -
    add: nsslapd-backend
    nsslapd-backend: Database3
    -
    add: nsslapd-distribution-plugin
    nsslapd-distribution-plugin: /full/name/of/a/shared/library
    -
    add: nsslapd-distribution-funct
    nsslapd-distribution-funct: distribution-function-name
    nsslapd-backend 属性は、この接尾辞に関連付けられたすべてのデータベースを指定します。nsslapd-distribution-plugin 属性は、プラグインが使用するライブラリーの名前を指定します。nsslapd-distribution-funct 属性は、ディストリビューション機能自体の名前を提供します。
ldapmodify コマンドラインユーティリティーの使用に関する詳細は、「コマンドラインでエントリーの管理」 を参照してください。