分散ストレージエンジンテクニカルデモ α版リリース
概要
分散ストレージエンジンcagraのテクニカルデモ版です。
cagra概要についてはこちら:d:id:nyaxt:20080422
冗長性を持つ分散ハッシュテーブルを扱うことができます。ノードの動的追加/削除にも対応しています。(ただしノード削除後のputは一部未実装により不安定)
現時点の機能的にはmemcached + αな感じです。
ダウンロード
http://static.nyaxtstep.com/cagra/nxfs-alpha-release.tar.gz
hotfixだしました:d:id:nyaxt:20080427
随時アップデートしてるので最新版は:
http://d.hatena.ne.jp/nyaxt/searchdiary?word=%2a%5bcagra%5d%5brelease%5d
動作環境
で動作を確認しております。多分BSD系でも動くと思います。
今の実装だとノードごとに全ノードにTCPコネクションを張る仕様になっているので、10台ぐらいを目安にテスト環境を整えてもらえるといい感じです。10ノードでの動作試験は行っています。
追記:@kzk_mover氏が24ノード環境でのテストを行ってくれました。感謝!ということで、24ノードぐらいまでは大丈夫そうです。
ビルド
まず、依存ライブラリをインストールします。
- boost 1.34.1
- ヘッダだけでなくboost::thread, boost::unit_test_framework等の共有ライブラリファイルも必要です。
他の依存ライブラリであるlibcoroutine, mpio, kazuhikiは同梱されています。
あとはおなじみの
./configure --with-boost=/opt/local (MacPortsの場合) make
で大丈夫です。
使い方
サーバ起動
各ノードで
./nxfsd 192.168.0.10:9999 (ノードのLAN内IPアドレス)
とします。これだけです。
デフォルトではマルチキャストアドレス239.33.22.11:9999を使って自動的にノードディスカバリーを行います。10秒おきにディスカバリーを行っているので、30秒程まってあげると確実です。
動作確認テスト
ruby ruby_client/blackbox_test.rb
出力が全部.で埋め尽くされればOKです。
既知のバグ
- いろんな名前がnxfsのまま
- boostのリンクに失敗する
- boostが複数インストールされている場合、一番古いboostに対してリンクしてしまう様です。
- http://nyaxtstep.com/trac/nxfs/ticket/64
- ノード切断直後のputが失敗する
- これはputの一部の未実装に依るものです。
- 切断直後ノードリストの同期がとれていない為、発生します。対応策は考案済みです。
- http://nyaxtstep.com/trac/nxfs/ticket/55
Tracを参照してください:
http://nyaxtstep.com/trac/nxfs/report/1