RHEL6.0 csync2双向同步

系统环境: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处理

相关软件下载及参考

免费下载地址在

用户名与密码都是

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/75820b1f33573403a7d34ff07c71d59c.html