保持Solr奴隶同步

时间:2017-12-12 11:29:41

标签: solr replication

我们有一个运行Solr 6.5.0的主从设置。有一个24/7运行的后端进程将其数据推送到主服务器。没有对master进行提交。 Web前端正在访问从属服务器。复制轮询间隔为1小时。

到目前为止一切都很好,但现在随着流量的增长,奴隶上的CPU负载非常高。我认为最好的办法是向主服务器添加第二个从服务器,让Web服务器通过现有的负载平衡器连接到两个Solr从机。我认为两个Solr从站将独立处理它们的复制,每个从站将在另一个时间轮询主站。

当主设备收到24/7新数据时,我担心这两台机器没有相同的数据集/版本。是否存在一个低管理工作量的解决方案,以强制两个从属设备同时轮询来自主设备的新数据? (即我试图避免建立一个真正的Solr集群,因为多个奴隶将满足我们的需求。)

2 个答案:

答案 0 :(得分:1)

此处的问题是,在您的轮询间隔期间,您的从属可能不同步。在你的情况下,你有1小时的间隔。

可以通过最小的努力完成的事情是,您可以通过调用命令同时强制复制奴隶:

http://slave_host:port/solr/core_name/replication?command=fetchindex

但是,我不确定你能多久调用一次这个命令,因为很可能你每分钟都不能这样做。

另一种可能性是每当对主索引执行提交时触发复制。您可以通过添加配置来执行此操作:

<str name="replicateAfter">commit</str>

有关它的更多信息,请查看here

答案 1 :(得分:-1)

传统的主从基本上是通过http进行rsync。所以,也许你可以在slave之间进行rsync(并在rsync之后重新加载内核)。