- 追加された行はこの色です。
- 削除された行はこの色です。
- kumofs へ行く。
-[[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]]