rsync+sersync实时同步

废话我也不多说了,走了很多坑,直接说搭建流程。。。

 

目标服务器:10.0.3.11

源服务器:10.0.3.10

最终目的:将  源服务器  指定目录下的文件或目录 拷贝到  目标服务器指定目录下

目标服务器操作步骤

安装rsync

yum install rsync -y

修改rsyncd.conf配置文件

# 设置rsync运行权限为rsync
uid = root
gid = root
# 监听ip
address = 10.0.3.11
# rsync默认端口
port = 873
# 允许同步客户端的IP地址,可以是网段,或者用*表示所有 192.168.1.0/24或192.168.1.0/255.255.255.0,多个网段用空格隔开
hosts allow = * 
# 是否囚牢,锁定家目录,rsync被黑之后,黑客无法再rsync运行的家目录之外创建文件,选项设置为yes
use chroot = yes
# 最大连接数
max connections = 5
# 进程id,自动生成
pid file = /var/run/rsyncd.pid
# 指定max connetctions参数的锁文件
lock file = /var/run/rsync.lock
# 日志文件
log file = /var/log/rsync.log
# 客户端登陆后所显示提示信息的保存文件
motd file = /etc/rsyncd.motd
# 等待超时时间
timeout = 100

# 共享(同步)模块名称
[test]
# 路径
path = /home/www/
# 描述说明
comment = used for web-data backup
# 设置文件读写权限,false为可读写,ture为只读
read only = false
# 是否容许查看模块信息
list = yes
# 备份使用的用户名,和系统用户无关
auth users = root
# 存放备份用户信息的文件,格式为: 用户名:密码
secrets file = /etc/rsync.passwd
#不同步的目录
#exclude = 

 

注意:uid、gid所填用户与运行rsync服务的用户一致!当然为了偷懒,auth users 也可以成一致的, 🤭嘻嘻嘻...

其中secrets file的文件权限设置为 600以及它里面的格式设置为  用户:密码 ,比如   root:123456

源服务器操作步骤

查看服务器内核是否支持inotify

ll /proc/sys/fs/inotify #列出文件目录,出现下面的内容,说明服务器内核支持inotify
-rw-r--r-- 1 root root 0 Mar 7 02:17 max_queued_events
-rw-r--r-- 1 root root 0 Mar 7 02:17 max_user_instances 
-rw-r--r-- 1 root root 0 Mar 7 02:17 max_user_watches

备注:Linux下支持inotify的内核最小为2.6.13,可以输入命令:uname -a查看内核
CentOS 5.X 内核为2.6.18,默认已经支持inotify

修改inotify默认参数

修改参数:
sysctl -w fs.inotify.max_queued_events="99999999"
sysctl -w fs.inotify.max_user_watches="99999999"
sysctl -w fs.inotify.max_user_instances="65535"

vi /etc/sysctl.conf #添加以下代码
fs.inotify.max_queued_events=99999999 
fs.inotify.max_user_watches=99999999
fs.inotify.max_user_instances=65535
:wq! #保存退出

参数说明:
max_queued_events:
inotify队列最大长度,如果值太小,会出现"** Event Queue Overflow **"错误,导致监控文件不准确
max_user_watches:
要同步的文件包含多少目录,可以用:find /home/www -type d | wc -l 统计,必须保证max_user_watches值大于统计结果(这里/home/www为同步文件目录)
max_user_instances:
每个用户创建inotify实例最大值

创建密码认证文件

vi /etc/rsync.passwd
123456 
:wq!

chmod 600 /etc/rsync.pass #设置文件权限 

测试数据同步

# 安装rsync测试
yum
install rsync -y

rsync -avz --delete --password-file=/etc/rsync.passwd  /home/www/ root@10.0.3.11::test      #测试同步文件

--/home/www/                                                 #同步目录
--10.0.3.11                                                      #目标服务器,安装并配置完毕rsync
--test                                                               #模块自定义名称,即目标服务器的rsync配置文件中配置的

安装sersync工具

cd /usr/local/src
wget https://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz

tar zxvf sersync2.5_32bit_binary_stable_final.tar.gz
mv /usr/local/src/GNU-Linux-x86/ /usr/local/sersync/
vi /usr/local/sersync/confxml.xml
需要修改如下几个地方:
<!--配置源服务器上的需要拷贝的目录-->
<localpath watch="/home/www"> #需要同步的目录 <!—-监听目的服务器及test模块--> <remote ip="10.0.3.11" name="test"/> #目标服务器ip+模块名称 <!—设置从服务器的IP--> <!--<remote ip="192.168.0.10" name="test"/>--> <!--<remote ip="192.168.0.11" name="test"/>--> </localpath> <rsync> <commonParams params="-artuz"/>       #rsync后接的参数 <auth start="true" users="root" passwordfile="/etc/rsync.passwd"/>
   <!--配置auth start为ture(开启),users为备份数据用户,passwordfile为密码文件--> <!—-设置同步的用户名和密码文件--> <userDefinedPort start="false" port="874"/><!-- port=874 --> <timeout start="false" time="100"/><!-- timeout=100 -->
  <!--配置timeout start为ture(超时断开是否启动)time为超时断开时间按需求配置--> <ssh start="false"/> </rsync>
注:如果目的服务器的rsync有配置账号密码时,这里需要配置/etc/rsync.pass

sersync监控开机自启

vim /etc/rc.d/rc.local #编辑,在最后添加一行
/usr/local/sersync/sersync2 -d -r -o /usr/local/sersync/confxml.xml #设置开机自动运行脚本
:wq! #保存退出

脚本守护sersync

vim /check_sersync.sh

#!/bin/bash sersync
="/usr/local/sersync/sersync2" confxml="/usr/local/sersync/confxml.xml" status=$(ps aux |grep 'sersync2'|grep -v 'grep'|wc -l)
if [ $status -eq 0 ]; #判断进程是否等于0 then $sersync -d -r -o $confxml & else exit 0; fi
:wq!
#保存退出 chmod +x check_sersync.sh crontab -e #进入计时器 */5 * * * * root /root/check_sersync.sh > /dev/null 2>&1 #每隔5分钟执行一次脚本 :wq! service crond reload #重新加载服务

 

成功了.....😄

 

最后提醒一点:

①关闭selinux ②开启防火墙tcp 873端口

 

 

参考博文:https://www.cnblogs.com/ping-y/p/5825655.html

posted @ 2018-09-10 17:49  MegaloBox  阅读(200)  评论(0编辑  收藏  举报