RiakCSでプライベートストレージを作ろう!

タイトルは釣り気味です。
Riak CSを試してみたかったんだ。
試した環境はUbuntu12.04です。RiakとRiakCSは1.3.1。
@kuenishiさんの記事や、Bashoのドキュメントが参考になる。
【緊急】 Riak Cloud Storage が OSS になりました【速報】 - kuenishi's blog
http://docs.basho.com/riak/latest/tutorials/installation/Installing-on-Debian-and-Ubuntu/
http://docs.basho.com/riakcs/latest/cookbooks/installing/Installing-Riak-CS/#Installing-Riak-CS-on-a-Node

UbuntuにRiak、Stanchion、RiakCSをインストールする

普段apt-getじゃなくてaptitudeコマンド使ってるのでそっちで。

$ curl http://apt.basho.com/gpg/basho.apt.key | sudo apt-key add -
$ sudo bash -c "echo deb http://apt.basho.com $(lsb_release -sc) main > /etc/apt/sources.list.d/basho.list"
$ sudo aptitude update
$ aptitude search riak
p   riak                            - Riak is a highly scalable, fault-tolerant
p   riak-cs                         - Riak CS
p   riak-cs-control                 - Riak Cloud Storage Control
$ sudo aptitude install riak riak-cs riak-cs-control
$ aptitude search stanchion
p   stanchion                       - Request Serialization Application
$ sudo aptitude install stanchion

RiakCSのドキュメントのダウンロードのとこにはaptについて書かれてないけど、Riakと同じRepositoryからインストールできるみたい。

RiakとRiakCSを設定して起動する

ulimitが小さいと警告が出る。rootで作業する。
とりあえず動かすのはドキュメントにも載ってるみたい。
http://docs.basho.com/riakcs/latest/tutorials/fast-track/Building-a-Local-Test-Environment/
Riakの設定(/etc/riak/app.config)でriak_coreセクションにdefault_bucket_propsを追加する。

{default_bucket_props, [{allow_mult, true}]},

また、storage_backendのとこを書き換える。

{add_paths, ["/usr/lib/riak-cs/lib/riak_cs-1.3.1/ebin"]},
{storage_backend, riak_cs_kv_multi_backend},
{multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]},
{multi_backend_default, be_default},
{multi_backend, [
    {be_default, riak_kv_eleveldb_backend, [
        {max_open_files, 50},
        {data_root, "/var/lib/riak/leveldb"}
    ]},
    {be_blocks, riak_kv_bitcask_backend, [
        {data_root, "/var/lib/riak/bitcask"}
    ]}
]},

RiakCSの設定(/etc/riak-cs/app.config)でanonymous_user_creationをtrueにしておく。

{anonymous_user_creation, true}

riak、stanchion、riak-csコマンドで起動する。起動順に注意する。

$ sudo su -
# ulimit -n 65536
# riak start
Attempting to restart script through sudo -H -u riak
# stanchion start
# riak-cs start
# riak ping
Attempting to restart script through sudo -H -u riak
pong
# stanchion ping
pong
# riak-cs ping
pong

ユーザーを作る

ドキュメントに書かれているが、curlAPIを叩けばいいらしい。
http://docs.basho.com/riakcs/latest/cookbooks/Account-Management/#Creating-a-User-Account

$ curl -H 'Content-Type: application/json' -X POST http://localhost:8080/riak-cs/user --data '{"email":"foobar@example.com", "name":"foo bar"}'
{"email":"foobar@example.com","display_name":"foobar","name":"foo bar","key_id":"PWPCLSGUCUI8IR-K79QQ","key_secret":"8B2c_Zs8n3GRoofiRTZDLDA39slkwJn3MmpeDg==","id":"8978ebde9bbb7bca21f0b395a0a21ba65bbf52b55254977f75ddb8cd1fdd45cc","status":"enabled"}

叩いた結果返ってくるkey_idとkey_secretを使ってS3互換のAPIを使用できる。

S3クライアントで試す

s3cmdではあんまり芸がないので、GUIのクライアントで試したい。
S3クライアントでAmazon以外のURLを指定できつつ、HTTP Proxy対応のクライアントが必要。
探してたらDragonDiskってのを見つけた。Windows/MacOSX/Linux対応らしい。
Client for Amazon S3 & Google Cloud Storage services - DragonDisk
アカウント設定とプロキシ設定をしたら問題なくつながって、操作できた。面白い。

独自ドメインでの運用とかSSLにするなら、いろいろ設定が面倒そう。