ホーム » 技術 » Key Value Store » Flareを使う(インストール編)

SAKURA Internet Inc.

アーカイブ

Flareを使う(インストール編)

皆様こんにちは。さくらインターネット研究所の大久保です。

前回まで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の肝となるデータ分散アーキテクチャについて説明したいと思います。


2件のコメント

コメントは停止中です。