ほぼまっさらなCentOS5.5にkumofsをインストール
いくらでも情報があるんですが、自分用の備忘録。
方針とか
- この手順では32bitマシンを対象にする
- ソースから入れるパッケージはとにかくcheckinstall
- ネットワーク周りやiptablesの設定は各自やってね
準備するもの
- CentOS 5.5をインストール済みのマシン
- 全部デフォルト設定でインストール(インストーラ任せ)
- アップデート済み(yum -y update)
手順
rpmforgeを使えるようにする
checkinstallをインストールしたいのだが、rpmforgeじゃないとパッケージが置いてないのでrpmforgeを使えるようにする。x64の人はAdditionalResources/Repositories/RPMForge - CentOS Wikiを要確認。
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt rpm -i rpmforge-release-0.5.1-1.el5.rf.*.rpm
で、このままだとrpmforgeがデフォルトで有効になっちゃってるので、基本は無効にする。エディタで/etc/yum.repos.d/rpmforge.repoを開いて、enabled = 0にしておく。
rpmforgeを使ってyum installしたい場合は、--enablerepo=rpmforgeを付ける。
checkinstallのインストール
yum -y --enablerepo=rpmforge install checkinstall
bzip2のインストール
TokyoCabinetでbzip2-1.0.5以上が必要なのだが、yumでインストールできるものは1.0.3なのでソースから入れる。
wget http://www.bzip.org/1.0.5/bzip2-1.0.5.tar.gz tar xvf bzip2-1.0.5.tar.gz cd bzip2-1.0.5 make /usr/sbin/checkinstall ... rpm -iH /usr/src/redhat/RPMS/i386/bzip2-1.0.5-1.i386.rpm
openssl-develのインストール
kumofsが依存してるのでインストール。
yum -y install openssl-devel
ncurses-develのインストール
id:salexkiddさんから、これを入れておかないとkumotopコマンド(kumofsのサーバ監視ツール)が動作しないと教えて頂いた。ありがとうございます!!
yum -y install ncurses-devel
Rubyのインストール
先にzlib-develを入れておかないと、RubyGemsがこけるので注意。
wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p299.tar.bz2 tar xvf ruby-1.8.7-p299.tar.bz2 cd ruby-1.8.7-p299 ./configure make /usr/sbin/checkinstall --fstrans=no ... rpm -iH /usr/src/redhat/RPMS/i386/ruby-1.8.7-p299-1.i386.rpm
RubyGemsのインストール
wget http://rubyforge.org/frs/download.php/70696/rubygems-1.3.7.tgz tar xvf rubygems-1.3.7.tgz cd rubygems /usr/sbin/checkinstall -R "ruby setup.rb" ... rpm -iH /usr/src/redhat/RPMS/i386/rubygems-1.3.7-1.i386.rpm
TokyoCabinetのインストール
chconしないとSELinuxに怒られて、kumofsを起動できないぽい。
wget http://1978th.net/tokyocabinet/tokyocabinet-1.4.45.tar.gz tar xvf tokyocabinet-1.4.45.tar.gz cd tokyocabinet-1.4.45 ./configure make /usr/sbin/checkinstall ... rpm -iH /usr/src/redhat/RPMS/i386/tokyocabinet-1.4.45-1.i386.rpm chcon -t texrel_shlib_t /usr/local/lib/libtokyocabinet.so.9
MessagePack for C++のインストール
gcc44を指定したり、checkinstallで--exclude=/selinuxが必要だったり。
wget http://downloads.sourceforge.net/project/msgpack/msgpack/cpp/msgpack-0.5.2.tar.gz tar xvf msgpack-0.5.2.tar.gz cd msgpack-0.5.2 CC=gcc44 CXX=g++44 ./configure make /usr/sbin/checkinstall --exclude=/selinux ... rpm -iH /usr/src/redhat/RPMS/i386/msgpack-0.5.2-1.i386.rpm
kumofsのインストール
やっとkumofsをインストールできる。gitで最新版を落としてきてもよかったけど、配布パッケージver0.3.2を使うことに。ここでもgcc44を指定したり--exclude=/selinuxを指定したり。
wget http://github.com/downloads/etolabo/kumofs/kumofs-0.4.10.tar.gz tar xvf kumofs-0.4.10.tar.gz cd kumofs-0.4.10 CC=gcc44 CXX=g++44 ./configure make /usr/sbin/checkinstall --exclude=/selinux ... rpm -iH /usr/src/redhat/RPMS/i386/kumofs-0.4.10-1.i386.rpm
あと、LD_LIBRARY_PATHの設定が必要なので適当なエディタで/etc/profileを開いて、以下を追加しておく。
export LD_LIBRARY_PATH=/usr/local/lib
kumofsをシングルノードで起動できるようにする
開発環境などはシングルノードで動作させたいことが多いと思うので、以下のようなスクリプトを用意。やっつけで作ってるので、動かなかったら教えてください。attachに失敗するので、manager・serverが起動完了するまで3秒のsleepをかけてるけど、環境によってはもっと長めに時間をとらないとダメかも。
ちなみにうちではこのスプリプトを/usr/local/bin/kumosingleに保存して使っている。
#!/bin/sh case "$1" in start) if [ ! -d /var/kumofs ]; then mkdir /var/kumofs fi if [ ! -d /var/log/kumofs ]; then mkdir /var/log/kumofs fi # run manager kumo-manager -v -l localhost -d /var/kumofs/manager.pid \ -o /var/log/kumofs/manager.log # run servers kumo-server -v -m localhost -l localhost:19801 -L 19901 \ -s /var/kumofs/database1.tch \ -d /var/kumofs/server1.pid \ -o /var/log/kumofs/server1.log kumo-server -v -m localhost -l localhost:19802 -L 19902 \ -s /var/kumofs/database2.tch \ -d /var/kumofs/server2.pid \ -o /var/log/kumofs/server2.log kumo-server -v -m localhost -l localhost:19803 -L 19903 \ -s /var/kumofs/database3.tch \ -d /var/kumofs/server3.pid \ -o /var/log/kumofs/server3.log # wait sleep 3 # run gateway(enabled flags) kumo-gateway -v -m localhost -t 11211 -d /var/kumofs/gateway.pid \ -o /var/log/kumofs/gateway.log -F # attach servers kumoctl localhost attach echo "running kumofs" ;; stop) kill `cat /var/kumofs/gateway.pid` kill `cat /var/kumofs/server1.pid` kill `cat /var/kumofs/server2.pid` kill `cat /var/kumofs/server3.pid` kill `cat /var/kumofs/manager.pid` rm -f /var/kumofs/gateway.pid rm -f /var/kumofs/server1.pid rm -f /var/kumofs/server2.pid rm -f /var/kumofs/server3.pid rm -f /var/kumofs/manager.pid echo "stopped kumofs" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0
kumofsの動作確認
kumofsはmemcachedプロトコルでやりとりができるので、telnetを使って動作確認。
telnet localhost 11211
...
version
VERSION kumofs-0.4.10って表示されたらちゃんと動いてるはず。
更新履歴
2010/04/21
- kumofs-0.3.3に手順変更
- kumofs起動スクリプト kumo-gatewayの起動オプションに-F追加
2010/04/25
- kumofs-0.3.4に手順変更
2010/07/18
- id:salexkiddさんに指摘されたkumotopコマンドが動作しない件に対応
- ncurses-develをインストールするようにした
- CentOS 5.4 -> CentOS 5.5
- インストールモジュールを最新化
- ruby-1.8.7-p249 -> ruby-1.8.7-p299
- rubygems-1.3.6 -> rubygems-1.3.7
- tokyocabinet-1.4.43 -> tokyocabinet-1.4.45
- msgpack-0.4.3 -> msgpack-0.5.2
- kumofs-0.3.4 -> kumofs-0.4.10