2009/9/3 木曜日

PHPでmemcachedのconsistent hashingを実現する

あ、どうも、マタノ兄弟商会のマタノです。

PHPでmemcachedのconsistent hashingを実現する方法をば。

というか、PHPの拡張モジュール「Memcached」を使えば、簡単に実現可能なのですが、その導入手順についてもう少し詳しく書いてみます。

以下、必要ライブラリ等のインストール手順です。
(実施環境はCentOS5.2 x86_64、memcached自体はすでにインストール済みという前提で)

■libketamaのインストール
consistent hashingのアルゴリズム用ライブラリです。
『libketama – a consistent hashing algo for memcache clients』

◆SVNリポジトリから、最新リビジョンをチェックアウト
svn://svn.audioscrobbler.net/misc/ketama/

READMEファイルにlibketamaのインストール方法が載っています。

$ cd libketama
$ make
$ make test
$ su -c “make install”

これで、
/usr/lib
に、libketama.soがインストールされているはずです。
(必要であれば、ldconfigも忘れずに!)
 

■libmemcachedのインストール
http://freshmeat.net/projects/libmemcached
から、ソースをダウンロード(現時点で最新バージョンは0.31)。

$ tar xvzf libmemcached-0.31.tar.gz
$ cd libmemcached-0.31
$ ./configure
$ make
$ su –
# make install

これで、
/usr/local/lib
に、libmemcached.soがインストールされているはずです。
(必要であれば、ldconfigも忘れずに!)
 

■PECL memcachedのインストール
peclコマンドでインストールするなら、

# pecl install memcached

で一発OK。

あとはphp.iniに、

extension=memcached.so

を追記、またはPHPスクリプト上で、

dl(‘memcached.so’)

を記述するのでもOK。

もし、手動でインストールする場合は、
http://pecl.php.net/package/memcached
から最新バージョンをダウンロード(現時点で最新バージョンは1.0)

$ tar xvzf memcached-1.0.0.tgz
$ cd memcached-1.0.0
$ phpize
$ ./configure
$ make
$ su –
# make install

以上です。
 

実際にconsistent hashingを実現したいときは、

$m = new Memcached();
$m->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true);

と明示的に宣言する必要があります(バージョン1.0.0)。

参照 ⇒ http://php.benscom.com/manual/ja/memcached.constants.php

んで、実際にconsistent hashingされているのか、確認するためのサンプルスクリプトを用意しました。

consistent hashingのサンプルスクリプト

物理的にmemcache用サーバを複数台用意するのはたいへんなので、同一サーバ上でポートを変えて同時起動しています。
スクリプト上では、server1~3までありますが、すべて/etc/hostsファイルでlocalhostを指しています。


1件のコメント »

  1. […] phpでの設定方法 […]

    ピンバック by FuelPHPのキャッシュライブラリ – memcached編 | 9ensanのLifeHack — 2012/6/22 金曜日 @ 13:48:56

HTML convert time: 1.022 sec. Powered by 'WordPress'