*LDAPのデータベースをコピーする [#qa0e1a45] LDAPのデータベースは、重要なデータが入っているはずです。というか、普通データベースは、なくすと困る重要データが入ってるもんですよね。このため、自動でレプリケーションされる設定をしておきます。ちなみに、うちの場合は、メインサーバがダウンした場合に、レプリカされる側をバックアップサーバとして使用する目的もありますね。比較的簡単ですので、やってみましょう~ *レプリケーションの基本 [#ddb1c212] :マスターサーバ|コピーされるもととなるサーバです。 :スレーブサーバ|コピーを保持するサーバです。 また、データベースを変更する側(ldapadd/ldapdelete/ldapmodifyする側)は基本マスターサーバ側。スレーブ側はデータを保持するだけの運用とします。 *設定 [#s7c97bdd] **事前準備 [#jea24f33] マスターサーバの/etc/openldap/slapd.confをスレーブサーバ側にコピーしておきます。 # scp /etc/openldap/slapd.conf slave:/etc/openldap/slapd.conf また、データベースの同期専用に、ユーザを作成しておいてやりましょう。誰彼にでもコピーされちゃうと困るので、ってことでね。 ここではsyncuserっていうアカウント作成して、この人の権限でコピー出来るようにしておきましょう。 dn: cn=syncuser,dc=example,dc=com objectClass: person cn: syncuser sn: replication user userPassword: {SSHA}LbcQRqSCgamVLsRD9PJvJvIeGmhTnlKX こんな内容で、repl.ldifて作ったとします。これをLDAPのマスターサーバに追加。 # ldapadd -D "cn=Manager,dc=example,dc=com" -W -f repl.ldif **マスターサーバ側のslapd.conf [#p6dde728] slapd.confに以下の行を追加します。 overlay syncprov おわり **スレーブサーバ側のslapd.conf [#k4218094] slapd.confに以下の設定を追加いたします。 syncrepl rid=123 provider=ldap://foo.example.com type=refreshAndPersist retry="5 10 60 +" searchbase="dc=example,dc=com" bindmethod=simple binddn="cn=syncuser,dc=example,dc=com" credentials="secret" credentialsは、syncuserのパスワード。平文で書きこんでおくのを注意してくださいね。 また、ここでは、typeにrefreshAndPersistを指定しています。これは、極力リアルタイムに変更をレプリケーションする設定。定期的にポーリングする場合は、refreshOnlyを指定します。これだと、定期的にポーリングすることによって、レプリケーションの負荷を軽減します。 その場合はこんな感じ。 syncrepl rid=123 provider=ldap://foo.example.com type=refreshOnly # レプリケーション方式(定期的な更新確認) interval=00:00:05:00 # 接続間隔(5分) searchbase="dc=example,dc=com" bindmethod=simple binddn="cn=syncuser,dc=example,dc=com" credentials="secret" また、工夫点としては、providerにldap://ではなく、ldaps://を指定して、暗号化して通信する、という手もありますね。 *仕上げ [#h5a6bb5f] 最後に、マスターサーバ、スレーブサーバの順ででslapdを再起動してあげます。 # /etc/init.d/slapd restart さて、スレーブサーバ側で、ldapsearchしてみましょう。ちゃんとLDAPデータベース読み出せましたかね?
(This host) = https://femt.ddo.jp