#192.168.100.250作为数据源,也就是数据在这台服务器上面,192.168.100.251需要同步他的数据,100.250所更改的数据,实时的同步到251上去

#100.250已经安装好了nginx,安装目录为/usr/local/nginx,nginx请自行安装,如果不想安装,也没有关系,请在/usr/local/目录下创建nignx目录

#第一次,请根据我的思路完成,之后可以进行适当的调整


#100.250监控的目录为/usr/local/nginx

#100.251存放数据的目录为/usr/local/nginx/





#100.251操作


查看软件是否安装

rpm -qa | grep rsync

rsync-3.0.6-9.el6_4.1.x86_64

#如果未安装请使用 yum -y install rsync进行安装


#配置rsync

vim /etc/rsyncd.conf  文件需要创建

uid=root

gid=root

max connections=36000

use chroot=no

log file=/var/log/rsyncd.log

pid file=/var/run/rsyncd.pid

lock file=/var/run/rsyncd.lock

[nginx_rsync]

path=/usr/local/nginx/

comment = offical rsync cn

ignore errors = yes 

read only = no

hosts allow = 192.168.100.250 #允许访问的IP地址

hosts deny = * 


#启动服务

rsync  --daemon  --config=/etc/rsyncd.conf 

#创建/usr/local/nginx目录

mkdir -p /usr/local/nginx


#100.250

#软件地址:官网

#wget http://sersync.googlecode.com/files/sersync2.5_32bit_binary_stable_final.tar.gz

#目前官网在国内不能登录,这里给大家提供百度云的下载地址,个人收藏

#http://pan.baidu.com/s/1dFOBLb7


#安装软件

#在root的宿主目录/root

tar zxf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/src/

cd GNU-Linux-x86/

cp confxml.xml confxml.xml.2016-07-18 #备份主要的配置文件,这个文件如果在启动程序时不指定启动文件,则默认使用此文件,一般情况下,我们都会建立单独的文件进行启动

cp confxml.xml nginx.xml #创建单独的配置文件,启动时需要此文件,配置文件以.xml结尾,前面的名字自定义 


#更改配置文件

vim nginx.conf

#需要更改的配置段

#监控动作开启

 

#更改

#更改

 

  #此配置是定义监控那些动作,含义都不难,自行翻译

#定义监控的目录

   

   


  # watch=“/usr/local/nginx”    是监控的目录

  # #192.168.100.251是rsync的地址,name="nginx_rsync"是rsync同步的模块名,也就是251上rsync配置文件中指定的模块名字,下面应该可以指定多个。

  

#密码认证

           

           

start="true"由start="flase"改变  /etc/rsync.pas是密码文件,需要创建,里面放入密码,默认的用户名为root

#需要注释的部分

    #注释掉结尾

这一段,可以注释掉,没啥用。


  #其余的默认就好了。

#创建密码文件

 

cat >> /etc/rsync.pas << EOF

NXQf@fz708qYc1uu

EOF

#改变文件权限,安全起见

chcmod 600 /etc/rsync.pas


#启动服务,服务脚本在当前目录下名为sersync2

/usr/src/GNU-Linux-x86/sersync2  -d -r -o /usr/src/GNU-Linux/nginx.xml

#-d  以守护进程的方式启动

#-r  立即进行监控同步

#-o  指定服务启动的配置文件

#watch path is: /usr/local/nginx

#尾部出现此提示,表明可以进行监控,否则按照提示进行错误处理,找到错误日志的位置。

#程序执行的日志记录位置

cat /tmp/rsync_fail_log.sh 


#看一下进程

ps -ef | grep sersync2 | grep -v "grep"

#root       8865      1  0 10:50 ?        00:00:00 /usr/src/GNU-Linux/sersync2 -d -r -o /usr/src/GNU-Linux/nginx.xml


#如果开启了防火墙,请设置允许规则

#251上建立iptables 允许873端口入站

iptables -I INPUT -p tcp --dport 873 -j ACCEPT

service iptables save

#在250上建立Iptables规则

iptables -A INPUT -p tcp -m tcp --dport 8910 -j ACCEPT

iptables -A INPUT -p tcp -m tcp --dport 8911 -j ACCEPT

service iptables save


#还有一个问题,sersync这个进程总是无缘无故的就死了,所以需要进程的状态,如果发现关闭则进行启动进程,我们通过一个简单的脚本实现,脚本一共6行

vim /usr/src/GNU-Linux/infoty.sh

#!/bin/bash

threadnum=`ps aux|grep sersync2|grep -v grep | wc -l`

   if [ $threadnum -eq 1 ]; then 

        echo "sersync server is running!"

   else

echo "sersync server is stop!"

/usr/local/sersync2/sersync2 -d -r -o cms-webapps-all.xml

   fi

chmod +x infoty

crontab -e

1/* * * * * /usr/src/GNU-Linux/infoty.sh > /dev/null 2>&1



OK!至此,一个简单的实时同步就做完了,如果实现双向同步按照这个步骤机器对调再来一遍。注意,如果做双向实时同步,注意更改配置文件中的IP地址,以及创建密码文件,IPTABLES等问题,如果监控的文件数量过多,请输入下面命令

echo 50000000 > /proc/sys/fs/inotify/max_user_watches             #数字代表了监控文件的最大数量,可以根据需求进行调整



启动参数举例

  1、/usr/src/GNU-Linux-x86/sersync2 -r -d -o /usr/src/GNU-Linux/nginx.xml

#通常情况下使用这种方式,对本地到远程整体同步一遍后,在后台运行实时同步。


  2、/usr/src/GNU-Linux-x86/sersync22 -d -o  /usr/src/GNU-Linux/nginx.xml

#在主服务器上开启sersync守护进程,使sersync在后台运行,开启实时同步。


  3、/usr/src/GNU-Linux-x86/sersync2 -r -o  /usr/src/GNU-Linux/nginx.xml

#在开启实时监控的之前对主服务器目录与远程目标机目录进行一次整体同步

  (如果设置了过滤器,即在xml文件中,filter为true,则暂时不能使用-r参数进行整体同步。-r参数将会无效)


  4、/usr/src/GNU-Linux-x86/sersync2  -n 5 -d -o /usr/local/sersync/config.xml

#指定默认的线程池的线程总数,如果不指定,默认启动线程池数量是10(适用于四核服务器)

#如果cpu使用过高,可以通过这个参数调低,如果机器配置较高,可以用-n调高线程总数。



  也可以不进行同步,只运行插件:./sersync -m pluginName

例如./sersync -m command,则在监控到文件事件后,不对远程目标服务器进行同步,而是直接运行command插件。



  多个参数可以配合使用

./sersync -n 8 -o abc.xml -r -d

表示,设置线程池工作线程为8个,指定abc.xml作为配置文件,在实时监控前作一次整体同步,以守护进程方式在后台运行。


经过测试,双向实时同步是可以完成的,按照以上步骤进行修改,就可以完成,更多详细资料请参考http://wenku.baidu.com/link?url=iWt-TING0IEe7IB8b2xNYUSASllULvWWzP24bwYb6Rzw1XFOKIed8bESNIJtYGpaWAIElNxvxYYZ8cX99JNAmIpy-9QWDRqegDR2hr9MtQa


http://www.linuxidc.com/Linux/2012-02/53572p5.htm