Solr 3x“中继器”和多个数据中心:
Solr 3x让节点表现为两者从属和主节点,从一个主节点拉出,然后将副本向下游馈送到它自己的从节点。这是如此常见/有用它甚至有一个名字,“Repeater”。
如果您需要跨多个数据中心,这非常有用。您可以拥有数据中心A(DCA)中的真实主设备和数据中心B(DCB)中的“中继器”。然后,该转发器将从DCA获取内容并为DCB中的所有其他节点提供信号,节省带宽。
假设您要将此设置升级到Solr 4x和SolrCloud。 (请注意,Solr 4x仍支持Solr 3x样式的旧式复制)
据说你应该不有一个SolrCloud集群跨越不同的数据中心。所以数据中心B应该拥有它自己的SolrCloud。
一个想法是拥有DCA - > DCB链路仍然使用Solr 3x样式的主/从复制。然后,DCB中的“转发器”也是SolrCloud节点,将自动传播到其他节点。
主要问题:
Solr节点是否可以参与Solr 3x样式的主/从模式(作为从站)并且也可以作为SolrCloud集群的一部分?如果是这样,这是如何配置的?
并发症:
在简单的情况下,如果只有1个带有副本的分片,则很容易看出它在数据方面的作用。如果你在DCB中有多个分片,那就不太清楚了,我怎么告诉每个分片只复制它自己的数据共享?请注意,SolrCloud通常通过事务复制,而3x使用二进制索引。
另一个复杂因素是你正在进行复制。如何告诉每个分片的主节点从远程DCA节点拉出来?
备选方案:
解决方法是升级到4倍但在DCB中继续使用3x式复制,所以不要使用SolrCloud。
我意识到另一种解决方案是让数据源将其更新发送到两个数据中心,或者像RabbitMQ那样使用。为了这个问题,让我们假设这不是一个选项(长篇故事......)
也许还有其他一些我没有想过的方法?
有没有人真的尝试使用SolrCloud跨度数据中心?这太可怕了?
有人必须先问过这个问题!
但是我看过谷歌,虽然它找到了大量关键字的网页,但我还没有看到这种具体的“混合”模式充实。我发现one thread from 2013但它并没有真正谈论配置和复杂性。
答案 0 :(得分:2)
要回答您的第一个问题,3.X样式的Solr从站不能是Solr Cloud中的节点。原因是主机/从机中的从机3.X Solr配置只需复制,字节为字节,主机上的所有索引文件。就是这样。在转发器配置中,它也可以是其他人复制的主设备,或者是专用查询从设备或两者。但就是这样。
Solr Cloud配置中的节点是分布式计算集群的完全参与者,其中索引通常旨在分布在所有节点上,并且所有节点都参与查询。这是一个非常强大的功能,它可以自动处理故障节点并显着减轻扩展的工作量,这在3.X风格中是非常手动的。
然而,你为此付出的一部分是增加了复杂性(Zookeeper),对低延迟节点间通信的要求(因为所有节点现在彼此交谈并与Zookeeper交谈)以及Master /简单性的丧失奴隶复制。
在20M文档中,您完全在单节点主索引的约束下,具有实际上无限数量的从站,因此具有非常高的查询容量。我今天在生产环境中这样做,每个主人都有大约60M的文档,没有明显的问题。
问题是您是否需要NRT,多节点索引,自动故障转移,能够自动调整超过100M的文档?如果是这样,那么Master / Slave可能不适合你。
您可以查看将相同的数据写入两个不同的Solr Cloud群集,每个数据中心一个群集。您可以直接执行此操作,或使用类似Apache Flume的功能为您执行此操作 - 无论是执行此操作还是存在一些问题,因此真正的问题是处理那些值得获得Solr Cloud附加优势的问题吗? / p>