rsync+sersync实现多台服务器实时同步
一.简介
1.1.rsync简介
rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
它的特性如下:
可以镜像保存整个目录树和文件系统。
可以很容易做到保持原来文件的权限、时间、软硬链接等等。
无须特殊权限即可安装。
快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
支持匿名传输,以方便进行网站镜象。
1.2.sersync简介
在分布式应用中会遇到一个问题,就是多个服务器间的文件如何能始终保持一致。一种经典的办法是将需要保持一致的文件存储在NFS上,这种方法虽然简单方便但却将本来多点的应用在文件存储上又变成了单点,这违背了分布式应用部署的初衷。为了保留多点特性,文件仍然保存在各服务器上,那就需要在每个服务器中保持文件的同步。
服务器同步的解决方案有很多。比较流行的有inotify-tools+rsync和Openduckbill(依赖于inotify-tools)。现在介绍一个解决方案sersync,相对上面两个项目有以下优点:
(1)sersync是使用c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤,所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。
(2)sersync配置起来很简单,其中bin目录下已经有基本上静态编译的2进制文件,配合bin目录下的xml配置文件直接使用即可。
(3)使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。
(4)有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则按设定时长对同步失败的文件重新同步。
(5)自带crontab功能,只需在xml配置文件中开启,即可按要求隔一段时间整体同步一次。无需再额外配置crontab功能。
(6)能够实现socket与http插件扩展。
二.同步原理图
2.1.同步原理图
2.2.同步机制概述
三台机器都安装rsync软件,0.1机器和0.3机器安装一个sersync服务,0.2安装两个sersync服务。
同步原理:0.1和0.2机器互相同步,0.2和0.3机器互相同步。
(1)假设0.1机器有新文件产生或者旧文件有新变动,sersync会检测到目录变化,通过rsync同步到0.2机器上,这时候0.2上的sersync2会检测到目录发生变化,通过rsync同步文件到0.3机器。
(2)假设0.2机器有新文件产生或者旧文件有新变动,sersync检测到目录变化,通过rsync同步到0.1机器上,sersync2检测到目录变化,通过rsync同步到0.3机器上。
(3)假设0.3机器有新文件产生或者旧文件有新变动,sersync会检测到目录变化,通过rsync同步到0.2机器上,这时候0.2上的sersync检测到目录发生变化,通过rsync同步文件到0.1机器上。
三.rsync安装与sersync配置同步
3.1.rsync安装
3.1.1.安装rsync
192.168.0.1、0.2、0.3节点都按照下面步骤安装rsync
Centos6.5系统默认安装rsync,如下图所示:
如果没有安装的话,请加最下方博主微信获取安装包使用下面命令安装:
#rpm –ivh rsync-3.0.6-12.el6.x86_64.rpm
为了方便管理rsync的启停呢,安装xinetd软件,请加最下方博主微信获取安装包使用下面命令安装:
#rpm –ivh xinetd-2.3.14-40.el6.x86_64.rpm
安装完xinetd后要修改以下配置文件:
#vim /etc/xinetd.d/rsync
默认disable = yes,这里需要把yes改成no,
--config是rsync的配置文件,默认没有下面会配置,路径不能写错,修改完后保存退出。
然后是配置rsync的主配置文件及密码文件:
#vim /etc/rsyncd.conf
port = 873
uid = root
gid = root
read only = no
use chroot = yes
transfer logging = true
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
max connections = 30
[rsync]
path = /rsync/data
comment = work rsync
auth users = root
secrets file = /etc/rsyncd.pas
下面是配置密码文件
#vim /etc/rsyncd.pas
root:123456
#chmod 600 /etc/rsyncd.pas
#vim /etc/rsyncd.pas1
123456
#chmod 600 /etc/rsyncd.pas
将rsync添加为系统服务并开机自启动:
#chkconfig –add rsync
#chkconfig rsync on
#service xinetd start
#netstat –anpt | grep 873
3.2.sersync配置同步
3.2.1.节点1配置
192.168.0.1服务器sersync配置
请加最下方博主微信获取安装包
上传软件包sersync_64bit_binary_stable_final.tar.gz到服务器rsync目录下:
#tar –zxvf sersync_64bit_binary_stable_final.tar.gz
#cd GNU-Linux-x86/
#vim confxml.xml
启动sersync
#/rsync/GNU-Linux-x86/sersync2 -d -r -o /rsync/GNU-Linux-x86/confxml.xml
设置开机自启动:
#echo “/rsync/GNU-Linux-x86/sersync2 -d -r -o /rsync/GNU-Linux-x86/confxml.xml” >> /etc/rc.local
3.2.2.节点2配置
192.168.0.2服务器sersync配置如下
上传软件包sersync_64bit_binary_stable_final.tar.gz到服务器rsync目录下:
#tar –zxvf sersync_64bit_binary_stable_final.tar.gz
#cd GNU-Linux-x86/
#vim confxml.xml
#vim confxml2.xml
启动sersync
#/rsync/GNU-Linux-x86/sersync2 -d -r -o /rsync/GNU-Linux-x86/confxml.xml
#/rsync/GNU-Linux-x86/sersync2 -d -r -o /rsync/GNU-Linux-x86/confxml2.xml
设置开机自启动:
#echo “/rsync/GNU-Linux-x86/sersync2 -d -r -o /rsync/GNU-Linux-x86/confxml.xml” >> /etc/rc.local
#echo “/rsync/GNU-Linux-x86/sersync2 -d -r -o /rsync/GNU-Linux-x86/confxml2.xml” >> /etc/rc.local
3.2.3.节点3配置
192.168.0.3服务器sersync配置如下
上传软件包sersync_64bit_binary_stable_final.tar.gz到服务器rsync目录下:
#tar –zxvf sersync_64bit_binary_stable_final.tar.gz
#cd GNU-Linux-x86/
#vim confxml.xml
启动sersync
#/rsync/GNU-Linux-x86/sersync2 -d -r -o /rsync/GNU-Linux-x86/confxml.xml
设置开机自启动:
#echo “/rsync/GNU-Linux-x86/sersync2 -d -r -o /rsync/GNU-Linux-x86/confxml.xml” >> /etc/rc.local
到此为止,三台服务器相互同步已经配置完成,具体效果请看视频演示
加博主微信获取视频演示
如果对此有兴趣,请扫下面二维码免费获取更多详情