documents:other:memo02:other-049
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン | |||
| documents:other:memo02:other-049 [2026/05/17 14:51] – [OPENLDAPのバックエンドをbdbからmdbに入れ替えついでにOLC(cn=config)対応する] k896951 | documents:other:memo02:other-049 [2026/05/17 14:52] (現在) – [202.OPENLDAPのバックエンドをbdbからmdbに入れ替えついでにOLC(cn=config)対応する] k896951 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | ====== 203.OPENLDAPのバックエンドをbdbからmdbに入れ替えついでにOLC(cn=config)対応する ====== | ||
| + | |||
| + | 2016/ | ||
| + | OPENLDAP 2.4.44 でbdb非推奨になったのを受け、mdbへの移行を行う自分用メモ。\\ | ||
| + | slapd.conf はまだ使えるけど後で泣いても知らないよー、と脅しがあったのでon-line configuration (OLC) へ移行を行う自分用メモ。\\ | ||
| + | |||
| + | 2016/ | ||
| + | 実運用環境で mdb に移るときは maxsize の指定を必ずやっとくように。 | ||
| + | 私が対応してきた環境ではエントリーが5万を超えた辺りで" | ||
| + | どうもmaxsizeの指定が無いとデフォルトの小さなサイズ(10485760B→10MB)で処理を行おうとしてエントリーの追加についていけなくなってしまうみたい。たぶん1エントリーずつなら出来ていた追加もすぐ限界が来ると思う。サンプルにあったサイズ(1073741824B→1GB)なら問題なく処理できた。 | ||
| + | |||
| + | |||
| + | |||
| + | 環境は FreeBSD/ | ||
| + | |||
| + | |||
| + | ===== バックエンドデータベースを bdb から mdb へ変更する ===== | ||
| + | |||
| + | いつの頃からかバックエンドデータベースとして bdb が非推奨になりPortsのデフォルトオプションでも bdb が外されていたので mdb に変更する。 | ||
| + | |||
| + | まだ指定すれば使えるけど、DEPRECATED(非推奨)になっちゃってる。\\ | ||
| + | {{: | ||
| + | |||
| + | ==== bdb稼働状態のOPENLDAPからLDIF形式でデータをダンプする ==== | ||
| + | |||
| + | bdbからmdbへの変換パスは無い様なので、バックアップ・リストアの手順を踏むことになる。 | ||
| + | Apache Directory Studio で参照するとこんなツリーをダンプする。\\ | ||
| + | {{: | ||
| + | |||
| + | slapcatコマンドを使ってLDIF形式でダンプを取得した。 | ||
| + | < | ||
| + | root@openldap:/ | ||
| + | 57f66986 bdb_db_open: | ||
| + | Expect poor performance for suffix " | ||
| + | root@openldap:/ | ||
| + | </ | ||
| + | |||
| + | ==== 取得したLDIF形式ダンプから特定のアトリビュート指定を取り除く ==== | ||
| + | |||
| + | ここで取得したLDIF形式ダンプをldapaddコマンドで投入し直すことになるが、このままではエラーとなる。 | ||
| + | 以下はバックエンドをmdbに入れ替えしたOPENLDAPに投入したところ発生したエラーの一部。 | ||
| + | < | ||
| + | root@openldap:/ | ||
| + | Enter LDAP Password: | ||
| + | adding new entry " | ||
| + | ldap_add: Constraint violation (19) | ||
| + | additional info: structuralObjectClass: | ||
| + | |||
| + | root@openldap:/ | ||
| + | </ | ||
| + | |||
| + | 各エントリーにあるアトリビュート指定行をいくつか削除しておく必要があった。 | ||
| + | 今回の作業では以下の行を各エントリーの定義から削除した。もっと種類があるのかもしれないが私にはわからない。 | ||
| + | * structuralObjectClass | ||
| + | * entryUUID | ||
| + | * creatorsName | ||
| + | * createTimestamp | ||
| + | * entryCSN | ||
| + | * modifiersName | ||
| + | * modifyTimestamp | ||
| + | |||
| + | ^ 変更前 | ||
| + | |< | ||
| + | dn: dc=hgotoh, | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | dc: hgotoh | ||
| + | o: hgotoh inc | ||
| + | structuralObjectClass: | ||
| + | entryUUID: ae888424-2024-1036-9c5c-27e7a8b8c544 | ||
| + | creatorsName: | ||
| + | createTimestamp: | ||
| + | entryCSN: 20161006152413.646899Z# | ||
| + | modifiersName: | ||
| + | modifyTimestamp: | ||
| + | |||
| + | dn: ou=Peoples, | ||
| + | objectClass: | ||
| + | ou: Peoples | ||
| + | structuralObjectClass: | ||
| + | entryUUID: ae88b7c8-2024-1036-9c5d-27e7a8b8c544 | ||
| + | creatorsName: | ||
| + | createTimestamp: | ||
| + | entryCSN: 20161006152413.648232Z# | ||
| + | modifiersName: | ||
| + | modifyTimestamp: | ||
| + | |||
| + | dn: ou=Groups, | ||
| + | objectClass: | ||
| + | ou: Groups | ||
| + | structuralObjectClass: | ||
| + | entryUUID: ae88e25c-2024-1036-9c5e-27e7a8b8c544 | ||
| + | creatorsName: | ||
| + | createTimestamp: | ||
| + | entryCSN: 20161006152413.649325Z# | ||
| + | modifiersName: | ||
| + | modifyTimestamp: | ||
| + | |||
| + | dn: cn=user1, | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | cn: user1 | ||
| + | sn: user1 | ||
| + | structuralObjectClass: | ||
| + | entryUUID: ae8911dc-2024-1036-9c5f-27e7a8b8c544 | ||
| + | creatorsName: | ||
| + | createTimestamp: | ||
| + | entryCSN: 20161006152413.650540Z# | ||
| + | modifiersName: | ||
| + | modifyTimestamp: | ||
| + | |||
| + | dn: cn=dev1, | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | cn: dev1 | ||
| + | member: cn=user1, | ||
| + | structuralObjectClass: | ||
| + | entryUUID: ae893ff4-2024-1036-9c60-27e7a8b8c544 | ||
| + | creatorsName: | ||
| + | createTimestamp: | ||
| + | entryCSN: 20161006152413.651718Z# | ||
| + | modifiersName: | ||
| + | modifyTimestamp: | ||
| + | |||
| + | </ | ||
| + | dn: dc=hgotoh, | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | dc: hgotoh | ||
| + | o: hgotoh inc | ||
| + | |||
| + | dn: ou=Peoples, | ||
| + | objectClass: | ||
| + | ou: Peoples | ||
| + | |||
| + | dn: ou=Groups, | ||
| + | objectClass: | ||
| + | ou: Groups | ||
| + | |||
| + | dn: cn=user1, | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | cn: user1 | ||
| + | sn: user1 | ||
| + | |||
| + | dn: cn=dev1, | ||
| + | objectClass: | ||
| + | objectClass: | ||
| + | cn: dev1 | ||
| + | member: cn=user1, | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | ==== OPENLDAP停止 ==== | ||
| + | |||
| + | 以下のコマンドで停止。 | ||
| + | < | ||
| + | service slapd stop | ||
| + | </ | ||
| + | |||
| + | ==== slapd.conf書き換え ==== | ||
| + | |||
| + | slapd.confの該当する記述をmdb用に書き換えする。 | ||
| + | |||
| + | ^ 変更前 | ||
| + | |< | ||
| + | moduleload | ||
| + | </ | ||
| + | moduleload | ||
| + | </ | ||
| + | |< | ||
| + | database | ||
| + | </ | ||
| + | database | ||
| + | maxsize | ||
| + | </ | ||
| + | |||
| + | ==== データベースディレクトリのバックアップ ==== | ||
| + | |||
| + | bdbのデータベースファイルがディレクトリ / | ||
| + | mdbバックエンドで正しく動作しているようならあとで削除する。 | ||
| + | |||
| + | ディレクトリはmdbバックエンドでの初回起動時に作成されるので、作り直さなくてもよい。 | ||
| + | |||
| + | ==== OPENLDAP開始 ==== | ||
| + | |||
| + | 以下のコマンドで開始。 | ||
| + | < | ||
| + | service slapd start | ||
| + | </ | ||
| + | |||
| + | ==== LDIF形式ダンプを取り込む ==== | ||
| + | |||
| + | 先に編集を済ませたLDIF形式ダンプをldapaddコマンドで取り込む。 | ||
| + | < | ||
| + | root@openldap:/ | ||
| + | Enter LDAP Password: | ||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | adding new entry " | ||
| + | |||
| + | root@openldap:/ | ||
| + | </ | ||
| + | |||
| + | 再度Apache Directory StudioでOPENLDAPに接続し、参照できることを確認した。 | ||
| + | |||
| + | ==== 注意 ==== | ||
| + | |||
| + | createTimestampやmodifyTimestampといったオペレーショナルなアトリビュートを移せないので、これらをあてにしているアプリケーションは問題を起こすだろう。 | ||
| + | 必要であれば他の方法を探すこと。 | ||
| + | |||
| + | |||
| + | ===== slapd.confからOLC(cn=config)へ移行する ===== | ||
| + | |||
| + | 最近ではOPENLDAPの設定記事でこちらの説明をしている記事が増えてきている。また、はやいうちにOLCに移行した方がいいぞー、と脅してるブログ記事があったり。 | ||
| + | |||
| + | 小心者なのでやれるうちにやっておくことにする。 | ||
| + | |||
| + | ==== OPENLDAP停止 ==== | ||
| + | |||
| + | 以下のコマンドで停止。 | ||
| + | < | ||
| + | service slapd stop | ||
| + | </ | ||
| + | |||
| + | ==== / | ||
| + | |||
| + | FreeBSDの場合、/ | ||
| + | < | ||
| + | slapd_cn_config=" | ||
| + | </ | ||
| + | |||
| + | ==== / | ||
| + | |||
| + | 次の3行を、「database mdb」の記述行より前に記述。 | ||
| + | |||
| + | < | ||
| + | database | ||
| + | rootdn | ||
| + | rootpw | ||
| + | </ | ||
| + | |||
| + | 「database mdb」記述行以降を削除しないこと。slaptestコマンドがマイグレーションを行う時の参照情報の為。 | ||
| + | |||
| + | ==== slaptestコマンドでマイグレーションする ==== | ||
| + | |||
| + | slapd.confの内容からマイグレーション用ファイルが生成され、ディレクトリ / | ||
| + | < | ||
| + | root@openldap:/ | ||
| + | root@openldap:/ | ||
| + | root@openldap:/ | ||
| + | config file testing succeeded | ||
| + | root@openldap:/ | ||
| + | total 8 | ||
| + | drwxr-x--- | ||
| + | -rw------- | ||
| + | root@openldap:/ | ||
| + | </ | ||
| + | |||
| + | 直接書き換えるとCRCエラーになるのでやっちゃダメ。 | ||
| + | |||
| + | ==== OPENLDAP開始 ==== | ||
| + | |||
| + | 以下のコマンドで開始。 | ||
| + | < | ||
| + | service slapd start | ||
| + | </ | ||
| + | |||
| + | 再度Apache Directory StudioでOPENLDAPに接続し、参照できることを確認した。 | ||
| + | |||
| + | ==== cn=configを参照してみる ==== | ||
| + | |||
| + | slapd.conf に記述した database config はcn=config のスキーマに対応する指定。Apache Directory Studio でこのスキーマを参照してみる。バインドするユーザは cn=admin, | ||
| + | |||
| + | {{: | ||
| + | |||
| + | slapd.conf に記述していた database mdb の内容がLDAPのツリーから参照できている。 | ||
| + | |||
| + | slapd.confを変更した場合はサービス再起動が必要だったが、OLCならその必要はない。LDAP上のエントリを書き換えするとそのまま内容が反映される。はず。 | ||
| + | そしてその変更はディレクトリ slapd.d 以下のファイルに反映される。 | ||
| + | |||
| + | 一度OLCで稼働すれば slapd.conf は不要な筈だけど、他の記事では消すことをしていないような……気持ちはわかる。 | ||
| + | {{tag> LDAP OPENLDAP FreeBSD cn=config OLC 技術資料}} | ||
documents/other/memo02/other-049.txt · 最終更新: by k896951
