TOP調査レポート> リポジトリ機能とOpenLDAP
オープンソースをこう使った! 〜 運用管理ツールHinemosの秘密
オープンソースをこう使った! 〜 運用管理ツールHinemosの秘密

第2回:OpenLDAPによるリポジトリ機能について

著者:NTTデータ  宮本 洋輔   2006/8/17
前のページ  1  2  3
リポジトリ機能とOpenLDAP

   リポジトリ情報の性質を再度整理すると表3にまとめられます。
  • スコープ情報は階層化された情報である
  • 一度運用が開始されると各機能から頻繁に参照される
  • システム運用中にはあまり更新されない

表3:リポジトリ情報の性質

   この表3の情報を提供しているということはディレクトリサービスであるということができます。Hinemosではこのリポジトリ情報をOpenLDAPを用いて管理しています。

   JavaプログラムでLDAPへ参照する場合は、JNDI(Java Naming and Directory Interface)を経由して行うことが一般的です。JNDIはリモートオブジェクトやデータソースを取得するために利用されることが多いのですが、サービスプロバイダとしてLDAPを用意することで、LDAPに登録されている情報を参照することができます。

   Hinemosでは、LDAPへ直接参照させずに分離した実装をしています。JNDIを利用するコードを各機能に直接記述してLDAPにアクセスすることもできますが、そうするとHinemosではいくつか不都合なことが起きます。主な不都合としては、LDAPに関するコードが散在してしまい機能拡張や不具合発生時に改修が困難となること、アクセスのタイミングにより参照した情報にズレが発生してしまうことなどです。

   この課題を解決するために、Hinemosのリポジトリ機能はEJB(EnityBean+SessionBean)で実装しています。EntityBeanはノードやスコープのそれぞれの情報を保持し、SessionBeanは個々のノードやスコープの情報にまとめてアクセスするための窓口となります。各機能はSessionBeanの窓口を経由してリポジトリ情報を参照しており、そうすることで次のメリットを得ています。

  • LDAPのアクセスを各機能から分離でき、複数情報を一度に参照できる
  • EntityBeanのキャッシュ効果でLDAPへのアクセス頻度が下がる
  • SessionBeanから同一のEntityBeanにアクセスするので情報にズレがない

表4:EJBのメリット

   またEntityBeanを利用する副次効果として、将来はOpenLDAP以外のコンポーネントに置き換える必要が生じた場合、各機能に手を加えることなく置き換えることが可能であるというメリットもあります。

各機能のリポジトリ情報へのアクセスのイメージ
図4:各機能のリポジトリ情報へのアクセスのイメージ
(画像をクリックすると別ウィンドウに拡大図を表示します)


   EntityBeanの永続化の方法には、BMP(Bean Managed Persistence)とCMP(Container Managed Persistence)の2つの種類があります。しかしJBossはLDAPをデータソースとしてサポートしていませんので、EntityBeanの永続化にLDAPを利用する場合にCMPを使用することはできません。そこで、BMPとしてLDAPに対するアクセスの実装を行っています。

ノード情報のDAOコード例(loadメソッドの一部)
ノード情報のDAOコード例(loadメソッドの一部)
(画像をクリックすると別ウィンドウに拡大図を表示します)

   上記のように実装されたリポジトリ情報は、SessionBeanを経由して「スコープに属するノードすべて」を参照し、各機能で利用することができます。

各機能でリポジトリ機能を使うコードの例
各機能でリポジトリ機能を使うコードの例
(画像をクリックすると別ウィンドウに拡大図を表示します)

   このようにリポジトリ機能は、実際に監視・操作を行う機能に対して、操作に必要なノードやスコープの情報をOpenLDAPを用いて保持し、EJBを利用して提供する仕組みを実現している訳です。

   今回説明したリポジトリ機能は、OpenLDAPを利用したHinemosにおいて、運用管理を行う際の共通基盤の役割を担っていることを理解していただけたかと思います。

   次回は、Eclipse RCPで実現した統合運用画面について説明いたします。

前のページ  1  2  3


NTTデータ  宮本 洋輔
著者プロフィール
株式会社NTTデータ   宮本 洋輔
基盤システム事業本部 オープンソース開発センタ
2003年、株式会社NTTデータに入社。入社以来セキュリティや運用管理などのシステム管理OSSに関する研究開発に従事。現在はHinemosの開発とコミュニティ作りに活動している。

INDEX
第2回:OpenLDAPによるリポジトリ機能について
  はじめに
  リポジトリ機能について
リポジトリ機能とOpenLDAP