免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4000 | 回复: 1
打印 上一主题 下一主题

实践csync2+inotify实现文件实时同步 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-05 09:08 |只看该作者 |倒序浏览
一、关键技术\r\n利用csync2+sqlite实现数据的高效实时的增量备份,相关目录及文件信息都存储在sqlite数据库中,\r\n大大提升了同步的速率和效率;利用inotify触发式(实时)执行csync同步命令更新文件。\r\n二、方案适用\r\n图片服务器集群方案: ReiserFS4+csync2+inotify\r\n网站服务程序分布式方案:csync2+inotify+NFS\r\n[注](如,网站程序中存在缓存目录则排除此目录同步,将缓存目录挂载在NFS上)\r\n分布式集群软件配置更新同步方案: csync2+inotify\r\n[注](如,集群中heartbeat相关的配置文件,如apache,nginx的配置文件,并能执行相关脚本)\r\n\r\n三、实际配置过程\r\n系统:centos5.1\r\n结构: 三台服务器
引用
# vi /etc/hosts\r\n
192.168.4.188\r\ncsync1
192.168.4.190\r\ncsync2
192.168.4.191\r\ncsync3
\r\n\r\n1、创建下载文件列表
引用
\r\n2、创建安装脚本并执行
引用
vi install.sh //以下内容:\r\nwget –i list\r\ncd /usr/local/src/\r\ntar zxvf libgpg-error-1.7.tar.gz\r\ncd libgpg-error-1.7\r\n./configure && make && make install\r\ncd ..\r\ntar zxvf libgcrypt-1.4.4.tar.gz\r\ncd libgcrypt-1.4.4\r\n./configure --with-gpg-error-prefix=/usr/local && make && make install\r\ncd ..\r\ntar zxvf libtasn1-2.1.tar.gz\r\ncd libtasn1-2.1\r\n./configure && make && make install\r\ncd ..\r\ntar zxvf sqlite-2.8.17.tar.gz\r\ncd sqlite-2.8.17\r\n./configure && make && make install\r\ncd ..\r\ntar zxvf librsync-0.9.7.tar.gz\r\ncd librsync-0.9.7\r\n./configure && make && make install\r\ncd ..\r\ntar jxvf gnutls-2.6.6.tar.bz2\r\ncd gnutls-2.6.6\r\n./configure --with-libgcrypt-prefix=/usr/local/ && make && make install\r\ncd ..\r\necho \"/usr/local/lib\" >> /etc/ld.so.conf\r\n
ldconfig\r\ntar zxvf csync2-1.34.tar.gz\r\ncd csync2-1.34\r\n./configure && make && make install && make cert\r\ncd ..\r\ntar zxvf inotify-tools-3.13.tar.gz\r\ncd inotify-tools-3.13\r\n./configure && make && make install\r\ncd ..\r\necho \"csync2 30865/tcp\" >> /etc/services\r\necho \"service csync2\r\n{\r\ndisable = no\r\nprotocol = tcp\r\nflags = REUSE\r\nsocket_type = stream\r\nwait = no\r\nuser = root\r\ngroup = root\r\nserver = /usr/local/sbin/csync2\r\nserver_args = -i\r\n#only_from = 192.168.10.50 192.168.10.51\r\n}\" > /etc/xinetd.d/csync2\r\nchkconfig xinetd on
\r\n3、赋予脚本可执行权限并执行:
引用(注:需要在每个节点执行脚本
chmod 755 install.sh\r\n./install.sh
4、编辑hosts文件如下内容:
引用
vi /etc/hosts\r\n192.168.4.188\r\ncsync1
192.168.4.190\r\ncsync2
192.168.4.191\r\ncsync3
(三台主机都要修改)\r\n\r\n
\r\n5、生成密钥并分发到每个节点:
引用
csync2 -k /etc/test.key\r\nscp /etc/test.key root@node2:/etc/
\r\n6、创建备份目录:
引用
mkdir /var/csync_backup
\r\n注:用于防止修改错误恢复,如果启用了,分别在其他节点建立相应的目录。\r\n\r\n7、修改csync2配置文件(所有节点相同):
引用
vi /etc/csync2.cfg //以下内容:\r\ngroup testgroup\r\n{\r\nhost csync1 csync2 csync3; //定义组成员\r\nkey /etc/test.key; //制定密钥\r\ninclude /var/www/html; //需要同步的目录\r\nexclude /var/www/html/temp; //需要排除的目录。\r\nexclude /var/www/html/templates_; //需要排除同步的缓存目录。\r\nexclude *~ .*; //排除同步.开头的文件\r\nbackup-directory /var/csync_backup; //防错备份目录,根据自己的需求设置。\r\nbackup-generations 3;\r\nauto younger; //同步以最新的文件为标准更新.\r\n}
\r\n启动服务:
引用
/etc/init.d/xinetd start
或者:
service xinetd start
\r\n注:csync2相关测试命令
引用
csync2 –vvv –T  测试csync配置是否正确,可以看到相关SQL执行过程\r\ncsync2 –xv         执行同步命令\r\ncsync2 –xvvv     执行同步命令,并显示出详细的信息
8.做个软链接
32位系统:
ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib/libinotifytools.so.0
64位系统:
ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0
9、配置inotify触发同步脚本(所有节点相同):
引用
vi /usr/local/sbin/csync2_test.sh //以下内容:\r\n#!/bin/bash\r\nsrc=/var/www/html\r\n/usr/local/bin/inotifywait -mrq --timefmt \'%d/%m/%y %H:%M\' --format \'%T %w%f\' \\\r\n--exclude \"\\.swp$\" \\\r\n-e close_write,modify,delete,create,attrib,move \\\r\n${src} \\\r\n| while read file\r\ndo\r\ncsync2 -x >/dev/null 2>&1\r\ndone
\r\n后台执行脚本:
引用
chmod a+x /usr/local/sbin/csync2_test.sh\r\ncsync2_test.sh &
\r\n\r\n
\r\n10、测试文件同步:\r\n在任一节点上创建,修改,移动,或者删除文件或目录,在其他节点检查是否同步,如果没有同步,请使用csync2的相关测试命令测试同步是否正常。

论坛徽章:
0
2 [报告]
发表于 2009-10-05 12:54 |只看该作者
真的是好东西\r\n但不知LZ是否有 Windows 的解法\r\n以及 MySQL 如何同步?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP