rsyncとlsyncを使ったリアルタイムミラーリングについて解説します。
バックアップサーバーの作成やロードバランサ配下においてのWebサーバーの負荷分散に有用です。
緑色の文字の部分を環境に応じて変えてください。
yum install rsync
rsync同期設定
複数の同期元ホストまたはディレクトリを設定できます。
vi /etc/rsyncd.conf
pid file = /var/run/rsyncd.pid log file = /var/log/rsync.log read only = no secrets file = /etc/rsyncd.passwd [dir1] path=/var/www/html/dir1 comment=dir1 uid=root gid=root hosts allow=210.188.195.7 auth users = username [dir2] path=/var/www/html/dir2 comment=dir2 uid=root gid=root hosts allow=210.188.195.7 auth users = username
vi /etc/rsyncd.passwd
username:password
chmod 600 /etc/rsyncd.passwd
rsyncd起動スクリプト作成
vi /etc/init.d/rsyncd
#!/bin/bash # chkconfig: - 81 11 # description: rsyncd RETVAL=0 prog="/usr/bin/rsync" pidfile="/var/run/rsyncd.pid" OPTIONS="--daemon --config=/etc/rsyncd.conf" . /etc/rc.d/init.d/functions start() { echo -n "Starting $prog:" daemon $prog $OPTIONS RETVAL=$? echo "" [ $RETVAL = 0 ] && touch $pidfile return $RETVAL } stop() { echo -n "Stopping $prog:" killproc $prog RETVAL=$? echo "" rm -f $pidfile return $RETVAL } case $1 in start) start ;; stop) stop ;; restart) stop && start ;; status) status rsyncd RETVAL=$? ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 esac
chmod 755 /etc/init.d/rsyncd chkconfig rsyncd on /sbin/service rsyncd start
※この記事はもう古いです。下記ページより新しい情報を参照ください。
lsyncd2.1.4でpassword_fileを使えるようにインストール
lsyncは標準のyumでは提供されませんのでRPMforgeからインストールすることになります。
そのためにまずはサードパーティ製のリポジトリ(RPMForge)を利用できるように設定してから、lsyncをインストールします。
yum install yum-priorities vi /etc/yum.repos.d/CentOS-Base.repo
[base] priority=1 [updates] priority=1 [extras] priority=1 [centosplus] priority=1 [contrib] priority=1
wget http://apt.sw.be/RPM-GPG-KEY.dag.txt rpm --import RPM-GPG-KEY.dag.txt wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm rpm -Uvh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm yum -y update rpmforge-release
yum install lsyncd
lsync同期設定
複数の同期先ホストまたはディレクトリを設定できます。
vi /etc/lsyncd.conf
settings = { logfile = "/var/log/lsyncd.log", statusFile = "/var/log/lsyncd.stat", statusInterval = 5, } sync{ default.rsync, source = "/var/www/html/dir1", target = "username@210.188.195.8::dir1", rsyncOpts = { "-auz", "--numeric-ids", "--delete", "--password-file=/etc/rsyncc.passwd", } } sync{ default.rsync, source = "/var/www/html/dir2", target = "username@210.188.195.8::dir2", rsyncOpts = { "-auz", "--numeric-ids", "--delete", "--password-file=/etc/rsyncc.passwd", } }
vi /etc/rsyncc.passwd
password
chmod 600 /etc/rsyncc.passwd vi /etc/sysctl.conf
fs.inotify.max_user_watches = 30000
sysctl -p
lsyncd起動スクリプト作成
vi /etc/init.d/lsyncd
#!/bin/bash # chkconfig: - 82 12 # description: lsyncd RETVAL=0 prog="/usr/bin/lsyncd" pidfile="/var/run/lsyncd.pid" conf="/etc/lsyncd.conf" . /etc/rc.d/init.d/functions start() { echo -n "Starting $prog:" daemon $prog $conf RETVAL=$? echo "" [ $RETVAL = 0 ] && touch $pidfile return $RETVAL } stop() { echo -n "Stopping $prog:" killproc $prog RETVAL=$? echo "" rm -f $pidfile return $RETVAL } case $1 in start) start ;; stop) stop ;; restart) stop && start ;; status) status lsyncd RETVAL=$? ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 esac
chmod 755 /etc/init.d/lsyncd chkconfig lsyncd on /sbin/service lsyncd start
Copyright(C) systemexpress.co.jp All Rights Reserved. Author Takayuki Yukawa