-[[kumofs:http://kumofs.sourceforge.net/]]
--[[ずばり動く!kumofs と ずばり動かないケース:http://www.slideshare.net/frsyuki/kumofs]]
--[[kumofsはなぜスケールするか:http://d.hatena.ne.jp/viver/20100126/p1]]
--[[kumofsはなぜ落ちないか:http://d.hatena.ne.jp/viver/20100209/p1]]

-[[doc/doc.ja.md at master from etolabo/kumofs - GitHub:https://github.com/etolabo/kumofs/blob/master/doc/doc.ja.md]] ... まずはこれを熟読

-[[kumofs - syuki.skr.jp [PDF]:http://syuki.skr.jp/files/dhatena/20090222/kvs-kumofs.pdf]]

-[[分散Key-Valueストア「kumofs」を公開しました!:http://d.hatena.ne.jp/viver/20100118/p1]]
-[[kumofs を試してみる:http://www5f.biglobe.ne.jp/~sempreff/note/FreeBSD/kumofs.html]]

-[[連載 R&Dトレンドレポート:http://gihyo.jp/admin/serial/01/rd_trend]]
--[[第4回 分散環境でTokyoCabinetを動かす:http://gihyo.jp/admin/serial/01/rd_trend/0004]]
--[[第5回 分散環境でTokyoCabinetを動かす─2:http://gihyo.jp/admin/serial/01/rd_trend/0005]]

* 基本 [#yaeb24df]
-レプリケーション数は3固定?

* インストール [#f4b3d3bd]
-[[「kumofs」を使って、分散key-Valueストレージシステムを構築:http://blog.flatlabs.net/20100416_002410/]]
-[[分散Key-Valueストア「kumofs」のインストール(0.4.13版):http://blog.flatlabs.net/20110201_195731/]]
-[[kumofsをインストールしてみた:http://www.kdl.co.jp/open/2010/05/kumofs.html]]
-[[kumofsをインストールして遊んでみた。:http://www.blogkid.com/2010/01/kumofs-75e3.html]]

-インストール手順
--bzip2
--ruby
--RubyGems
 $ wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
 $ tar zxvf rubygems-1.3.5.tgz
 $ cd rubygems-1.3.5
 $ ruby setup.rb

---Rubyのバージョンによって使えるRubyGemsのバージョンが決まる(Ruby 1.8.5 の場合は 1.3.5 だった)
---[[How to install Ruby and Gems on CentOS 5.5:http://www.betaquest.com/2010/09/installing-ruby-and-gems-on-centos-5-5/]]
---[[「ruby extconf.rb」で「can't find header files for ruby」エラー:http://l-w-i.net/m/20080923_01.txt]]

--[[Tokyo Cabinet:http://fallabs.com/tokyocabinet/]]
 $ wget http://1978th.net/tokyocabinet/tokyocabinet-1.4.47.tar.gz
 $ tar zxvf tokyocabinet-1.4.47.tar.gz 
 $ cd tokyocabinet-1.4.47
 $ ./configure 
 $ make
 # make install

--[[MessagePack:http://sourceforge.net/projects/msgpack/]]
 $ wget http://sourceforge.net/projects/msgpack/files/msgpack/cpp/msgpack-0.5.4.tar.gz
 $ tar zxvf msgpack-0.5.4.tar.gz 
 $ cd msgpack-0.5.4
 $ ./configure
 $ make
 # make install

--MessagePack for Ruby
 # gem install msgpack

--[[kumofs:http://kumofs.sourceforge.net/]]
 $ wget https://github.com/etolabo/kumofs/downloads/kumofs-0.4.13.tar.gz
 $ tar zxvf kumofs-0.4.13.tar.gz 
 $ cd kumofs-0.4.13
 $ ./configure 
 $ make
 # make install
 
* 1台のサーバで冗長構成を試す [#f09c626f]
-[[「kumofs」を使って、分散key-Valueストレージシステムを構築:http://blog.flatlabs.net/20100416_002410/]]
-[[kumofs 1台のマシンで冗長構成を組んでみる:http://blog.livedoor.jp/agisay/archives/51335427.html]]

-準備(データベースファイルの作成)
--1億件のテストをするため、余裕をみてバケット数=1.5億を指定して作成
 $ tchmgr create kumodb1.tch 150000000
 $ tchmgr create kumodb2.tch 150000000
 $ tchmgr create kumodb3.tch 150000000

-起動
--マネージャ起動
 $ kumo-manager -v -l localhost:19700 -p localhost:19701
 $ kumo-manager -v -l localhost:19701 -p localhost:19700
---片方しか動いていないときは以下のエラーが出る
 2011-05-19 15:54:29 ../rpc/client_tmpl.h:199: connect failed 127.0.0.1:19701: Connection refused

--サーバ起動
 $ kumo-server -m localhost -l localhost:19801 -L 19901 -s /var/kumofs/kumodb1.tch
 $ kumo-server -m localhost -l localhost:19802 -L 19902 -s /var/kumofs/kumodb2.tch 
 $ kumo-server -m localhost -l localhost:19803 -L 19903 -s /var/kumofs/kumodb3.tch
--- 動きを見たければ -v オプションを付ける

--サーバ登録
 $ kumoctl localhost attach

--ゲートウェイ起動
 $ kumo-gateway -v -m localhost -t localhost

--状態確認
 $ kumoctl localhost status
 hash space timestamp:
   Thu May 19 16:59:23 +0900 2011 clock 139
 attached node:
   127.0.0.1:19801  (active)
   127.0.0.1:19802  (active)
   127.0.0.1:19803  (active)
 not attached node:

--試しに接続
 $ telnet localhost 11411
 Trying 127.0.0.1...
 Connected to localhost.localdomain (127.0.0.1).
 Escape character is '^]'.
 version
 VERSION kumofs-0.4.13

--統計情報
 $ kumostat -h
 Usage: kumostat server-address[:port=19800] command
        kumostat -m manager-address[:port=19700] command
 command:
    pid           get pid of server process
    uptime        get uptime
    time          get UNIX time
    version       get version
    cmd_get       get number of get requests
    cmd_set       get number of set requests
    cmd_delete    get number of delete requests
    items         get number of stored items
    stats         get statistics like memcached's 'stats' command
    rhs           get rhs (routing table for Get)
    whs           get whs (routing table for Set/Delete)
    hscheck       check if rhs == whs
    replstat      get replace status
    set_delay     maximize throughput at the expense of latency
    unset_delay   minimize latency at the expense of throughput

--負荷確認
 $ kumotop -m localhost
 address          #Get  #Set  #Del  Get/s  Set/s  Del/s  QPS  items                 time  clock  status
 127.0.0.1:19801     0     0     0      0      0      0    0      0  2011-05-19 17:24:18    896   ready
 127.0.0.1:19802     0     0     0      0      0      0    0      0  2011-05-19 17:24:18    896   ready
 127.0.0.1:19803     0     0     0      0      0      0    0      0  2011-05-19 17:24:19    896   ready

* 耐障害性、自動復帰など [#r073fdc5]
** kumo-server [#p495f68f]

** kumo-manager [#kd55a796]

** kumo-gateway [#x23d590f]
-ソフトウェア的な障害を考慮するなら、kumo-gatewayをdaemontoolsで監視し、落ちたら自動的に再起動するような仕組みを構築

* チューニング [#zac29231]
** データベースファイル [#yaefbabd]
-最大の性能を得たいなら、kumo-serverのオプションでデータベースファイルを作るのではなく、tchmgrコマンドを使ってデータベースファイルを作成する
-最も重要なのはパケット数のチューニング

 バケット数(bnum)=レコード数の約2倍 / 拡張メモリ(xmsiz)
   * 拡張メモリ:KVSに割り当てられるメモリ

-64GB以上になる場合は、データベース作成時に「#opts=l」を付ける
--[[TokyoCabinet 64GBの壁:http://ameblo.jp/cyberx-engineer/entry-10688375059.html]]

-拡張メモリマップのサイズ(xmsiz), キャッシュ機構(rcnum)
 $ kumo-server -v -m localhost -l localhost:19801 -L 19901 -s "database.tch#xmsiz=600m#rcnum=4k"

-参考資料
--[[Tokyo Cabinet第1版基本仕様書:http://fallabs.com/tokyocabinet/spex-ja.html]]
--[[Inside Tokyo Cabinet その壱:http://alpha.mixi.co.jp/blog/?p=84]]

** スレッド数 [#h21a875c]
-kumo-server, kumo-gateway
-- -TW <number=2>    --write-threads        number of threads for asynchronous writing
-- -TR <number=8>    --read-threads         number of threads for asynchronous reading

* スケールアウト [#j229f4a5]
-[[kumo-serverの追加方法:http://d.hatena.ne.jp/ando_ando_ando/20101017/1288545397]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS