ふたつの川うるおう日記
2006-07-20 (Thu)
_ [Server] OpenLDAP 2.x/2.3 の LDAP Sync
OpenLDAP 2.xで導入しました。slurpdと一長一短なところもありますが、LDAP Syncの方が便利です。
slurpdは、マスタ側にスレイブ側の接続先設定があるので、マスタに更新が掛かると、マスタがスレイブに差分をpushします。ただし、このときスレイブの現在状態は関与しないので、同期が崩れていると更新に失敗し、以降も同期が取れてない状態になる欠点がありました。
そこでLDAP Syncです。LDAP Syncは、OpenLDAP 2.2以降で使えます。LDAP Syncではコンシューマ(スレイブ)側にプロバイダ(マスタ)側の接続先設定を持っています。
refreshOnly モードでの同期の場合、コンシューマ側がプロバイダ側にinterval値ごとに差分を取得(pull)して同期します。コンシューマ側からの挙動なので同期が崩れる可能性はslurpdに比べてだいぶ減ります。また、コンシューマとプロバイダで同じツリー構造である必要もありません。指定した部分のみの同期などもできます。ただ、interval値ごとに差分を取得するので、これだと今度は同期されるまでのタイムラグが出来てしまう問題があります。
そこでrefreshAndPersistモードを使うと、コンシューマはプロバイダ側にセッションを張ったままにして、プロバイダは更新が掛かると、セッションの維持されたコンシューマに直ちに差分をpushしてくれます。
ただ、これにも罠がありました。プロバイダ側を再起動したり、ネットワークが途切れたりしてコンシューマ側からのセッションが切れた場合、プロバイダ側はコンシューマ側の情報を持っていないので、差分をpush出来なくなるみたいです。てなわけで、最小時間で同期されてないと困る場合はrefreshAndPersistモードであっても、interval値を小さめの値で設定しておいて、このような場合であってもすぐにセッションが再接続されるようにしておかないとダメなようです。
slupdの場合、マスタが差分のみをスレイブにpushするので、スレイブを構築する際、マスタ側のldapのデータフォルダを丸ごとスレイブにコピーする必要がありますが、LDAP Syncの場合、コンシューマ側は空の状態でslapdを起動するだけで、マスタ側にすべてのエントリを取得しに行ってくれるので新規構築や復旧が楽です。また、上記で述べたように、コンシューマサーバが落ちてる時間帯があっても同期が崩れないので、保守性や耐性を考えてもLDAP Syncの方が便利だと思いました。
上記は大雑把に書いているので嘘が入ってるかもしれないのです(´ー`;;;)。詳しい挙動はドキュメントをどうぞ。
突然のあいさつで大変申し訳ございません。 私たちは「自分磨き」のホームページを作っているものです。 自分自身のレベルアップのためにスクールや、レッスン、習い事等をチャレンジしてみませんか? また、資格や検定といったコースの情報もあります。 毎日の生活に新し..


