ROMAクラスターを複数台のserverで構成する方法です。
条件
server: 2台
storage type : memory
ruby version : v2.1
ROMA version : v1.2.0
Installation type : rubygems
手順
1. install ROMA
gem install roma
2. make instance(Cluster)
- single serverの時はrouting情報を'localhost_${port No.}'で作成していましたが、今回はip address、もしくはhost名に変更します
- 今回はip address(192.168.33.11, 192.168.33.12)で作成します
-
--replication_in_host
オプションはsingle serverで構築する際のデバッグオプションなので、今回は外します
192.168.33.11にて
mkroute 192.168.33.11_10001 192.168.33.12_10001
ls -l
-rw-r--r-- 1 root root 35693 Dec 2 05:35 192.168.33.11_10001.route
-rw-r--r-- 1 root root 35693 Dec 2 05:35 192.168.33.12_10001.route
- 192.168.33.12_10001.routeの方を192.168.33.12サーバへ移します
- 今回はscpコマンドで移します(ユーザ名やディクレトリは適宜変更してください)
192.168.33.11にて
scp 192.168.33.12_10001.route vagrant@192.168.33.12:/home/roma/
mkrouteコマンドはどれか一つのserverでのみ実行して、それをコピーしてください
- データの分散先をSHA1で作成しています。それぞれのサーバでmkrouteを行うと内容が違うものになってしまいます
3. booting ROMA
192.168.33.11にて
romad 192.168.33.11 -p 10001 -d
192.168.33.12にて
romad 192.168.33.12 -p 10001 -d
ステータス確認
telnet 192.168.33.11 10001
> stat node
stats.run_receive_a_vnode {}
routing.nodes.length 2
routing.nodes ["192.168.33.11_10001", "192.168.33.12_10001"]
.
.
.
routing.version_of_nodes {"192.168.33.11_10001"=>66048, "192.168.33.12_10001"=>66048}
END
> stat repetition
stats.enabled_repetition_host_in_routing false
END
-
stats.enabled_repetition_host_in_routing
は同host内でのデータコピー(冗長)を許可するかどうかを表します。今回は--replication_in_host
オプションを外したのでfalse
になっています。
一応データの確認も・・・
192.168.33.11にて
> set foo 0 0 3
> bar
STORED
192.168.33.12にて
> get foo
VALUE foo 0 3
bar
END
ちゃんとreplicationされているのが確認できます
参照URL
ROMA Install ROMA Unit : http://roma-kvs.org/learn/main_unit.htmll