金山逍遥网 sersync 服务器实时镜像同步方案
1、 sersync+rsync原理
2、inotify和sersync同步的区别
3、 配置sersync+rsync实现实时同步
2台centos7.4,一台装sersync一台装rsync服务
Sersync服务器(数据源):192.168.1.63
Rsync服务器(备份端):192.168.1.64
一、为什么要用rsync+sersync架构?
1、sersync是基于inotify开发的,类似于inotify-tools的工具
2、sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的文件或者目录
二、rsync+inotify-tools与rsync+sersync架构的区别?
1、rsync+inotify-tools
a、inotify只能记录下被监听的目录发生了变化(增,删,改)并没有把具体是哪个文件或者哪个目录发生了变化记录下来;
b、rsync在同步的时候,并不知道具体是哪个文件或目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此效率很低
2、rsync+sersync
a、sersync可以记录被监听目录中发生变化的(增,删,改)具体某个文件或目录的名字;
b、rsync在同步时,只同步发生变化的文件或目录(每次发生变化的数据相对整个同步目录数据来说很小,rsync在遍历查找对比文件时,速度很快),因此效率很高。
同步过程:
- 在同步服务器上开启sersync服务,sersync负责监控配置路径中的文件系统事件变化;
- 调用rsync命令把更新的文件同步到目标服务器;
- 需要在主服务器配置sersync,在同步目标服务器配置rsync server(注意:是rsync服务)
同步原理:
- 用户实时的往sersync服务器上写入更新文件数据;
- 此时需要在同步主服务器上配置sersync服务;
- 在另一台服务器开启rsync守护进程服务,以同步拉取来自sersync服务器上的数据;
通过rsync的守护进程服务后可以发现,实际上sersync就是监控本地的数据写入或更新事件;然后,在调用rsync客户端的命令,将写入或更新事件对应的文件通过rsync推送到目标服务器
Rsync服务安装
Rsync服务依赖Xinetd,是使用超级服务来管理的63 ~]# rpm -ivh /media/Packages/xinetd-2.3.14-39.el6_4.x86_64.rpm守护进程
63 ~]# rpm -ivh /media/Packages/rsync-3.0.6-9.el6_4.1.x86_64.rpm
#yum -y install xinetd rsync
rsync --daemon
63 ~]# netstat -antup | grep 873
tcp 0 0:::873 :::* LISTEN 2349/xinetd
非系统用户备份数据
使用系统配置文件/etc/rsyncd.conf来备份数据,创建备份账户,最后把rsync以deamon方式运行
rsyncd.conf配置文件
配置文件分为两部分:全局参数,模块参数
全局参数:对rsync服务器生效,如果模块参数和全局参数冲突,冲突的地方模块参数生效
模块参数:定义需要通过rsync输出的目录定义的参数
常见的模块参数:主要是定义服务器哪个要被同步输出,其格式必须为“ [ 共享模块名 ]” 形式,这个名字就是在 rsync 客户端看到的名字
用配置文件定义目录输出
63 ~]# vim /etc/rsyncd.conf //文件不存在,需要自己创建
#Rsync server
uid = root #运行进程的身份
gid = root #运行进程的组
use chroot = yes #是否锁定家目录
max connections = 100 #最大连接数
timeout = 600 #超时时间
log file = /var/log/rsyncd.log #日志文件
ignore errors #忽略错误
read only = false #设置服务端文件读写权限
list = false #不显示服务端资源列表
hosts allow = 192.168.1.0/24 #*代表所有
hosts deny = 0.0.0.0/32
auth users = backup
secrets file = /etc/rsync.password
[www]
comment = www
path = /var/www/html
启动rsync与xinetd服务
- systemctl start xinetd #启动xinetd服务
- systemctl enable xinetd #将xinetd服务加入开机项
- rsync --daemon --config=/etc/rsyncd.conf #加载配置文件rsyncd.conf启动rsync服务
- ps aux | grep rsync
配置rsync开机自启动
echo "rsync --daemon --config=/etc/rsyncd.conf" >> /etc/rc.d/rc.local
创建目录
#mkdir -p /var/www/html
创建密码文件:
#vim /etc/rsync.password
backup:xuegod
chmod 600 /etc/rsync.password
1.63数据源端测试rsync同步
新建一个文件保存好密码,然后在rsync命令中使用–password-file指定此文件即可
echo "xuegod">/etc/rsync.password
chmod 600 /etc/rsync.password
创建测试文件
63 ~]# mkdir -p /var/www/html
63 ~]# cp /etc/passwd /var/www/html/
rsync -avzP /var/www/html backup@192.168.1.64::www/ --password-file=/etc/rsync.password
测试这步一定要成功,不然进行不了下一步
1.63上开始部署sersync服务
1、下载sersync
在google code下载sersync的可执行文件版本,里面有配置文件与可执行文件
Wget https://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz(有时下载失败,所有要本地留存才行)
上传到服务器
tar xvf sersync2.5.4_64bit_binary_stable_final.tar.gz
mv GNU-Linux-x86 sersync
2、配置sersync
cp sersync/confxml.xml sersync/confxml.xml.$(date +%F)
更改优化sersync配置文件:
修改24–28行
<sersync>
<localpath watch="/var/www/html"> #本地同步目录
<remote ip="192.168.10.64" name="www"/> #rsync模块名称
修改31–34行,认证部分【rsync密码认证】
<rsync>
<commonParams params="-artuz"/>
<auth start="true" users="backup" passwordfile="/etc/rsync.password"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
开启sersync守护进程同步数据
/root/sersync/sersync2 -d -r -o /root/sersync/confxml.xml
Echo "PATH=$PATH:/root/sersync/">>/etc/profile
source /etc/profile
测试
创建新文件测试
总结:
1、sersync+rsync原理
2、 inotify和sersync同步的区别
3、配置sersync+rsync实现实时同步
多实例