2台のサーバのホームページ領域をリアルタイム同期


WordPressを冗長化するために
CentOS6.6にrsync + lsyncでApacheのDOCUMENT ROOTを冗長化した時の設定

Slave側

rsyncはすでにインストールされていたのだけど
CentOSではxinetd経由で起動するのでxinetd をインストール

# yum -y install xinetd

rsyncd.confを設定

# vi /etc/rsyncd.conf
--------------------------
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid

#任意の名前、Maseter側で使う
[wordpress]
#同期したいフォルダ
path = /var/www/html
#Master側のIP
hosts allow = 192.168.10.1
hosts deny = *
list = true
uid = root
gid = root
read only = false
--------------------------

xinetdスタート

# /etc/rc.d/init.d/xinetd start

自動起動にセット

# chkconfig xinetd on

Master側

lsyncをインストールするのにyumリポジトリにrpmforgeを追加

# rpm -Uvh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

インストール

# yum install rsync lsyncd --enablerepo=rpmforge

lsyncd.conf設定

# vi /etc/lsyncd.conf
--------------------------
settings = {
        logfile    = "/var/log/lsyncd/lsyncd.log",
        statusFile = "/tmp/lsyncd.stat",
        statusInterval = 1,
}

sync{
        default.rsync,
        source = "/var/www/html/",
        target = "192.168.10.2::wordpress",
        excludeFrom = "/etc/rsync_exclude.lst",
}
--------------------------

target = "192.168.10.2::homepage"
Slave側のIPと[ ] に書いた名称

excludeFromは除外したいファイルを設定する。

除外リストrsync_exclude.lstを作成

# vi /etc/rsync_exclude.lst
--------------------------
/wordpress/wp-config.php
--------------------------

相対パスで、ファイル名またはフォルダ名

lsyncdスタート

# /etc/rc.d/init.d/lsyncd start

自動起動設定

# chkconfig lsyncd on

tailコマンドでログを見ながらFTPでMaster側にファイルをアップロードしてみましょう。

初回起動時はSlave側に一気にファイルを送る場合があるのでサーバ負荷に注意しましょう。先にSlave側もFTPでファイルをアップロードしておいたほうがいいかも。

この設定のままだとSlave側はrootユーザーでファイルがアップロードされてしまうのでrsyncd.confのuid/gidをapacheユーザにするほうがいいかも。
ただしapacheユーザーでSlave側にSSH接続できないとダメ?(未確認)