やはり Debian ですよね,いろいろと.
と言うわけで,以前は DRBD Dual Primary + GFS2 と言う構成で試していたんですが,起動や停止手順を誤るとプロセスが完全に死んじゃってシステム終了すらできなくなったりしたので,お気軽な方の検証を.
参考 : [http://d.hatena.ne.jp/wadap/20090913/1252839223]
下準備
いつも通り IP アドレスは手動で標準システムのみのものを用意します.そして
# aptitude install sudo vim lv openssh-server
# update-alternatives --config editor
# visudo
# addgroup wheel
# adduser user wheel
# logout
こんな感じのを2つ用意します.virt-clone を使ったやり方はhttp://d.hatena.ne.jp/conceal-rs/20100119/1263871161を参考に.今回は普通にインストールしました.
slave 側の準備
$ sudo adduser rsyncd
$ sudo mkdir /opt/folder
$ sudo chmod 777 /opt/folder
$ sudo chown rsyncd.rsyncd /opt/folder
$ sudo vim /etc/rsyncd.conf
uid = rsyncd
gid = rsyncd
log file = /var/log/rsyncd.log
[data]
comment = rsync slave
path = /opt/folder
hosts allow = lsyncd-master
read only = false
$ sudo rsyncd --daemon
master 側の準備
今回はパッケージ化します.
$ sudo aptitude install rsync build-essential libxml2-dev dh-make autotools-dev fakeroot
$ wget http://lsyncd.googlecode.com/files/lsyncd-1.26.tar.gz
$ tar zxvf lsyncd-1.26.tar.gz
$ cd lsyncd-1.26/
$ dh_make --createorig
$ fakeroot dpkg-buildpackage
$ sudo dpkg -i ../lsyncd_1.26-1_amd64.deb
$ sudo mkdir /opt/folder
$ sudo chgrp wheel /opt/folder
$ sudo chmod g+w /opt/folder
$ sudo vim /etc/lsyncd.conf.xml
<lsyncd version="1.25">
<settings>
<logfile filename="/var/log/lsyncd"/>
<pidfile filename="/var/run/lsyncd/lsyncd.pid"/>
<binary filename="/usr/bin/rsync"/>
<callopts>
<option text="-lt%r"/>
<option text="-p"/>
<exclude-file/>
<source/>
<destination/>
</callopts>
</settings>
<directory>
<source path="/opt/folder"/>
<target path="lsyncd-slave::data"/>
</directory>
</lsyncd>
$ sudo lsyncd
適当にファイル作ったりするとファイルが転送されます.これは便利だな.
自動起動用のスクリプトはこんな感じで.
#!/usr/bin/env bash
### BEGIN INIT INFO
# Provides: lsyncd
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/stop lsyncd daemon
### END INIT INFO
LSYNCD=/usr/bin/lsyncd
SRC=/opt/folder
PID=/var/run/lsyncd/lsyncd.pid
. /lib/lsb/init-functions
case "$1" in
start)
log_daemon_msg "Start lsyncd."
$LSYNCD
;;
stop)
log_daemon_msg "Stop lsyncd."
killproc -p $PID
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: /etc/init.d/lsyncd {stnard|stop|restart}"
;;
esac
注意点としては lsyncd の設定で,source の部分の最後のスラッシュです.つけると「ディレクトリの中身」になり,つけないと「ディレクトリ自体」となるようで,ここでちょっとはまりました.
comments powered by Disqus