皆様こんにちは。さくらインターネット研究所の大久保です。
前回までKVSとmemcachedプロトコルの基本的なところを説明させていただきましたが、今回からはいくつかのKVSソフトウェアを具体的に紹介させていただきたいと思います。
まず最初はグリーさんの方で開発されているFlareという分散KVSを取り上げてみます。
Flareとは?
Flareは、携帯ゲームやソーシャルネットワーキングサービスGREEで有名なグリー株式会社さんの方で開発されているオープンソースの分散KVSです。ホームページが以下URLにあり、ソースコードがダウンロードできるようになっています。
▽Flareホームページ
http://labs.gree.jp/Top/OpenSource/Flare.html
SoftwareDesign 2010年2月号に開発者であるグリーCTO藤本さんの記事が掲載されています。それによると、
- ソーシャルネットワーキングサービスGREEのバックエンドデータベースとして稼動している
- GREEにログインすると最初に表示される「ともだち更新情報」のデータが格納されている
- データ容量は会員数約1500万人で、1ユーザあたりのレコード数300件
とのことで、実際に大規模なサイトでの運用実績があることが分かります。
Flareのインストール
ここでは、CentOS5.4を例にインストール手順を説明します。インストール方法は以下URLのFlareホームページに丁寧に記載されており、当方もこちらを参考にいたしました。
▽Flareインストール方法
http://labs.gree.jp/Top/OpenSource/Flare/Document/Installation.html
Step1. TokyoCabinetのインストール
以下のようにバージョン1.4.43のソースコードを取得してインストールします。
% wget http://1978th.net/tokyocabinet/tokyocabinet-1.4.43.tar.gz % tar xvfz tokyocabinet-1.4.43.tar.gz % cd tokyocabinet-1.4.43 % ./configure --prefix=/usr % make % sudo make install
Step2. boostのインストール
以下のようにyumを用いてインストールします。
% yum -y install boost boost-devel % yum list installed |grep boost boost.i386 1.33.1-10.el5 installed boost-devel.i386 1.33.1-10.el5 installed
Step3. Flareのインストール
以下のようにバージョン1.0.9のソースコードを取得してインストールします。
% wget http://labs.gree.jp/data/source/flare-1.0.9.tgz % tar xvfz flare-1.0.9.tgz % cd flare-1.0.9 % ./configure --prefix=/usr % make % sudo make install
Flareを動かす
とりあえずインストールが終わりましたので、Flareを動作させてみたいと思います。本来、役割に応じた複数のサーバが必要となるのですが、ここでは1台のサーバで動作させてみます。詳細は以下URLのチュートリアルに書かれており、こちらを参考にいたしました。
▽チュートリアル
http://labs.gree.jp/Top/OpenSource/Flare/Document/Tutorial.html
Step1. インデックスサーバ用の設定ファイルを作成
ここでは、/home/admin/flare/以下で動作させる前提で説明します。
以下のファイルを/home/admin/flare/flarei.confとして作成します。
data-dir = /home/admin/flare log-facility = local0 server-name = 192.168.13.23
server-nameはサーバのIPアドレスです。
Step2. インデックスサーバを起動
以下のコマンドで起動します。正常に起動すると12120番ポートで待ち受けます。
% /usr/bin/flarei -f /home/admin/flare/flarei.conf --daemonize % ps xww|grep flare 18475 ? Ssl 0:00 /usr/bin/flarei -f /home/admin/flare/flarei.conf --daemonize % netstat -an <snip> tcp 0 0 0.0.0.0:12120 0.0.0.0:* LISTEN
Step3. ストレージサーバ用の設定ファイルを作成
以下のファイルを/home/admin/flare/flared.confとして作成します。
data-dir = /home/admin/flare log-facility = local0 storage-bucket-size = 16777216 index-server-name = 192.168.13.23 server-name = 192.168.13.23
インデックスサーバとストレージサーバが同一のサーバで稼動しますので、index-server-nameとserver-nameは同じものを指定します。
Step4. ストレージサーバを起動
以下のコマンドで起動します。正常に起動すると12121番ポートで待ち受けます。
% /usr/bin/flared -f /home/admin/flare/flared.conf --daemonize % ps xww|grep flared 18487 ? Ssl 0:00 /usr/bin/flared -f /home/admin/flare/flared.conf --daemonize % netstat -an <snip> tcp 0 0 0.0.0.0:12121 0.0.0.0:* LISTEN
起動が完了すると、以下のようにファイルが作成されるかと思います。
% ls -lah /home/admin/flare 合計 97M drwxrwxr-x 2 admin admin 4.0K 4月 13 17:59 . drwx------ 13 admin admin 4.0K 4月 13 17:58 .. -rw-r--r-- 1 admin admin 97M 4月 13 17:59 flare.hdb -rw-rw-r-- 1 admin admin 734 4月 13 17:59 flare.xml -rw-rw-r-- 1 admin admin 144 4月 13 17:58 flared.conf -rw-rw-r-- 1 admin admin 6 4月 13 17:59 flared.pid -rw-rw-r-- 1 admin admin 79 4月 13 17:55 flarei.conf -rw-rw-r-- 1 admin admin 6 4月 13 17:57 flarei.pid
Step5. ストレージサーバのrole設定
ストレージサーバを起動しただけでは、memcachedプロトコルのリクエストを中継するのみのプロキシ状態になっており、データの格納ができませんので、roleの設定を行います。
以下のようにインデックスサーバにtelnet接続して、設定変更します。
stats nodesで現在のサーバの状態を表示でき、node roleでroleの変更ができます。
% telnet localhost 12120 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. stats nodes STAT 192.168.13.23:12121:role proxy STAT 192.168.13.23:12121:state active STAT 192.168.13.23:12121:partition -1 STAT 192.168.13.23:12121:balance 0 STAT 192.168.13.23:12121:thread_type 16 END node role 192.168.13.23 12121 master 1 0 OK stats nodes STAT 192.168.13.23:12121:role master STAT 192.168.13.23:12121:state active STAT 192.168.13.23:12121:partition 0 STAT 192.168.13.23:12121:balance 1 STAT 192.168.13.23:12121:thread_type 16 END quit
青文字で示した部分がこちらから入力した部分です。コマンド入力後にroleが変わっていることを確認します(赤文字部分)。オプションの”1 0″は次回以降詳細に説明したいと思いますが、データ取得のクエリを受けるweightとデータ分割の単位であるパーティションを意味します。
Step6. memcachedプロトコルでのアクセスを試す
Flareでは通常、ストレージサーバとは別にmemcachedプロトコルをリレーするプロキシサーバというものを設置するのですが、ストレージサーバもプロキシの機能を持っていますので、今回はストレージサーバに接続してmemcachedプロトコルで通信してみます。
% telnet localhost 12121 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. set name 0 0 6 ohkubo STORED get name VALUE name 0 6 ohkubo END set age 0 0 2 29 STORED incr age 1 30 delete name DELETED get name END
終わりに
今回は1台のサーバにFlareをインストールし、動作確認を行うところまで解説しました。次回はFlareを複数台で動作させる場合のサーバ構成と設定、また、分散KVSの肝となるデータ分散アーキテクチャについて説明したいと思います。
[…] This post was mentioned on Twitter by tabizou, yumano, AppliNow_bot, 横田真俊, 鷲北 賢 and others. 鷲北 賢 said: さくらインターネット研究所ブログ Flareを使う(インストール編) http://research.sakura.ad.jp/2010/04/27 […]
[…] [KVS]Flareを使う(インストール編) ? さくらインターネット研究所 […]