AWSにRuby製分散型KVSのROMAをソースからinstallする
AWSのEC2インスタンスにRuby製Key Value StoreのROMAをインストールします。
今回はちょっと手順が増えますが、構成やライブラリ等を把握するためにソースからinstallします。
(gemでもinstallできます)
インストール手順
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を選択する以外は全て同じ手順です。