集群+共享存储,如何实时同步到备用服务器?

wtslh 发布于 2018/03/28 09:51
阅读 1K+
收藏 0

我的场景:两侧集群,简称A群和B群,每群里有4台web服务器,各服务器都挂载了一台网络存储至/opt/upload,其中有很多目录以及子目录,web服务器上的业务系统都会随时读写网络存储对其中的文件进行操作。B群是备用集群。为了保证两侧集群的文件是一样的,需要实时将A群的文件同步到B群的网络存储。

我现在的做法是在A群的4台web(web1,web2,web3,web4)服务器上都部署了sersync+rsync,在B群的某一台web服务器上部署rsync作为接收端。现在遇到的问题是假设web2在/opt/upload中创建了一个目录dir1,然后web1的业务系统向dir1中写入了一个文件file1,web1上的sersync并不会监听到相关事件,所以不会将file1同步到B群。

原因我分析是A群的4台web服务器上的sersync启动的时候是对当时的/opt/upload下的所有目录利用inotifywait添加了监听,而由于dir1是在web2上创建的,web2上sersync能监听到dir1的创建事件所以创建新的监听,而web2并不知道创建了dir1,所以不会监听该目录,从而对于其中的文件操作事件也不会监听,所以sersync不会执行同步。

我也考虑了使用inotify-tools+rsync,但发现只能这种方案是同步/opt/upload整个目录,而由于这个目录中有很多目录和子目录,并且存储量太大(接近2T),同步一次的时间太长,导致无法采用inotify-tools+rsync方案。

对于这种问题和使用场景,大家都是如何处理的,有什么更好的方案吗?

 

加载中
0
小木头的冬天
小木头的冬天

发个消息,让另外一个集群主动同步一次?

小木头的冬天
小木头的冬天
我的意思是 发个消息,然后异步去同步文件
wtslh
wtslh
这个恐怕不现实了,同样是因为同步一次耗时太长
0
小木头的冬天
小木头的冬天

或者持久化目录结构信息,然后每个集群根据持久化的信息去取文件就好了,不需要rsyc之类的东西了

0
-虎口脱险-
-虎口脱险-

为何不是应用与存储分开,应用做容灾,存储也做容灾?

-虎口脱险-
-虎口脱险-
你没理解我的意思,我的意思是应用与存储分开,引用做自己的容灾,存储做自己的容灾,何来的存储同步的问题
wtslh
wtslh
现在就是两地集群的,两地集群都有各自的存储
0
perfgao
perfgao

试试分布式文件系统呢?一般都会支持主从结构的

返回顶部
顶部