そろそろ本格的に kumofs を使ってみようかなと思いたって、CentOS 5.5 x86_64 向けの RPM を作ってみました。
まず、kumofs には、次のものが必要です(以下の情報は公式ドキュメントを参照しました)。
Linux と g++ と libcrypto と zlib は、CentOS 5.5 x86_64 の標準パッケージに含まれているので標準パッケージをインストールすれば問題ありません。
Ruby は、以前紹介した方法で作成したバージョン 1.8.7 系を RPM でインストールします。
TokyoCabinet は、自分で作成した SPEC ファイルから RPM を作成しました。
MessagePack for C++ も、自分で作成した SPEC ファイルから RPM を作成しました。
MessagePack for Ruby は、RPM を作成してもいいですが gem コマンド一発でインストールすることができるので RPM は作成しませんでした。次のコマンドでインストールします。
$ sudo gem install msgpack
肝心の kumofs ですが、kumofs は分散環境下で使われていることを前提しているので、kumo-manager、kumo-server、kumo-gateway、は別々のサーバであることが普通の環境だと思います。
そこで、kumofs というコアのプログラムが含まれている RPM、manager、server、gateway、をそれぞれ別々の RPM として作成してみました。あわせて、manager、server、gateway、それぞれの redhat 系の起動スクリプト、設定ファイル、logrotate スクリプト、daemontools 用のサンプルスクリプト、を作成して RPM に同梱しました。これからのスクリプトは、まとめて github に置きました。また、作成した RPM も github に置きました(バージョンが少し古いので注意してください)。
sysinit のスクリプトを使うと、kumofs の実行ユーザが root にになります。通常ユーザで実行したい場合は、daemontools などを使うといいと思います。daemontools 用のサンプルスクリプトは、github においてある kumofs-XXX-run.sample と kumofs-XXX-log-run.sample です。daemontools を使う場合は、logrotate のスクリプトを削除するのを忘れないでください。
kumo-gateway のプログラムにも libtokyocabinet がリンクされているのはちょっと気になるところですが、特に弊害はないので気にしないことにします。
ここで作成した RPM で、それぞれのインストール方法を説明します。
まず、manager から、manager にはコアの RPM もインストールします。manager の設定は、/etc/sysconfig/kumo-manager を編集します。daemontools 用のスクリプトも同じ設定ファイルを読み込んでいます。
$ sudo yum install kumofs kumofs-manager
次に server。設定ファイルは、/etc/sysconfig/kumo-server です。
$ sudo yum install kumofs-server
そして、gateway。設定ファイルは、/etc/sysconfig/kumo-gateway です。
$ sudo yum install kumofs-gateway
server と gateway には、kumoctl などの管理系のコマンドはインストールされないので注意してください。server と gateway にはそれぞれに必要な最低限のプログラムをインストールしています。kumofs の管理系のコマンドを使う場合は、manager のサーバ上から使います。
また、kumofs とは関係ありませんが、個人的には rpmforge を本番環境のサーバでは使わない方がいいと思います。過去に、rpmforge を使っていてパッケージまわりでトラブったことがあります。自分で RPM を作成する手間を削減できるので EPEL の方はちゃんとしているので使うのをおすすめします。
今回作成した kumofs の RPM も、EPEL に入れることができるのか提案してみる予定です。
今回の RPM を作るにあたって、次のページを参考にしました。貴重な情報ありがとうございました!
(おまけ)
OSX を使っている人向けに MacPorts でも kumofs をインストールすることができます。
$ sudo port selfupdate
$ sudo port install kumofs
$ sudo port info kumofs
kumofs @0.4.7 (net)
Variants: universal
Description: kumofs is a scalable and highly available distributed
key-value store. You can use a memcached client library to
set, get, CAS or delete values from/into kumofs. Backend
storage is Tokyo Cabinet and it will give you great
performance.
Homepage: http://kumofs.sourceforge.net/
Library Dependencies: msgpack, rb-msgpack, tokyocabinet, openssl, zlib
Platforms: darwin
License: unknown
Maintainers: < my email address >
Tags: kumofs