LDAPのデータベースをコピーする
LDAPのデータベースは、重要なデータが入っているはずです。というか、普通データベースは、なくすと困る重要データが入ってるもんですよね。このため、自動でレプリケーションされる設定をしておきます。ちなみに、うちの場合は、メインサーバがダウンした場合に、レプリカされる側をバックアップサーバとして使用する目的もありますね。比較的簡単ですので、やってみましょう~
レプリケーションの基本
- マスターサーバ
- コピーされるもととなるサーバです。
- スレーブサーバ
- コピーを保持するサーバです。
また、データベースを変更する側(ldapadd/ldapdelete/ldapmodifyする側)は基本マスターサーバ側。スレーブ側はデータを保持するだけの運用とします。
事前準備
マスターサーバの/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
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://を指定して、暗号化して通信する、という手もありますね。
Page Info | |
---|---|
Page Name : | Gentoo Linuxな生活/LDAPのレプリケーション |
Page aliases : | None |
Page owner : | maruo |
Can Read | |
Groups : | All visitors |
Users : | All visitors |
Can Edit | |
Groups : | No one |
Users : | No one |