OpenLDAP

最終回 レプリケーションで冗長構成


ユーザー情報や組織情報などを一元的に管理するディレクトリサーバは、企業システムの中で重要な役割を果たしています。この連載ではオープンソースの「OpenLDAP」を用いて、ディレクトリサーバの構築・活用方法を解説します。(編集部)

伊藤忠テクノソリューションズ株式会社
菊池 研自
2009/5/1

 いよいよ連載最終回となった今回は、LDAPクライアントからの負荷を分散しディレクトリデータの冗長性を高めるレプリケーションを構築していきます。マスタサーバ‐スレーブサーバ間の経路が安全でない場合は、レプリケーション対象のディレクトリデータのすべてにアクセス可能なレプリケーションユーザーの取り扱いに注意して設定を行うとよいでしょう。

レプリケーション方式の選択

 OpenLDAPのレプリケーション機能の実装には、slurpdという専用のデーモンプログラムを利用しマスタサーバから変更情報をスレーブサーバへ送付する方式と、overlay機能で提供されるsyncprovモジュールを利用してスレーブサーバからマスタサーバを検索して変更情報を取得する方式の2つが存在します。

 slurpdは、OpenLDAP 2.4以降はsyncprovモジュールに置き換えられ提供されていないプログラムです。ただし、本連載で対象とするCentOS 5.2に含まれるOpenLDAP 2.3.27では、従来どおりこのプログラムが利用可能です。

# rpm -ql openldap-servers | grep slurpd
/usr/sbin/slurpd
/usr/share/man/man8/slurpd.8.gz

 また、もう1つのレプリケーション実装であるsyncprovモジュールも、CentOS 5.2に含まれるOpenLDAP 2.3.27で利用することができます。このモジュールの存在はmonitorデータベースを利用して確認できます。

# vi /etc/openldap/slapd.conf
……[略]……
database     monitor
access to dn.subtree="cn=Monitor"
by dn.exact="cn=monitor" read
rootdn      "cn=monitor"
rootpw      secret

# service ldap restart
# ldapsearch -x -D cn=monitor -w secret -b cn=Overlays,cn=Monitor + -LLL

……[略]……
monitoredInfo: glue
monitoredInfo: syncprov
monitoredInfo: chain

 このように、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を用いて、レプリケーションユーザーの認証情報を保護します。

図1
図1 レプリケーション構成概要

マスタサーバの設定

 まずは、マスタサーバ上にレプリケーションユーザー「repl」を作成します。

[root@master]# saslpasswd2 -c -u my-domain.com repl
Password:password
Again (for verification):password
[root@master]# sasldblistusers2
repl@my-domain.com: userPassword
[root@master]# chgrp ldap /etc/sasldb2

[root@master]# vi repl.ldif
dn: cn=repl,dc=my-domain,dc=com
objectClass: Person
cn: repl
sn: repl
[root@master]# ldapadd -x -D cn=Manager,dc=my-domain,dc=com -w secret -f repl.ldif

 続いて、マスタサーバの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
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema
……[略]……
sasl-realm    my-domain.com
sasl-host     localhost
authz-regexp
        uid=([^,]*),cn=my-domain.com,cn=DIGEST-MD5,cn=auth
        cn=$1,dc=my-domain,dc=com

……[略]……
access to dn.subtree="ou=People,dc=my-domain,dc=com" attrs=shadowLastChange
  by dn.exact="cn=repl,dc=my-domain,dc=com" read
  by self write
  by * read

access to dn.regex=".*,ou=(People|Group),dc=my-domain,dc=com$" attrs=userPassword
  by dn.exact="cn=repl,dc=my-domain,dc=com" read
  by self write
  by anonymous auth

access to dn.subtree="dc=my-domain,dc=com"
  by * read

 さらに、slapd.confの「dc=my-domain,dc=com」データベースセクションには、「overlay syncprov」「syncprov-checkpoint」「syncprov-sessionlog」を追加し、syncprovモジュールを利用する旨と、「index」ディレクティブを追加しスレーブサーバからの検索に適したインデックスを追加します。

[root@master]# vi /etc/openldap/slapd.conf
……[略]……
database        bdb
suffix          "dc=my-domain,dc=com"
rootdn          "cn=Manager,dc=my-domain,dc=com"
rootpw          secret
directory       /var/lib/ldap

overlay syncprov                                  ←syncprovモジュールを利用
syncprov-checkpoint 100 10                      ←チェックポイントのタイミング
syncprov-sessionlog 100                          ←セッションログを利用

index objectClass                     eq,pres
index ou,cn,mail,surname,givenname    eq,pres,sub
index uidNumber,gidNumber,loginShell  eq,pres
index uid,memberUid                   eq,pres,sub
index entryCSN,entryUUID        eq            ←複製処理にインデックスを利用

 slapd.confの編集後は、既存エントリのインデックスを再構築し、マスタサーバを再起動します。

[root@master]# service ldap stop

[root@master]# slapindex

[root@master]# chown -R ldap.ldap /var/lib/ldap

[root@master]# service ldap start

第4回へ
1/3

Index
OpenLDAPで始めるディレクトリサーバ構築
 最終回 レプリケーションで冗長構成
Page 1
レプリケーション方式の選択
レプリケーション構成概要
マスタサーバの設定
  Page 2
スレーブサーバの設定
レプリケーションの開始
スレーブサーバの設定
updateref動作の確認
  Page 3
クライアントの設定

Linux Square全記事インデックス


 Linux Squareフォーラム サーバ構築・運用関連記事
連載:Heartbeatでかんたんクラスタリング(連載中)
オープンソースソフトウェアの「Heartbeat」を使ってHAクラスタを実現し、サービスを「落とさない」仕組みを実現します
特集:Apache 2.2でWebサイトをパフォーマンスアップ!
最新安定版Apache 2.2は、何が変わったのか? 最新のApacheを新機能の使い方とともに解説する
連載:実用 Apache 2.0運用・管理術(全8回)
本連載では、Apache 2.0の運用や管理方法を解説する。まず必須設定と基本的なセキュリティ対策を行い今後の運用に備える
連載:実用 BIND 9で作るDNSサーバ(全15回)
本連載では、BIND 9の構築/運用方法を解説していく。実際に役立つことを目的に、セキュリティや大規模運用などのテーマを取り上げていく
連載:実用qmailサーバ運用・管理術(全14回)
本連載を通して、qmailによるメールサーバの高度な構築・運用・管理術を紹介。SPAM対策やML管理からサーバでのウイルスチェックなどまで
特集:Samba 3.0の全貌 改訂版
Samba 3.0リリースから8カ月。ここであらためて、Samba 3.0系列の新機能、インストール方法、国際化の現状を解説する

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します

TechTargetジャパン

Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ



- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH