博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
inotify+unison实现数据双向实时同步
阅读量:4261 次
发布时间:2019-05-26

本文共 5619 字,大约阅读时间需要 18 分钟。

inotify+unison实现数据双向实时同步

2015-11-01 22:22  
本站整理  
浏览(10)
转载:
前几天做了一个新项目,网站架构是前端用的nginx反向代理了后端两台tomcat,这时候两台tomcat之间的数据实现实时同步,成了一个问题?
在网上搜寻了很多方案,在liux下做文件同步,有如下几种方式:
nfs实现web数据共享
rsync +inotify实现web数据同步
rsync+sersync更快更节约资源实现web数据同步
unison+inotify实现web数据双向同步
在这里详细介绍第四种方案,前几种都有些各自的不足。只有第四种方案支持双向实时同步
,且当其中一台服务器宕机,也不会影响web的访问。(ps:之前一直喜欢nfs,配置非常简单,但是其有个致命的缺点就是其中一台web服务挂掉之后,会直接导致web页面无法访问)。
Unison是一款跨平台的文件同步对象,不仅支撑本地对本地同步,也支撑经由过程SSH、RSH和Socket等收集和谈进行同步。
Unison支撑双向同步操纵,你既可以从A同步到B,也可以从B同步到A,这些都不须要额外的设定。
1、下载并且编译安装三个软件包
(inotify-tools-3.14.tar.gz、ocaml-3.10.2.tar.gz、unison-2.32.52.tar.gz)
[root@vmware1 tools]# wget ~]# mkdir -p /taokey/tools[root@vmware1 ~]# cd /taokey/tools/[root@vmware1 tools]# wget tools]# wget tools]# wget tools]# tar xf inotify-tools-3.14.tar.gz[root@vmware1 tools]# tar xf ocaml-3.10.2.tar.gz[root@vmware1 tools]# ll总用量 3772drwxrwxrwx  5 1000  1000    4096 3月  14 2010 inotify-tools-3.14-rw-r--r--  1 root root   358772 3月  14 2010 inotify-tools-3.14.tar.gzdrwxrwxr-x 26 root wheel    4096 2月  29 2008 ocaml-3.10.2-rw-r--r--  1 root root  2785669 2月  29 2008 ocaml-3.10.2.tar.gzdrwxr-xr-x  7  501 wheel    4096 6月  30 2009 unison-2.32.52-rw-r--r--  1 root root   697866 6月  30 2009 unison-2.32.52.tar.gz
2、编译安装
##编译安装inotify,需要安装gcc编译器,不然inotify编译报错。
[root@vmware1 tools]# cd inotify-tools-3.14[root@vmware1 inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify && make && make install
##修改PATH环境变量
[root@vmware1 inotify-tools-3.14]# cd /usr/local/inotify/[root@vmware1 inotify]# echo "PATH=/usr/local/inotify/bin:$PATH" >/etc/profile.d/inotify.sh[root@vmware1 inotify]# source /etc/profile.d/inotify.sh
##添加库文件到系统识别的路径
[root@vmware1 inotify]# echo "/usr/local/inotify/lib" >/etc/ld.so.conf.d/inotify.conf[root@vmware1 inotify]# ldconfig -v | grep inotify/usr/local/inotify/lib:        libinotifytools.so.0 -> libinotifytools.so.0.4.1
##链接库文件到系统识别的路径
[root@vmware1 inotify]# ln -sv /usr/local/inotify/include/ /usr/include/inotify"/usr/include/inotify" -> "/usr/local/inotify/include/"
##编译安装ocaml,unison依赖于ocaml
[root@vmware1 ~]# cd /taokey/tools/ocaml-3.10.2[root@vmware1 ocaml-3.10.2]# ./configure[root@vmware1 ocaml-3.10.2]# make world opt        [root@vmware1 ocaml-3.10.2]# make install
##编译安装unison,安装依赖性包
[root@vmware1 ocaml-3.10.2]# cd ../unison-2.32.52[root@vmware1 unison-2.32.52]# yum -y install ctags-etags[root@vmware1 unison-2.32.52]# make UISTYLE=text THREADS=true STATIC=true#UISTYLE=text THREADS=true STATIC=true 表示:使用命令方式,加入线程支持,以静态模式编译
##make install会提示错误,此错误就是要你cp unison /usr/local/bin,复制即可
[root@vmware1 unison-2.32.52]# make installmv /root/bin//unison /tmp/unison-10576mv: 无法获取"/root/bin//unison" 的文件状态(stat): 没有那个文件或目录make: [doinstall] 错误 1 (忽略)cp unison /root/bin/cp: 无法创建普通文件"/root/bin/": 是一个目录make: *** [doinstall] 错误 1[root@vmware1 unison-2.32.52]# cp unison /usr/local/bin
在vmware2服务器192.168.1.12上,安装上述三个软件包。重复以上安装即可,步骤此处省略.
3、免密码密钥登陆配置
分别在服务器vmware1(192.168.1.11)和服务器vmware2(192.168.1.12)上生成ssh秘钥对。
[root@vmware1 ~]# ssh-keygen -t rsa[root@vmware2 ~]# ssh-keygen -t rsa
两台服务器之间实现免秘钥登陆。
192.168.1.11:
[root@vmware1 ~]# cd .ssh/[root@vmware1 .ssh]# touch authorized_keys[root@vmware1 .ssh]# cat id_rsa.pub >>authorized_keys[root@vmware1 .ssh]# scp authorized_keys 192.168.1.12:/root/.ssh
192.168.12:
[root@vmware2 ~]# cd .ssh/[root@vmware2 .ssh]# cat id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvVRA8c9QhTDBTOmbMWlRpQyPor2BOtTOCuPehvpEJdU4pSytLoSQBzQ1TOnbpeX7NSkhGDSTOFT96VdRMBPAF3mdDLg3j7mxPiMo3EDLSdo+kyPk1dVRnmfnplZms2mmFbZZnlRxd5FEgaY3vE/w1mJMMTrpgK+dZd7nOTmIx7QjIwGb5G31G+y7h7LGVpTR/amrJOw2POuzlOQnj2BNNkyGh2uIecBQ+zxNaTzZOoC2SLYPKnsIB5wSycbG5fN0sRMUzuV2R5fFYweb6IJ/2u0zJHhbLQDL9QtPGffb5wS9ZD23fb47HMwY1KPg9Dp7f6v/5vui5u8GPlO5k+aAKQ== root@vmware2
需要把vmware2服务器上的id_rsa.pub复制到vmware1服务器上的authorized_keys文件中。
[root@vmware1 .ssh]# cat authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvVRA8c9QhTDBTOmbMWlRpQyPor2BOtTOCuPehvpEJdU4pSytLoSQBzQ1TOnbpeX7NSkhGDSTOFT96VdRMBPAF3mdDLg3j7mxPiMo3EDLSdo+kyPk1dVRnmfnplZms2mmFbZZnlRxd5FEgaY3vE/w1mJMMTrpgK+dZd7nOTmIx7QjIwGb5G31G+y7h7LGVpTR/amrJOw2POuzlOQnj2BNNkyGh2uIecBQ+zxNaTzZOoC2SLYPKnsIB5wSycbG5fN0sRMUzuV2R5fFYweb6IJ/2u0zJHhbLQDL9QtPGffb5wS9ZD23fb47HMwY1KPg9Dp7f6v/5vui5u8GPlO5k+aAKQ== root@vmware2
完成之后,测试一下,是否可以免秘钥登陆。
[root@vmware1 ~]# ssh 192.168.1.12reverse mapping checking getaddrinfo for bogon [192.168.1.12] failed - POSSIBLE BREAK-IN ATTEMPT!Last login: Tue Sep  9 22:03:33 2014 from 192.168.1.104[root@vmware2 ~]#
最后,创建文件目录,编写脚本,实现数据实时同步。
[root@vmware1 ~]# mkdir -p /var/vm1[root@vmware2 ~]# mkdir -p /var/vm2
编unison同步的脚本进行测试
[root@vmware1 ~]# cat unison-A.sh #######################################################################/bin/bashipB="192.168.1.11"srcA="/var/vm1"dstB="/var/vm2"/usr/local/inotify/bin/inotifywait -mrq -e create,delete,modify,move $srcA | while read line; do/usr/local/bin/unison -batch $srcA ssh://$ipB/$dstBecho -n "$line " >> /var/log/inotify.logecho `date | cut -d " " -f1-4` >> /var/log/inotify.logdone[root@vmware1 ~]# chmod o+x unison-A.sh[root@vmware1 ~]# sh unison-A.sh &
vmware2服务器上:
[root@vmware2 ~]# cat unison-B.sh #/bin/bashipA="192.168.1.11"srcB="/var/vm2"dstA="/var/vm1"/usr/local/inotify/bin/inotifywait -mrq -e create,delete,modify,move $srcB | while read line; do/usr/local/bin/unison -batch $srcB ssh://$ipA/$dstAecho -n "$line " >> /var/log/inotify.logecho `date | cut -d " " -f1-4` >> /var/log/inotify.logdone[root@vmware2 ~]# sh unison-B.sh &[1] 10555[root@vmware1 ~]# cd /var/vm1/[root@vmware1 vm1]# lsa  b  c  test[root@vmware2 ~]# cd /var/vm2/[root@vmware2 vm2]# lsa  b  c  test[root@vmware2 vm2]# rm -rf test[root@vmware1 vm1]# lsa  b  c
试验到此结束。
你可能感兴趣的文章
Java基础入门(三)
查看>>
Java基础入门(四)
查看>>
Java基础入门(十)
查看>>
Java基础入门(完结篇)
查看>>
Java进阶之面向对象(一)——继承
查看>>
Java进阶之自定义ArrayList&斗地主发牌案例
查看>>
JavaWeb之filter&listener&文件上传
查看>>
JavaWeb之Ajax&json
查看>>
BUFG,IBUFG,BUFGP,IBUFGDS等含义以及使用
查看>>
转载:在 Windows 10 下遇到移动硬盘不自动分配盘符的问题
查看>>
DDR2 SSTL_18标准
查看>>
DDR3的DQS_p/n信号电平摆幅变化不一致现象
查看>>
北大旁听生中的历史名人
查看>>
大唐凌烟阁开国廿四将
查看>>
Access数据库出现"Selected collating sequence not supported by the operating system."错误
查看>>
逻辑思维测试题
查看>>
如何用Easy CHM制作CHM格式电子书(帮助文档)
查看>>
为什么学习python
查看>>
华为进不了美国,并不是贸易保护这么简单
查看>>
markdown文件的基本常用编写语法(图文并茂)
查看>>