概要
slurpd を利用し冗長構成を構築する。
前提条件としては、OPEN LDAPサーバが構築されていること
構築環境は以下とする
- マスター側 192.168.24.100
- スレーブ側 192.168.24.101
マスター側 (192.168.24.100) の設定
(1)OPEN LDAPのパッケージが導入されているか確認する
# rpm -ql openldap-servers | grep slurpd /usr/sbin/slurpd /usr/share/man/man8/slurpd.8.gz
(2)slapd.confのバックアップ
# cp -p /etc/openldap/slapd.conf /etc/openldap/slapd.conf.yyyymmdd
(3)レプリケーション時のログファイルを作成
# mkdir -p /var/log/ldap # chown ldap:ldap /var/log/ldap # touch /var/log/ldap/replog # chmod 600 /var/log/ldap/replog # chown ldap:ldap /var/log/ldap/replog
(4)slapd.confの編集
# vi /etc/openldap/slapd.conf
replica host="ldap.example.jp"
replogfile /var/log/ldap/replog
binddn="cn=repl,dc=example,dc=jp"
bindmethod=simple
credentials={MD5}qjYRCALao3lp+bMyUtVjaQ==
スレーブ側 (192.168.24.101) のslapd.conf 設定
(1)OPEN LDAP関係のパッケージをインストール
# yum -y install openldap openldap-servers openldap-clients openldap-devel # rpm -ql openldap-servers | grep slurpd /usr/sbin/slurpd /usr/share/man/man8/slurpd.8.gz
ログファイル出力の設定は、以前のブログを参照
(2)マスター側から、slapd.conf をコピーする
マスター側(192.168.24.100)で実施 # scp /etc/openldap/slapd.conf hoge@192.168.24.101:/var/tmp スレーブ側(192.168.24.101)で実施 # cp -p /etc/openldap/slapd.conf /etc/openldap/slapd.conf.org # ll /etc/openldap/slapd.conf.org -rw-r----- 1 root ldap 3799 8月 11 22:19 /etc/openldap/slapd.conf.org # mv /var/tmp/slapd.conf /etc/openldap/slapd.conf # chown root:ldap /etc/openldap/slapd.conf # ll /etc/openldap/slapd.conf -rw-r----- 1 root ldap 4235 11月 21 13:28 /etc/openldap/slapd.conf
(3)slapd.conf を編集する
# vi /etc/openldap/slapd.conf
マスター側で編集した、slapd.conf の設定は削除する
#ここから
replica host="ldap.example.jp"
replogfile /var/log/ldap/replog
binddn="cn=repl,dc=example,dc=jp"
bindmethod=simple
credentials={MD5}qjYRCALao3lp+bMyUtVjaQ==
#ここまで
#以下を追加
rootdn "cn=repl,dc=example,dc=jp"
rootpw {MD5}qjYRCALao3lp+bMyUtVjaQ==
updatedn "cn=repl,dc=example,dc=jp"
updateref ldap://192.168.24.100:389/
詳細な変更内容は diff の結果を参照
# diff /etc/openldap/slapd.conf /etc/openldap/slapd.conf.org
60,65d59
< access to *
< by self write
< by dn="cn=repl,dc=example,dc=jp" write
< by anonymous auth
< by * none
<
92,93c86,87
< suffix "dc=example,dc=jp"
< rootdn "cn=repl,dc=example,dc=jp"
---
> suffix "dc=my-domain,dc=com"
> rootdn "cn=Manager,dc=my-domain,dc=com"
99d92
< rootpw {MD5}qjYRCALao3lp+bMyUtVjaQ==
118,121d110
<
< ## REPLICATION slurpd ##
< updatedn "cn=repl,dc=example,dc=jp"
< updateref ldap://192.168.24.100:389/
スレーブ側にマスター側のデータ反映(LDAP登録された DB)
マスター側のデータをスレーブ側に反映する。
手順としては、マスター側で全データを含むLDIFを作成し、スレーブ側でインポートする
(1)マスター側のLDIFをスレーブ側に転送
マスター側(192.168.24.100)で実施
DB のバックアップ # slapcat -l /var/tmp/ldap1_slapcat.ldif スレーブ側に、LDAPのバックアップファイルを転送 # scp /var/tmp/ldap1_slapcat.ldif hoge@192.168.24.101:/var/tmp
(2)スレーブ側でLDIFをインポート
スレーブ側(192.168.24.101)で実施
LDAPを停止する # /etc/init.d/ldap stop slapd を停止中: [ OK ] バックアップをslapadd コマンドで登録する # slapadd -l /var/tmp/ldap1_slapcat.ldif bdb_db_open: Warning - No DB_CONFIG file found in directory /var/lib/ldap: (2) Expect poor performance for suffix dc=example,dc=jp.
インポート時に以下のエラーが表示されているので、DB_CONFIG fileを作成する
Warning – No DB_CONFIG file found in directory /var/lib/ldap
# cp -p /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG # chown ldap:ldap /var/lib/ldap/*
(3)LDAP起動
マスター側(192.168.24.100)で実施 LDAPサーバの再起動 # /etc/init.d/ldap restart スレーブ側(192.168.24.101)で実施 LDAPサーバの再起動 # /etc/init.d/ldap restart
動作確認
マスター側でデータを登録し、スレーブ側で反映されているか確認する
(1)登録用 ldif を作成する
マスター側(192.168.24.100)で実施
# cd /var/tmp/
# vi hoge.ldif
dn: uid=hoge,ou=People,dc=example,dc=jp
uid: hoge
cn: hoge
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {MD5}3TczkguYZg+bQ/I1yIIAuw==
shadowLastChange: 14780
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 501
gidNumber: 501
homeDirectory: /home/hoge
dn: cn=hoge,ou=Group,dc=example,dc=jp
objectClass: posixGroup
objectClass: top
cn: hoge
userPassword: {crypt}x
gidNumber: 501
(2)ldapを登録する
マスター側(192.168.24.100)で実施
# ldapadd -h localhost -x -D "cn=Manager,dc=example,dc=jp" -W -f hoge.ldif
(3)登録されているか確認する
スレーブ側(192.168.24.101)で実施
# ldapsearch -x -D "cn=repl,dc=example,dc=jp" -W -b "dc=example,dc=jp" "uid=hoge" Enter LDAP Password: # extended LDIF # # LDAPv3 # base <dc=example,dc=jp> with scope subtree # filter: uid=hoge # requesting: ALL # # hoge, People, example.jp dn: uid=hoge,ou=People,dc=example,dc=jp uid: hoge cn: hoge objectClass: account objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword:: e01ENX0zVGN6a2d1WVpnK2JRL0kxeUlJQXV3PT0= shadowLastChange: 14780 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 501 gidNumber: 501 homeDirectory: /home/hoge # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
(4)テスト用のデータを削除
マスター側(192.168.24.100)で実施
# ldapdelete -x -D "cn=Manager,dc=example,dc=jp" -W "uid=hoge,ou=People,dc=example,dc=jp" # ldapdelete -x -D "cn=Manager,dc=example,dc=jp" -W "cn=hoge,ou=Group,dc=example,dc=jp"



コメント