13

我们的开发团队目前正在考虑将我们的搜索系统迁移到 Apache Solr,我们非常感谢一些有关设置的建议。我们正在索引大约两亿个数据库行。我们全天添加了大约十万行新行。这些新的数据库行必须在收到后两分钟内可搜索。

我们不希望索引使搜索器陷入困境,因此我们的想法是让两个 Solr 服务器在复制设置中运行在不同的机器上。第一个 Solr 实例将是索引器。它将使用 DataImportHandler 来索引 delta 并启用自动提交以防止过度提交率。索引优化将在预定期间进行。第二个 Solr 实例(从属)将是主要搜索器,并将其索引存储在 RAID 固态驱动器上。

我们关心的是故障转移。我们的搜索是关键任务。如果主搜索器由于某种原因出现故障,我们的搜索服务将自动将查询分流到索引器节点。不过,索引同样重要。如果索引器死机,我们需要进行热故障转移。是否有推荐的方法在 Solr 复制中自动执行主节点故障转移?我已经开始研究 ZooKeeper,但我不确定这是否是最好的方法。

4

1 回答 1

14

正如您所确定的,可以使用复制来处理搜索故障转移。

主故障转移有点棘手。一个想法类似于以下逻辑设置

+--------+       +--------+
|  Slave |  ...  |  Slave |
+--------+       +--------+
     |               |
     v (replicate)   v
+---------------------------+
|     Load balancer         |
+---------------------------+
         /         \
        v           v
+--------+       +--------+
| Master | --->  | Master |
+--------+       +--------+
  • 为了使主索引保持最新repeater,可以使用热备份主节点从主主节点复制的模式
  • 任何一个
    • 使用主 master 上的处理程序之类的东西Ping作为保持活动通知。如果无法访问,请编写一个小的编程组件来触发辅助主服务器的数据导入处理程序接管。
    • 在所有主服务器上保持数据导入处理程序处于活动状态,允许它们中的任何一个接管操作而无需额外配置。

请注意,您可能需要配置负载均衡器,以便从属设备只能在任何时间点从一个主设备复制。

顺便说一句,听听您索引如此庞大的数据集的一些经验会很有趣。

于 2011-06-16T10:41:22.787 回答