首先 sersync 是 文件发生变化就会触发一个事件,然后就会执行同步
sersync 是增量无差异的同步
为什么要实时同步: 保证数据的连续性,减少人力维护成本,解决NFS的单点故障
我们测试一下:服务器
NFS服务器: 10.0.0.31 (监控 nfs /data 目录, 然后 跟backup 服务器同步)
BACKUP服务器: 10.0.0.41
WEB01: 10.0.0.7
WEB02: 10.0.0.8
安装:
1.安装inotify
yum -y install inotify-tools
2.下载sersync服务
cd /server
wget https://raw.githubusercontent.com/wsgzao/sersync/master/sersync2.5.4_64bit_binary_stable_final.tar.gz
如果上述很慢,可以考虑:
sersync2.5.4_64bit_binary_stable_final.tar.gz:
https://url69.ctfile.com/f/253469-848663146-dc88cd?p=2206 (访问密码: 2206)
tar xf 解压
ll GNU-Linux-x86/ (修改 confxml.xml文件)
4.修改配置文件: (服务端 backup)
confxml.xml
....
<inotify>
<delete start="true"/>
<createFolder start="true"/>
<createFile start="true"/>
<closeWrite start="true"/>
<moveFrom start="true"/>
<moveTo start="true"/>
<attrib start="false"/>
<modify start="false"/>
.....
<sersync>
<localpath watch="/data">
<remote ip="172.16.1.41" name="nfs"/>
<!--<remote ip="192.168.8.39" name="tongbu"/>-->
<!--<remote ip="192.168.8.40" name="tongbu"/>-->
</localpath>
<rsync>
<commonParams params="-avz"/>
<auth start="true" users="rsync_backup" passwordfile="/etc/rsync.pas"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
只修改 监控目录以及远程推送的服务器地址
5.配置密码文件: 31使用sersync执行推送时候需要使用密码文件
echo rsync_backup:123456 > /etc/rsync.pas
chmod 600 /etc/rsync.pas
6运行sersync服务
./sersync2 -h
(指定配置文件运行)这行命令注意空格
/server/GNU-Linux-x86/sersync2 -dro /server/GNU-Linux-x86/confxml.xml
这样就可以实现实时同步了, 我们在 NFS服务器上的data 目录下 创建一个一个test文件,我们会在 backup 服务器下的/data 目录 找到这个同步过来的test 文件。
其他:
rsync -avz /etc/passwd rsync_backup@172.16.1.41::backup (在31nfs 上 推到 41 backup上检查服务是否有问题
)
服务没问题
把 nfs 网卡 断开
ifdown eth1
然后把 backup上的 nfs 挂载到 web01, web02上。做测试。
我们可以写一个脚本来监控 172.16.1.31 NFS 服务的网络状况:
ping -c1 -W1 172.16.1.31 &>/dev/null
if [ $? -ne 0 ]
then
umount -f /mnt & &>/dev/null
umount -f /mnt &>/dev/null
mount -t nfs 172.16.1.41:/data /mnt
fi