|
1: 2011-01-07 (金) 01:32:20 maruo |
| + | *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データベース読み出せましたかね? |