«前の日記(2009-12-12) 最新 次の日記(2009-12-24)» 編集

EntangledThought


2009-12-22

_ ROMAをちょっとだけ手軽に起動する

この記事はRuby Advent Calendar jp: 2009の22日目です. 前日はtakano32さんで, 明日はursmさんです.

ROMAに付いてのTIPSを書いてみましょう.

ROMAといえば,楽天が作っているRubyで書かれたDHT(分散ハッシュテーブル)です. 先日github上で公開されたので,試してみた方,試してみたい方もいらっしゃるのではないでしょうか.

私がROMAを動かしてみて思ったのは,起動が若干面倒だということ. ドキュメントを見てもらえば分かりますが, 他のROMAノードがまだ存在しない場合,

% bin/mkroute localhost_11211  host01_11212 --enabled_repeathost
% bin/romad host01 -p 11211 --enabled_repeathost
% bin/romad host01 -p 11212 --enabled_repeathost

のように起動前にルーティング情報を生成する必要があります.

また,すでに存在するROMAのネットワークに新しいノードを追加する場合には,

% bin/romad roma02 -p 11211 -j host01_11211

のように,現在動いているノードのアドレスとポートを指定してあげなければいけません.

tribunus

このような起動方法が面倒だったので,ROMAを手軽に起動するためのツール "tribunus" を作ってROMAのリポジトリに紛れ込ませてあります(これ).

使い方

動いているtribunusが何もない場合,

% bin/tribunus -c host01 11211-11215

のように "-c" オプションを付けます.ポートは範囲で指定すると,複数のプロセスが立ち上がります.

すでにtribunusが他のホストで動いている場合,

% bin/tribunus -d host02 12345-12347

"-d" オプションを付けます. これで,勝手に他のノードを探してROMAネットワークに参加します.

何をしているか

"-c"を付けた時は,単純にmkrouteしてから,romadを子プロセスとして立ち上げます.

tribunusは動いている間UDPのパケットを待っています. なので,"-d"を付けて起動したときは,他のtribunusにマルチキャストを行います. そして返事として,動いているromadのアドレスとポートを受け取ります. それを使って子プロセスのromadをネットワークに参加させます.

CAUTION

tribunusはruby1.9.2じゃないと動きません. 新しいSocket APIを使っているためです. まあ,クリスマスには1.9.2がリリースされるだろうからいいだろう,と高を括って使ってみたら, リリース延期ということで. その内1.9.1でも使えるように直します.

という訳で,ROMAを使ってみた方はtribunusを使ってみてはいかがでしょうか.

[]

2009年
12月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

最近の日記

最近のツッコミ

  1. さいが (12-26)