Riakのインストールは難しくないですが(binaryをインストールすればErlang runtimeもついてくるし)、
Vagrantは便利すぎるのでvagrant-riak-clusterを使うことに。
その作業ログを残しておきます。
以下、VirtualBoxおよびVagrantはインストールされているものとする。
(両者とも、公式からbinary installerをダウンロードしていれればいいと思う)
(Vagrant、最新はv1.2.4かと思います)
まずは以下のリポジトリからgit clone
$ git clone https://github.com/hectcastro/vagrant-riak-cluster.git
直下にVagrantFileがあることを確認。
とりあえず起動したい人はVagrantFileのあるディレクトリにて$ vagrant up
とすればVMが3つ立ち上がる。
この段階ではまだclusterにはなっていない。
このVagrantの構成は以下。
- VMが3つ作られる(ノード名:riak1 / riak2 / riak3)。VirtualBoxを起動すれば、3つできてるのが確認できる。
- それぞれメモリを1024M消費
- 消費メモリ変えたいときは
config.vm.provider(:virtualbox) { |v| v.customize ["modifyvm", :id, "--memory", 1024] }
の--memoryの値を変更 - boxはcentos6.4/ubuntu12.04から選択可能(デフォルトではUbuntuが選択される?)
- Riak用のcookbookはbasho/riak-chef-cookbook
- BackendはBitcaskかeLevelDB(デフォルトはBitcask)
- 2i使いたくてeLevelDBにしたいときは、cookbookを書き換える必要がある。
# riak_kv storage_backend
default['riak']['config']['riak_kv']['storage_backend'] = "riak_kv_bitcask_backend"
cookbookをcloneしてローカルのcookbookを参照させる方法は以下。
Berkshelfでcookbookの参照先を変える
- riak1ノードのみforwarded_portが設定されている。フォワードされているポートは以下
port | protocol |
---|---|
8098 | HTTP |
8069 | HTTPS |
8087 | Protocol Buffer |
- 内部ネットワークが設定されていてそれによりノード間の通信が可能
- 内部ネットワークでのIPはそれぞれ以下のとおり
Node Name | IP |
---|---|
riak1 | 33.33.33.10 |
riak2 | 33.33.33.20 |
riak3 | 33.33.33.30 |
clusterの設定
ということで、各ノードをcluster joinさせる。riakdocs
まずはriak1の状態を確認
$ cd vagrant-riak-cluster
$ vagrant ssh riak1
vagrant@riak1 $ sudo riak-admin member-status
================================= Membership ==================================
Status Ring Pending Node
-------------------------------------------------------------------------------
valid 100.0% -- 'riak@33.33.33.10'
-------------------------------------------------------------------------------
Valid:1 / Leaving:0 / Exiting:0 / Joining:0 / Down:0
riak2, riak3からjoin
$ cd vagrant-riak-cluster
$ vagrant ssh riak2
vagrant@riak2 $ sudo riak-admin member-status
================================= Membership ==================================
Status Ring Pending Node
-------------------------------------------------------------------------------
valid 100.0% -- 'riak@33.33.33.20'
-------------------------------------------------------------------------------
Valid:1 / Leaving:0 / Exiting:0 / Joining:0 / Down:0
vagrant@riak2 $ sudo riak-admin cluster join riak@33.33.33.10
Success: staged join request for 'riak@33.33.33.20' to 'riak@33.33.33.10'
(riak3については上記のriak2をriak3に変更)
riak1に戻って
vagrant@riak1 $ sudo riak-admin cluster plan
=============================== Staged Changes ================================
Action Details(s)
-------------------------------------------------------------------------------
join 'riak@33.33.33.20'
join 'riak@33.33.33.30'
-------------------------------------------------------------------------------
NOTE: Applying these changes will result in 1 cluster transition
###############################################################################
After cluster transition 1/1
###############################################################################
================================= Membership ==================================
Status Ring Pending Node
-------------------------------------------------------------------------------
valid 100.0% 34.4% 'riak@33.33.33.10'
valid 0.0% 32.8% 'riak@33.33.33.20'
valid 0.0% 32.8% 'riak@33.33.33.30'
-------------------------------------------------------------------------------
Valid:3 / Leaving:0 / Exiting:0 / Joining:0 / Down:0
WARNING: Not all replicas will be on distinct nodes
Transfers resulting from cluster changes: 42
21 transfers from 'riak@33.33.33.10' to 'riak@33.33.33.30'
21 transfers from 'riak@33.33.33.10' to 'riak@33.33.33.20'
vagrant@riak1 $ sudo riak-admin cluster commit
Cluster changes committed
vagrant@riak1 $ sudo riak-admin member-status
================================= Membership ==================================
Status Ring Pending Node
-------------------------------------------------------------------------------
valid 34.4% -- 'riak@33.33.33.10'
valid 32.8% -- 'riak@33.33.33.20'
valid 32.8% -- 'riak@33.33.33.30'
-------------------------------------------------------------------------------
Valid:3 / Leaving:0 / Exiting:0 / Joining:0 / Down:0
できた!(((o(*゚▽゚*)o)))
確認
$ curl -v http://127.0.0.1:8098/riak/test/doc2
not foundって返ってきたら成功。