简单的Solr部署,带有两台服务器以实现冗余

kin*_*ego 7 solr search-engine

我正在两个冗余的Tomcat 6服务器中部署Apache Solr Web应用程序,以提供冗余和提高可用性.此时,可伸缩性不是问题.

我有一个负载均衡器,可以动态地将流量路由到一个服务器或另一个或两个.

我知道Solr支持主/从配置,但如果从站在主站中断期间收到更新(在我的用例中它将会发生),则需要手动恢复.

我正在考虑使用重新加载核心的简单方法: - 两个服务器中只有一个在任何时候接收流量("活动"实例),但两者都在运行, - 两个实例共享相同的索引数据和 - 在由于中断而重新路由流量之前,告诉现在活动的实例重新加载索引核心

对索引读取和写入的故障转移进行有限测试已成功.我错过了什么含义/问题?

欢迎你的想法和意见.

abd*_*lar 2

您考虑的简单冗余方法似乎是合理的,但您将无法将其用于灾难恢复,除非您可以使用 NAS/SAN 与不同的物理位置共享数据/索引。

以下是一些建议:-

  1. 为灾难恢复进行备份并测试这些备份的工作情况,因为可以想象索引可能已损坏,因为 SOLR/Lucene 内部没有发生校验和。索引可能会被擦除,或者某些记录可能会在您不知情的情况下被删除和合并,如果您需要执行调查,备份对于稍后恢复这些记录/文档很有用。

  2. 在将流量重新路由到第二个实例之前,我将运行一些查询来加载缓存,并在当前索引上线之前测试和确认当前索引是否有效。

  3. 将更新隔离到一个位置、进程和线程,以确保切换时的事务完整性,因为 SOLR 不像某些数据库那样使用矢量时钟来同步更新,因此可能很难管理一致性。我个人会在其他商店中与 SOLR 分开按顺序保留所有更新的副本,以防需要重复一个小时间窗口。

总的来说,只要您不使用尖端功能和插件,我对 SOLR 的体验就非常好。我有一个实例,目前有 4000 万个文档,正常运行时间超过一年,没有出现任何问题。这并不意味着您不会遇到问题,而是让您了解它的稳定性。