LPIC301 slurpd

2017-01-04

slurpd を利用した複製

slurpdは、マスタ/スレーブ複製機構をサービスを提供します。

複製のシナリオ

  1. LDAP クライアントは LDAP 更新操作をスレーブの slapd に送る。
  2. スレーブの slapd は、マスタの slapd を参照するよう LDAP クライアントに紹介(referral)を返す。
  3. LDAP クライアントはマスターの slapd に LDAP 更新操作を送る。
  4. マスターの slapd は更新操作を行い、複製ログファイルに変更内容を書き出して、クライアントに成功を示すコードを返す。
  5. slurpd プロセスは、複製ログファイルに新しいエントリが追加されていることを検出して、複製ログのエントリを読み、LDAP でスレーブの slapd に変更内容を送る。
  6. スレーブの slapd は更新操作を行い、slurpd プロセスに成功を示すコードを返す。

複製ログ

複製ログファイルを作成するように slapd を設定すると、 LDIF 変更レコードを含んだファイルが出力されます。
この複製ログは、複製サイト、時刻印、更新されたエントリの DN、実際の変更を指定する行の並びを与えます。

  • ログサンプル
replica: slave.example.com:389
time: 809618633
dn: uid=bjensen,dc=example,dc=com
changetype: modify
replace: multiLineDescription
description: A dreamer...
-
replace: modifiersName
modifiersName: uid=bjensen,dc=example,dc=com
-
replace: modifyTimestamp
modifyTimestamp: 20000805073308Z
-

コマンドラインオプション

slurpd -d
このオプションは slurpd のデバッグレベルを に設定します。

slurpd -r 【logfile】 -o
slurpdをデーモンではなくコマンドラインツールとして、ワンショット(one-shot」モードの操作を行います。
通常の環境において slurpd は、複製ログファイルの処理を終得た後も活動を続け、複製ログに新しいエントリが追加されたかを定期的に監視します。
ワンショットモードになっていると、対象的に slurpd は複製ログを処理するとすぐに終了します。
オプション -o を与える場合には、オプション -r で複製ログファイルも明示しなければなりません

slapd の設定

slurpdを利用したレプリケーションは、以下の手順で実施

  1. マスタ slapd の設定
  2. スレーブ slapd の設定
  3. マスタサーバのシャットダウン
  4. マスタ slapd のデータベースのスレーブへのコピー
  5. マスタ slapd の再起動とスレーブ slapd の起動

マスタ slapd の設定

replogfile /var/log/ldap/replog

replica
uri=ldap://slave.example.com:389
binddn="cn=Replicator,dc=example,dc=com"
bindmethod=simple
credentials=secret

スレーブ slapd の設定

rootdn "cn=Replicator,dc=example,dc=com"
rootpw secret

updatedn "cn=Replicator,dc=example,dc=com"
updateref ldap://master.example.com:389

マスタのreplica ディレクティブの binddnとスレーブのupdatednに同じにする
マスタのreplica ディレクティブの credentialsとスレーブのrootpwに同じ値にする

複製エラー

slurpd がスレーブ slapd に変更を伝播してエラーの返却コードを受け取ると、エラーの理由と複製レコードを拒絶ファイルに書き出します。
拒絶ファイルは、それぞれの複製ログファイルと同じディレクトリにあります。
拒絶ファイルの名前は複製ログファイルの名前に接尾辞 “.rej" がついたものです。

ホスト slave.example.com のポート 389 で動作する複製サーバの場合

/usr/local/var/openldap/replog.slave.example.com:389.rej

拒絶ログに書き出されたエントリの例

ERROR: No such attribute
replica: slave.example.com:389
time: 809618633
dn: uid=bjensen,dc=example,dc=com
changetype: modify
replace: description
description: A dreamer...
-
replace: modifiersName
modifiersName: uid=bjensen,dc=example,dc=com
-
replace: modifyTimestamp
modifyTimestamp: 20000805073308Z
-

スポンサーリンク