CentOS に Riak をインストール & Data::Riak::Fast で操作してみる

最近、社内 TechTalk で何か話せという依頼があり、ちょうど Riak Serious Talk もあるので、Riak についてアーキテクチャから利用例まで調べて話してみました。その課程で Riak のインストール等したので適当にブログっておきます。

インストール

Vagrantbox.es から CentOS 6.4 x86_64 Minimal を持ってきてテストサーバを用意。起動後にひとまず iptables だけ停止。Vagrant の操作などは割愛します。

依存パッケージ導入

Erlang をインストールするのに必要なパッケージをインストールします。

sudo yum groupinstall “Development tools”
sudo yum install git
sudo yum install libwx unixODBC.x86_64 unixODBC-devel.x86_6 wxBase.x86_64 wxGTK.x86_64 wxGTK-gl

wget https://elearning.erlang-solutions.com/couchdb//rbingen_adapter//package_R15B01_centos664_1333462308/esl-erlang-R15B01-1.x86_64.rpm
sudo rpm -ivh esl-erlang-R15B01-1.x86_64.rpm

Riak をインストール

とりあえず make まで。ソースは Basho のサイトから入手できます。

wget http://downloads.basho.com.s3-website-us-east-1.amazonaws.com/riak/1.3/1.3.0/riak-1.3.0.tar.gz
tar zxvf riak-1.3.0.tar.gz
cd riak-1.3.0
make devrel

Riak を起動してみる

4 ノードを起動。ulimit しているのはなしだと警告が出るので一応。

ulimit -n 4096
dev/dev1/bin/riak start
dev/dev2/bin/riak start
dev/dev3/bin/riak start
dev/dev4/bin/riak start

起動しただけではノード同士は接続されてない状態なので、ノード同士を接続します。

dev/dev2/bin/riak-admin cluster join dev1@127.0.0.1
dev/dev3/bin/riak-admin cluster join dev1@127.0.0.1
dev/dev4/bin/riak-admin cluster join dev1@127.0.0.1

Data::Riak::Fast で操作してみる

Perl のクライアントとして、Net::Riak が以前からありますが、ベンチマークすると遅いらしいです。@myfinder さんが Riak::LiteData::Riak::Fast を作ってくれているので、Data::Riak::Fast を使って操作してみます。

#!/usr/bin/env perl
use strict;
use warnings;

use Data::Dumper;
use Data::Riak::Fast;
use JSON::XS;

my $riak = Data::Riak::Fast->new(
    transport => Data::Riak::Fast::HTTP->new(
        host => '192.168.33.10',
        port => '10018',
    ),
);

# stats
my $stat = $riak->stats();
print Dumper($stat);

# bucket
my $bucket = $riak->bucket('my_bucket');

# put
$bucket->add('foo', 'bar');

# get
my $foo = $bucket->get('foo');

まとめ

Riak の利用例みてたら node.js + Riak + Redis で clipboard.com を作ってるとか、色々と面白そうな使い方してる例が多そうで、特に GitHub Pages のホスティングの話 がよさげだったので、同じような仕組み作ってみたいとか思ってる次第です。

参考等