系统环境:RHEL6.0 iptables and selinux off
server1: server26.example.com
server2:desktop26.example.com
---->安装必要的软件(每台server上执行类似操作)
yum install gcc-* libgpg-error libgpg-error-devel libgcrypt-devel -y
####按顺序安装一下源码
tar -zxf librsync-0.9.7.tar.gz
cd librsync-0.9.7
./configure
make
make install
tar -zxf sqlite-2.8.17.tar.gz
cd sqlite-2.8.17
./configure
make
make install
tar -zxf libgpg-error-1.7.tar.gz
cd libgpg-error-1.7
./configure
make
make install
tar -zxf libgcrypt-1.4.4.tar.gz
cd libgcrypt-1.4.4
./configure
make
make install
tar -jxf gnutls-2.6.6.tar.bz2
cd gnutls-2.6.6
./configure
make
make install
tar -zxf libtasn1-2.1.tar.gz
cd libtasn1-2.1
./configure
make
make install
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig /usr/local/lib #使上面导入生效
####安装此软件,编辑inotify的触发脚本,实现实时同步
tar -zxf inotify-tools-3.13.tar.gz
cd inotify-tools-3.13
./configure
make
make install
####配置csync2安装环境
yum install byacc flex -y
tar -zxf csync2-1.34.tar.gz
cd csync2-1.34
./configure
make
make install
make cert
csync2 -k /etc/csync2.key #生成key速度比较慢,可移动鼠标加快
scp /etc/csync2* server26:/etc/ #将一台服务器生成的key直接同步到另一台服务器
####配置csync2
yum install xinetd -y
cp /etc/xinetd.d/rsync /etc/xinetd.d/csync2
vim /etc/xinetd.d/csync2
service rsync
{
disable = no
protocol = tcp
flags = REUSE
socket_type = stream
wait = no
user = root
group = root
server = /usr/local/sbin/csync2
server_args = -i
}
####配置csync2服务端口
vim /etc/services
csync2 30865/tcp
mkdir /opt/csync #创建同步目录
####编辑csync2配置文件
vim /etc/csync2.cfg
group mygroup
{
host desktop26.example.com server26.example.com #host后只能写主机名
#host host4@host4-eth2;
key /etc/csync2.key;
#include /var/www/html; #默认同步的目录
include /opt/csync; #指定新建目录为同步目录,两台server上同步目录的名称和路径一样
#include %/homedir%/bob;
#exclude %homedir%/bob/temp #不同步指定目录下的文件或目录
#exclude *~.*; #排除以点开头的文件
#action
#{
# pattern /etc/apache/httpd.conf
# pattern /etc/apache/sites-available/*;
# exec "/usr/sbin/apache2ctl graceful"
# logfile "/var/log/csync2_action.log";
# do-local;
#}
backup-directory /var/csync2; #防选错备份目录,根据自己的需求设置,每台主机都有
back-generation 3;
auto younger; #同步以最新的文件为标准更新
#prefix homedir
#{
#on host[12]:/export/users;
#on*: /home;
#}
}
/etc/init.d/xinetd restart
chkconfig xinetd on
netstat -antlp #csync2端口是否被监听
tcp 0 0 :::30865 :::* LISTEN 2896/xinetd
####(可选)配置inotify触发脚本(需安装inotify-tools-3.13.tar.gz)
vim /use/local/sbin/csync2.sh
#!/bin/sh
src=/opt/csync #指定同步目录
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' \
--exclude "\.swp$" \
-e close_write,modify,delete,create,attrib \
${src} \
| while read file
do
csync2 -x > /dev/null 2>&1 #没有参数v在界面不显示详细
#csync2 -xv
#echo "${src} was csynced...."
done
chmod +x /usr/loca/sbin/csync2.sh
csync2.sh & #每台主机上执行
####csync2相关命令介绍
csync2 -vvv -T #用来测试csync2配置是否正确,可看到相关的执行过程
csync2 -xv #执行一次同步,在一台主机同步目录操作后,执行一次命令,便会将改动同步到另一台主机
csync2 -xvvv #执行一次同步并显示详细过程
####测试同步是否正常
在两台server中的任一台创建or删除文件(指定为同步的目录)然后查另一台主机是否进行了同步,若遇到问题,
用csync2 -xv命令手动进行调试,根据错误信息提示调整
注:缓存相关的目录尽力不要用csync2处理,尽可能交给NFS处理
相关软件下载及参考