群集中的每个服务器都有一个搜索索引,每15分钟从一个服务器同步一次。这样做是因为因为flock而无法在nfs上附加到索引;请参阅documentation(否则索引将位于所有服务器都访问的共享文件夹中)。
我遇到的问题是,如果采取需要修改索引的操作,则修改发生在索引的本地副本上,我需要一种方法将这些更改同步回到父级中。尽可能少的干扰方式(以便通过下一次同步将更改传播到群集中的所有服务器)。
我尝试通过http引用父服务器索引但这不起作用,因为mkdir无法通过http完成。有没有办法引用远程服务器的索引?如果有一种完全不同的方法可供考虑
答案 0 :(得分:0)
据我了解这种情况,如果其中一个服务器的索引经过修改,您希望主索引作为rsynch的源在下一个rsync发生之前接收更新 - 用更新来更新所有服务器。
为什么rsync不将rsync作为rsync的源,而不是rsync-ing主服务器索引?因此,如果服务器D上的索引的最新更新大于主服务器A上的索引,则只需同步D源上的所有服务器
我是否正确了解您的情况?
修改
然后在这种情况下,编辑构建索引的代码并添加一行以检查索引的先前构建是否不同,如果是,则启动对shell脚本的exec调用或手动构建命令更新中央服务器。通过这种方式,中央服务器将动态接收更新,当大同步发生故障时,您的问题将得到解决。
答案 1 :(得分:0)
我能想到的最佳解决方案是遵循更传统的主/从复制模式。从RDBMS复制中获取一些灵感:所有写入都应该发送到主服务器。
当然,你不能直接这样做。正如您所提到的,您无法直接写入远程索引。
因此,这为您提供了一个选项:在主服务器上公开API /服务,从服务器可以使用它来间接更新索引。然后,所有更改将在您下次计划的推送时同步。我确实意识到这可能是对您的设计的重大改变,但在复制或分布式环境中,这通常是必要的。