ページへ戻る

− Links

 印刷 

Gentoo Linuxな生活​/LDAPのレプリケーション のソース :: Nest Of Hawk

xpwiki:Gentoo Linuxな生活/LDAPのレプリケーションのソース

« Prev[3]  
*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データベース読み出せましたかね?

« Prev[3]