kumofs の RPM を作ってみた

June 11th, 2010 by naoya | Filed under day.

そろそろ本格的に 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:

Leave a Reply