slurpd を利用した冗長化
概要
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"
ディスカッション
コメント一覧
まだ、コメントがありません