Search

openldap レプリケーション設定

2015年10月19日

環境

LDAP マスター (プロバイダ)
centos 6.4
openldap-2.4.23-32

LDAP スレーブ (コンシューマ)
centos 6.4
openldap-2.4.23-32

※プロバイダ、コンシューマはopenldap用語

 

LDAPレプリケーションの目的

LDAPが多くのシステムと連携し、重要なデータを扱うようになるとサーバが停止した場合の影響がお起きる。
LDAPサーバが停止してしまうと連携先のサーバへアクセスできなくなってしまうため、データの複製機能が実装されている。

 

レプリケーション機能の概要

opneldapは同期レプリケーションと呼ばれる複製方式をサポートしている。
LDAP contant Synchronization Protocol を使って、必要に応じて最新情報を複製する。全データを複製する処理と差分だけを複製する処理の両方をサポートしている。

 

データ更新方式

■refreshOnly
コンシューマは定期的にプロバイダに問い合わせを行いマス。必要があれば、データの複製が行われます。

■refreshAndPersistent
コンシューマはプロバイダと接続を維持使用とします。プロバイダが更新の必要性を判断し、必要に応じてコンシューマにデータを複製します。

※上記どちらも接続はコンシューマからプロバイダに対して行う。
コンシューマとプロバイダで管理しているデータに大きなずれが生じた場合には、すべてのデータが転送されます。

 

プロバイダの設定

cn=module,cn=configというエントリを作成し読み込むモジュールを定義する
# vi syncprov-module.ldif

dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib/openldap
olcModuleLoad: syncprov.la

# ldapadd -x -W -D cn=config -f syncprov-module.ldif

Enter LDAP Password:
adding new entry "cn=module,cn=config"

データベースの設定エントリの配下にプロバイダ設定用のエントリを追加
# vi syncprov.ldif

dn: olcOverlay=syncprov,olcDatabase={2}bdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionLog: 100

# ldapadd -x -W -D cn=config -f syncprov.ldif

Enter LDAP Password:
adding new entry "olcOverlay=syncprov,olcDatabase={2}bdb,cn=config"

コンシューマの設定

コンシューマ側では通常のLDAPサーバとしての設定を行った上でプロバイダへの接続方法、同期方法、複製するデータに関する設定を行う

dn: olcDatabase={2}bdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  # プロバイダへの接続情報
  provider=ldap://192.168.122.80:389/
  bindmethod=simple
  binddn="cn=Manager,dc=unix-power,dc=net"
  credentials=password
  # レプリケーションタイプ
  type=refreshAndPersist
  # レプリケーション間隔を指定。下記では5分。
  interval=00:00:05:00
  # LDAP検索に関する設定。scope=subでサブツリーを含める。
  searchbase="dc=example,dc=com"
  scope=sub
  # リトライ間隔、リトライ回数、リトライ回数経過後の再リトライ開始までの時間、再リトライの回数
  retry="60 10 300 3"

# ldapmodify -x -W -D cn=config -f syncrepl.ldif

Enter LDAP Password:
modifying entry "olcDatabase={2}bdb,cn=config"

同期確認

プロバイダ側でデータを登録する。

vi test.ldif

dn: cn=test3,ou=system,dc=example,dc=com
cn: test3
description: test3
objectclass: person
objectclass: top
sn: test3
userpassword: test3

# ldapadd -x -W -D cn=Manager,dc=example,dc=com -f test.ldif
Enter LDAP Password:
adding new entry “cn=test3,ou=system,dc=example,dc=com”

登録確認
# ldapsearch -x -LLL -D “cn=Manager,dc=example,dc=com” -W

・・・・
dn: cn=test3,ou=system,dc=example,dc=com
cn: test3
description: test3
objectClass: person
objectClass: top
sn: test3
userPassword:: dGVzdDM=

コンシューマでデータ確認

# ldapsearch -x -LLL -D “cn=Manager,dc=example,dc=com” -W

・・・・
dn: cn=test3,ou=system,dc=example,dc=com
cn: test3
description: test3
objectClass: person
objectClass: top
sn: test3
userPassword:: dGVzdDM=

 

参考にしたサイト

http://www.unix-power.net/linux/openldap_sync.html