ユーザー情報や組織情報などを一元的に管理するディレクトリサーバは、企業システムの中で重要な役割を果たしています。この連載ではオープンソースの「OpenLDAP」を用いて、ディレクトリサーバの構築・活用方法を解説します。(編集部)
いよいよ連載最終回となった今回は、LDAPクライアントからの負荷を分散しディレクトリデータの冗長性を高めるレプリケーションを構築していきます。マスタサーバ‐スレーブサーバ間の経路が安全でない場合は、レプリケーション対象のディレクトリデータのすべてにアクセス可能なレプリケーションユーザーの取り扱いに注意して設定を行うとよいでしょう。
OpenLDAPのレプリケーション機能の実装には、slurpdという専用のデーモンプログラムを利用しマスタサーバから変更情報をスレーブサーバへ送付する方式と、overlay機能で提供されるsyncprovモジュールを利用してスレーブサーバからマスタサーバを検索して変更情報を取得する方式の2つが存在します。
slurpdは、OpenLDAP 2.4以降はsyncprovモジュールに置き換えられ提供されていないプログラムです。ただし、本連載で対象とするCentOS 5.2に含まれるOpenLDAP 2.3.27では、従来どおりこのプログラムが利用可能です。
# rpm -ql openldap-servers | grep slurpd |
また、もう1つのレプリケーション実装であるsyncprovモジュールも、CentOS 5.2に含まれるOpenLDAP 2.3.27で利用することができます。このモジュールの存在はmonitorデータベースを利用して確認できます。
# vi /etc/openldap/slapd.conf |
このように、CentOS 5.2にバンドルされるopenldap-serversでは2つのレプリケーション方式を選択できます。ただし、データの不整合が起きやすいためOpenLDAP 2.4以降ではslurpdプログラムが提供されていないことや、slurpdプログラムのアーキテクチャ上、レプリケーション構築の過程で一度マスタサーバを停止し、更新が行われないデータの静止点を設ける必要があるなどの理由から、今後はsyncprovモジュールを選択する機会が多くなるでしょう。
このことから、本記事ではsyncprovモジュールを利用したレプリケーションについて説明していきます。
それでは早速、syncprovモジュールを利用したレプリケーションを構成していきます。今回は、マスタサーバのIPアドレスを「192.168.1.10」、スレーブサーバのIPアドレスを「192.168.1.20」として、動作モードには同期的なレプリケーションを行う「refreshAndPersist」を採用します。
また、レプリケーションの対象とするデータは「dc=my-domain,dc=com」データベース以下すべてとし、レプリケーションユーザーのDNは「cn=repl,dc=my-domain,dc=com」を利用します。レプリケーションユーザーはレプリケーションの対象となるディレクトリデータすべてにアクセス可能としますので、今回はSASL DIGEST-MD5を用いて、レプリケーションユーザーの認証情報を保護します。
まずは、マスタサーバ上にレプリケーションユーザー「repl」を作成します。
[root@master]# saslpasswd2 -c -u my-domain.com repl |
続いて、マスタサーバのslapd.confを編集していきます。slapd.confのグローバルセクションで、「authz-regexp」ディレクティブを用いてレプリケーションユーザーとしてスレーブサーバから検索を行うSASLデータベース上の「repl」ユーザーを、OpenLDAPで利用するDN「cn=repl,dc=my-domain,dc=com」へ変換します。そして「access to」ディレクティブを用いて、そのDNに「dc=my-domain,dc=com」ディレクトリデータベースの検索を許可します。
[root@master]# vi /etc/openldap/slapd.conf |
さらに、slapd.confの「dc=my-domain,dc=com」データベースセクションには、「overlay syncprov」「syncprov-checkpoint」「syncprov-sessionlog」を追加し、syncprovモジュールを利用する旨と、「index」ディレクティブを追加しスレーブサーバからの検索に適したインデックスを追加します。
[root@master]# vi /etc/openldap/slapd.conf |
slapd.confの編集後は、既存エントリのインデックスを再構築し、マスタサーバを再起動します。
[root@master]# service ldap stop |
Copyright © ITmedia, Inc. All Rights Reserved.