1: 2011-01-07 (金) 01:32:20 maruo[5] [6] | |||
---|---|---|---|
Line 1: | Line 1: | ||
+ | *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