読者です 読者をやめる 読者になる 読者になる

Spread Toolkit で分散ログ (2) インストールと設定

OS は fedora core 5 / 6 で、以下のような構成で。

www (192.168.0.10)
Apache, spread
loghost (192.168.0.11)
spread, spreadlogd

spread-src-3.17.4.tar.gz をダウンロードし、展開。

$ ./configure
$ make
# make install

/usr/local/lib にライブラリがインストールされるので、ld.so.conf に /usr/local/lib を追加し、/sbin/ldconfig しておく。
Perl モジュールもインストール。

$ cd perl/Spread
$ perl Makefile.PL
$ make
$ make test
# make install

Spread.pm はインターフェースが Perl っぽくなくて、いまいち使いづらいので、Perl 使いの方は Spread::Session も入れておくと吉かも。

/usr/local/etc/spread.conf

# ブロードキャストを使う場合
Spread_Segment  192.168.0.255:4803 {
    www        192.168.0.10
    loghost    192.168.0.11
}
# マルチキャストを使う場合
Spread_Segment  225.0.0.1:4803 {
    www        192.168.0.10
    loghost    192.168.0.11
}
RuntimeDir = /var/run/spread
DaemonUser  = nobody
DaemonGroup = nobody

最初、閉じたネットワーク (default gateway がない) でマルチキャストを使おうとしたら

DL_init_channel: problem in setsockopt to multicast address

というエラーが出て spread が起動せず。かなりはまった。

# route add -net 224.0.0.0/4 dev eth0

として、マルチキャストの経路を設定してやる必要があった。

DaemonUser, DaemonGroup を指定した場合は RuntimeDir に chroot して動作するため、あらかじめ /var/run/spread を作成しておく。

起動。

# /usr/local/sbin/spread
(中略)
Conf_init: using file: /usr/local/etc/spread.conf
Successfully configured Segment 0 [225.0.0.1:4803] with 2 procs:
                         www: 192.168.0.10
                         loghost: 192.168.0.11
Set user name to 'nobody'
Set group name to 'nobody'
Membership id is ( -1062731627, 1169641071)
--------------------
Configuration at fc5 is:
Num Segments 1
        2       225.0.0.1         4803
                www                     192.168.0.10
                loghost                 192.168.0.11
====================
++++++++++++++++++++++
Num of groups: 0

www, loghost 両方で起動すると、数秒でこんな感じに。

spread が起動した状態で、spuser という対話コマンドを使うと、メッセージの送受信がテストできます。