脳汁portal

アメリカ在住(だった)新米エンジニアがその日学んだIT知識を書き綴るブログ

AWSにRuby製分散型KVSのROMAをソースからinstallする

AWSのEC2インスタンスRuby製Key Value StoreのROMAをインストールします。
今回はちょっと手順が増えますが、構成やライブラリ等を把握するためにソースからinstallします。
(gemでもinstallできます)

f:id:portaltan:20150903154120p:plain

環境

AWS

ROMA

インストール手順

ROMAインストール環境準備

### ライブラリ インストール
yum install gcc gcc-c++ make zlib-devel bzip2-devel git gdbm-devel telnet wget openssl-devel sqlite-devel

### Ruby インストール 
curl -sSL https://rvm.io/mpapis.asc | sudo gpg2 --import -
curl -L https://get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh

rvm requirements
rvm install 2.1.6
ruby -v
    ruby 2.1.6p336 (2015-04-13 revision 50298) [x86_64-linux]


ROMA main unit インストール

### ROMA ダウンロード
cd /usr/local/roma
git clone https://github.com/roma/roma.git ROMA

change storage

  • ROMAはデフォルトのstorageとしてmemcachedと同じようにOSのメモリを使うようになっています
  • しかしROMAのRubyプロセスを落とした際にはデータは消えてしまいます。
  • そのためにROMA側でいくつかphysical storageに対応しているようで、今回はTokyoCabinetをinstallします。
install TokyoCabinet
### download storage library(tokyocabinet)
cd /usr/local/src
wget http://fallabs.com/tokyocabinet/tokyocabinet-1.4.48.tar.gz
tar xvfpz tokyocabinet-1.4.48.tar.gz
cd tokyocabinet-1.4.48
./configure --prefix=/usr/local/roma/libexec
make
make install

### tokyocabinet-ruby installation
cd /usr/local/src
wget https://github.com/roma/tokyocabinet-ruby/archive/v1.31.a.tar.gz
tar xvfpz v1.31.a.tar.gz
cd v1.31.a
gem build tokyocabinet.gemspec
gem install --local tokyocabinet-1.31.a.gem -- --with-tokyocabinet-dir=/usr/local/roma/libexec
install other gem
### bundle install
gem install bundler
bundle -v
cd /usr/local/roma/ROMA
bundle install
  • ここまででROMAのインストールは完了です。次は簡単な構成で試しにROMAアプリを作成して起動してみます。


ROMAアプリ作成

### routingファイルの作成
cd /usr/local/roma/ROMA
bin/mkroute localhost_10001 localhost_10002 --replication_in_host

### configファイル設定(StorageにOS memoryを使う場合は不要)
bin/mkconfig
  # 対話的に項目を選んでいけばconfigファイルが作成されます。
  • replication_in_hostオプションはsinglehostで作成する時のみ必要です。

ROMA 起動

bin/romad localhost -p 10001 -d --config ./config.rb --replication_in_host
bin/romad localhost -p 10002 -d --config ./config.rb --replication_in_host
  • configオプションは作成したconfigファイルのパスを指定します。(今回はカレント)
  • replication_in_hostはrouting作成時と同じく、singlehostで起動するときのみ必要です。

|

確認

ps -eaf | grep romad
    root  22729  1  0 06:01 ?  00:00:00 ruby bin/romad localhost -p 10001 -d --config ./config.rb --replication_in_host
    root  22740  1  0 06:01 ?  00:00:00 ruby bin/romad localhost -p 10002 -d --config ./config.rb --replication_in_host
    root  23036 21665  0 06:03 pts/0    00:00:00 grep romad

telnet localhost 10001

> version
    VERSION ROMA-1.2.0

> set foo 0 0 3
> bar
    STORED

> get foo
    VALUE foo 0 3
    bar
    END


以上で終了です。
Groongaを使用したい場合は、configファイル作成の時にGroongaを選択する以外は全て同じ手順です。