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 という対話コマンドを使うと、メッセージの送受信がテストできます。