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接続できないとダメ?(未確認)