Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第37章 エントリーの一括プロビジョニングのパフォーマンスチューニング

11章ユーザーアカウントの管理、非常に遅くなる可能性があります。本章では、プロセスを調整して、できるだけ早期にプロビジョニングを完了できるようにする方法を説明します。
この手順の一部として以下を実行します。
  • Identity Management(IdM)は、LDIF ファイルからプロビジョニングするエントリーを読み込み、目的の IdM LDAP インスタンスにインポートします。
  • 管理者は、キャッシュサイズなど、特定の属性にカスタム値を設定し、MemberOf および Schema Compatibility プラグインを無効にします。この手順には、プロビジョニングしたエントリーで fixup-memberof.pl プラグインを実行して MemberOf を無効にするための補正が含まれます。
この手順は、ユーザー、ユーザーグループ、ホスト、ホストグループ、sudo ルール、ホストベースのアクセス制御(HBAC)ルール、およびホストベースのアクセス制御(HBAC)ルールをプロビジョニングするように設計およびテストされています。

一括プロビジョニングの推奨事項と前提条件

推奨情報:
  • 多数のエントリーをプロビジョニングする場合には、10,000 以上のエントリーをプロビジョニングする場合には、LDAP クライアントが、エントリーがプロビジョニングされているサーバーにアクセスしたり、サーバーからの情報に依存するサーバーにアクセスできないようにします。たとえば、サーバーでポート 389 および 636 を無効にし、LDAPI を使用して Unix ソケットを動作させることができます。
    理由: MemberOf プラグインはサーバーで無効になっています。これは、サーバーのメンバーシップ情報が有効ではないことを意味します。
  • プロビジョニング中に実行する必要がないアプリケーションを停止します。
    理由: これは、可能な限りマシンのメモリーを解放するのに役立ちます。空きメモリーはファイルシステムキャッシュによって使用されるため、プロビジョニングのパフォーマンスが向上します。
    以下の手順には、IdM サービスを停止して、Directory Server(DS)インスタンスのみを再起動する手順が含まれています。特に tomcat は多くのメモリーを消費しますが、プロビジョニング時に使用されません。
  • サーバーが 1 つしかない新規の IdM デプロイメントで、この手順を実行します。レプリカは、プロビジョニングが完了した後にのみ作成します。
    理由: プロビジョニングスループットはレプリケーションよりもはるかに高速です。複数のサーバーがあるデプロイメントでは、レプリカに関する情報が大幅に古くなります。
前提条件
  • プロビジョニングするエントリーが含まれる LDIF ファイルを生成します。たとえば、既存の IdM デプロイメントを移行する場合は、ldapsearch ユーティリティーを使用してすべてのエントリーをエクスポートして LDIF ファイルを作成します。
    LDIF 形式の詳細は、『Red Hat Directory Server Administration Guide』の「About the LDIF File Format 」を参照してください。

現在の DS チューニングパラメーターの値のバックアップ

  1. DS チューニングパラメーターの現在の値を取得します。
    • データベースキャッシュのサイズおよびデータベースロック:
      # ldapsearch -D "cn=directory manager" -w secret -b "cn=config,cn=ldbm database,cn=plugins,cn=config" nsslapd-dbcachesize nsslapd-db-locks
      
      ...
      nsslapd-dbcachesize: 10000000
      nsslapd-db-locks: 50000
      ...
    • エントリーキャッシュサイズおよび DN キャッシュサイズ:
      # ldapsearch -D "cn=directory manager" -w secret -b "cn=userRoot,cn=ldbm database,cn=plugins,cn=config" nsslapd-cachememsize nsslapd-dncachememsize
      
      ...
      nsslapd-cachememsize: 10485760
      nsslapd-dncachememsize: 10485760
      ...
  2. 取得した値を書き留めておきます。プロビジョニングの完了後、パラメーターの値はリセットされます。

データベース、ドメインエントリー、および DN キャッシュサイズの調整

データベースのキャッシュサイズの場合:
  1. 必要な値を決定します。
    通常は 200 MB から 500 MB の間で推奨されます。ユースケースに適した値は、システムで利用可能なメモリーにより異なります。
    • メモリーが 8 GB を超える場合: 500 MB
    • メモリー 8 GB - 4 GB → 200 MB
    • メモリー 4 GB 未満 → 100 MB
  2. このテンプレートを使用して決定される値を設定します。
    dn: cn=config,cn=ldbm database,cn=plugins,cn=config
    changetype: modify
    replace: nsslapd-dbcachesize
    nsslapd-dbcachesize: db_cache_size_in_bytes
    ldapmodify ユーティリティーを使用して LDAP 属性を変更する例は、例37.1「ldapmodify を使用した LDAP 属性の変更」

例37.1 ldapmodify を使用した LDAP 属性の変更

  1. ldapmodify コマンドを実行してから、属性値を変更するステートメントを追加します。以下に例を示します。
    # ldapmodify -D "cn=directory manager" -w secret -x
    dn: cn=config,cn=ldbm database,cn=plugins,cn=config
    changetype: modify
    replace: nsslapd-dbcachesize
    nsslapd-dbcachesize: 200000000
  2. Ctrl+D を押して、変更をサーバーに送信します。操作が正常に完了した場合は、以下のメッセージが表示されます。
    modifying entry "cn=config,cn=ldbm database,cn=plugins,cn=config"
ドメインエントリーのキャッシュサイズの場合:
  1. 必要な値を決定します。
    推奨値は 100 MB から 400 MB の間です。適切な値は、システムで利用可能なメモリーにより異なります。
    • メモリーが 4 GB を超える場合: 400 MB
    • メモリー 2 GB - 4 GB → 200 MB
    • メモリー 2 GB 未満 → 100 MB
    大規模な静的グループをプロビジョニングする場合、エントリーキャッシュのサイズがすべてのエントリー(グループおよびメンバー)に収まるのに十分な大きさであることが推奨されます。
  2. このテンプレートを使用して決定される値を設定します。
    dn: cn=userRoot,cn=ldbm database,cn=plugins,cn=config
    changetype: modify
    replace: nsslapd-cachememsize
    nsslapd-cachememsize: entry_cache_size_in_bytes
ドメイン名(DN)キャッシュサイズの場合:
  1. 最適なパフォーマンスを得るには、DN キャッシュがプロビジョニングされたエントリーのすべての DN に適合することが推奨されます。ユースケースに適した値を予測するには、以下を実行します。
    1. ファイル内のすべての DN エントリーの数を判別します。DN エントリーは dn: で始まる行です。たとえば、# grep、sed wc を使用します
      # grep '^dn: ' ldif_file | sed 's/^dn: //' | wc -l
      92200
    2. LDIF ファイルのすべての DN エントリー文字列のサイズを決定します。
      # grep '^dn: ' ldif_file | sed 's/^dn: //' | wc -c
      9802460
    3. 平均 DN サイズの取得: すべての DN エントリーの文字列のサイズをファイル内のすべての DN エントリーの数で分割します。
      例: 9,802,460 / 92,200 ≈ 106
    4. 平均のメモリーサイズの取得: 平均の DN サイズに 2 を乗算した数値に、32 を加算します。
      例: (106 * 2) + 32 = 244
    5. 適切な DN のキャッシュサイズを取得: 平均メモリーサイズで LDIF ファイルの DN エントリーの総数を乗算します。
      例: 244 * 92,200 = 22,496,800
  2. このテンプレートを使用して決定される値を設定します。
    dn: cn=userRoot,cn=ldbm database,cn=plugins,cn=config
    changetype: modify
    Replace: nsslapd-dncachememsize
    Nsslapd-dncachememsize: dn_cache_size

Unnecesary Services および Adjusting Database ロックの無効化

  1. MemberOf および Schema 互換性プラグインを無効にします。
    dn: cn=MemberOf Plugin,cn=plugins,cn=config
    changetype: modify
    replace: nsslapd-pluginEnabled
    nsslapd-pluginEnabled: off
    dn: cn=Schema Compatibility,cn=plugins,cn=config
    changetype: modify
    replace: nsslapd-pluginEnabled
    nsslapd-pluginEnabled: off
    MemberOf を無効にすると、プロビジョニングが高速化されます。スキーマ互換性を無効にすると、操作の期間が短縮されます。
    ldapmodify ユーティリティーを使用して LDAP 属性を変更する例は、例37.1「ldapmodify を使用した LDAP 属性の変更」
  2. トポロジーにレプリカがインストールされていない場合 「一括プロビジョニングの推奨事項と前提条件」)、コンテンツの同期および変更ログプラグインを無効にします。
    dn: cn=Content Synchronization,cn=plugins,cn=config
    changetype: modify
    replace: nsslapd-pluginEnabled
    nsslapd-pluginEnabled: off
    dn: cn=Retro Changelog Plugin,cn=plugins,cn=config
    changetype: modify
    replace: nsslapd-pluginEnabled
    nsslapd-pluginEnabled: off
    これらの追加プラグインを無効にすると、プロビジョニングのパフォーマンスを向上させることができます。
  3. IdM サーバーを停止します。これにより、DS インスタンスも停止します。
    # ipactl stop
    次の手順で、データベースロックの数を設定するには、DS を停止する必要があります。後で再起動します。
  4. データベースロックの数を調整します。適切な値は、プロビジョニングされたエントリーの数の半分と等しくなります。
    • 最小値は 10,000
    • 最大値は 200,000
    DS が停止しているため、/etc/dirsrv/slapd-EXAMPLE-COM/dse.ldif ファイルを変更して値を設定する必要があります。
    dn: cn=config,cn=ldbm database,cn=plugins,cn=config
    ...
    nsslapd-db-locks: db_lock_number
    IdM は、メンバーシップの計算時に多数のデータベースページにアクセスします。アクセスするページが多いほど、プロビジョニングにより多くのロックが必要になります。
  5. DS を開始します。
    # systemctl start dirsrv.target

エントリーのインポート

LDIF ファイルから IdM LDAP インスタンスに新しいエントリーをインポートする。たとえば、ldapadd ユーティリティーを使用する場合は、次のコマンドを実行します。
# ldapadd -D "binddn" -y password_file -f ldif_file
ldapadd の使用に関する詳細はldapadd(1) の man ページを参照してください。

Disabled Services および Restoring the Original Attribute 値の再有効化

  1. MemberOf を有効にします。
    dn: cn=MemberOf Plugin,cn=plugins,cn=config
    changetype: modify
    replace: nsslapd-pluginEnabled
    nsslapd-pluginEnabled: on
    ldapmodify ユーティリティーを使用して LDAP 属性を変更する例は、例37.1「ldapmodify を使用した LDAP 属性の変更」
  2. DS を再起動します。
    # systemctl restart dirsrv.target
    前のステップで MemberOf を有効にしているので、この時点で DS を再起動する必要があります。
  3. fixup-memberof.pl スクリプトを (objectClass=*) フィルターで実行し、プロビジョニングしたすべてのエントリーの memberOf 属性を再生成して更新します。以下に例を示します。
    # fixup-memberof.pl -D "cn=directory manager" -j password_file -Z server_id -b "suffix" -f "(objectClass=*)" -P LDAP
    MemberOf プラグインがエントリーをインポートする際に無効にされているため、fixup-memberof.pl を実行する必要があります。プロビジョニングを続行できるようにするには、スクリプトが正常に完了する必要があります。
    fixup-memberof.pl の詳細は、fixup-memberof.pl(8) man ページを参照してください。
  4. Schema Compatibility プラグインを有効にします。
    dn: cn=Schema Compatibility,cn=plugins,cn=config
    changetype: modify
    replace: nsslapd-pluginEnabled
    nsslapd-pluginEnabled: on
  5. dn: cn=Content Synchronization,cn=plugins,cn=config
    changetype: modify
    replace: nsslapd-pluginEnabled
    nsslapd-pluginEnabled: on
    dn: cn=Retro Changelog Plugin,cn=plugins,cn=config
    changetype: modify
    replace: nsslapd-pluginEnabled
    nsslapd-pluginEnabled: on
  6. でバックアップしたデータベースキャッシュ、エントリーキャッシュ、および DN 「現在の DS チューニングパラメーターの値のバックアップ」
    dn: cn=config,cn=ldbm database,cn=plugins,cn=config
    changetype: modify
    replace: nsslapd-dbcachesize
    nsslapd-dbcachesize: backup_db_cache_size
    
    dn: cn=userRoot,cn=ldbm database,cn=plugins,cn=config
    changetype: modify
    Replace: nsslapd-dncachememsize
    Nsslapd-dncachememsize: backup_dn_cache_size
    -
    replace: nsslapd-cachememsize
    nsslapd-cachememsize: backup_entry_cache_size
  7. DS を停止します。
    # systemctl stop dirsrv.target
  8. 「現在の DS チューニングパラメーターの値のバックアップ」。DS が停止しているため、/etc/dirsrv/slapd-EXAMPLE-COM/dse.ldif ファイルを変更して値を設定する必要があります。
    dn: cn=config,cn=ldbm database,cn=plugins,cn=config
    ...
    nsslapd-db-locks: backup_db_lock_number
  9. IdM サーバーを起動します。
    # ipactl start
    これにより、DS を含むすべての IdM サービスが起動します。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。