ちょっと硬派なコンピュータフリークのBlogです。

カスタム検索

2008-11-13

OpenLDAPとMySQL Clusterのおいしい関係

OpenLDAP 2.4.12において、MySQL Clusterがバックエンドとして追加された。Berkeley DBと組み合わせて利用されることの多いOpenLDAPであるが、MySQL Clusterがサポートされることにより選択肢が広がったと言える。興味のある方は是非試していただきたい。

BDBではなくMySQL Clusterを使うとどんなメリットがあるのだろうか?例えば次のようなものである。
  1. MySQL Clusterによる99.999%の可用性。
  2. データノードを増やすことで負荷分散が行える。
  3. データノードを増やすことで貯蓄できるデータ容量を増やすことができる。
  4. 複数のslapd間でデータを完全に同期することができる。
  5. slapdを追加することで負荷分散が行える。
  6. 遠隔地レプリケーションを利用することで、地理的に離れた場所にデータを転送できる。
  7. LDAPのデータに対してSQLを用いてアクセスすることができる。
などである。とにかくミッションクリティカルで高負荷な場合に活用することができるのである。ちなみに、現時点においてもベンチマークにおいて秒間数万回のリクエストに対応できることが確認されている。次の図はMySQL Clusterを用いてOpenLDAPを負荷分散する際のイメージである。



というわけで基本的なセットアップ方法を紹介しよう。

1. MySQL Clusterをセットアップする。

とりあえず評価するだけなら耐障害性はないがサーバ2台で構成するといいだろう。注意点としてはSQLノード数、つまり[mysqld]セクションをたくさん登録しておくことである。slapdから多数の接続を同時に行うためである。

また、初期化時のみ/etc/my.cnfにおいて、以下の行を追加しておくこと。(将来は改善されるであろう。)

[mysqld]
character-set-server=latin1

[client]
default-character-set=latin1

2. OpenLDAPをビルドする。

ダウンロード
http://www.openldap.org/software/download/

shell> ./configure --enable-ndb=yes --enable-bdb=no --enable-hdb=no && make
shell> sudo make install

3. slapd.confの編集

以下、MySQL Clusterに関連する箇所の設定例である。database ndbとして、db*において適切な設定をすれば良い。
database        ndb
suffix          "o=example"
suffix          "dc=example,dc=com"
rootdn          "o=example"
rootdn          "dc=example,dc=com"
rootpw          secret
dbhost          mysqldhost
dbport          3306
dbconnect       mgmdhost
dbsocket        /tmp/mysql.sock
dbname          OpenLDAP
dbuser          ldapdbuser
dbpass          password
index           employeeNumber
dbconnections   10

4. slapdを起動する。


shell> /usr/local/libexec/slapd -f slapd.conf

LDAPの負荷分散で問題を抱えているなら是非OpenLDAPとMySQL Clusterの組み合わせを試してみよう。

0 コメント:

コメントを投稿