SphinxSearch - 使用共享数据的不同节点

时间:2018-01-14 14:05:22

标签: amazon-ec2 sphinx aws-elasticfilesystem

我们正在使用Amazon EC2实例构建SphinxSearch群集。我们使用相同的共享文件系统(弹性文件系统)进行了几个实例的样本测试。我们的想法是,在一个集群中,我们可能有超过10个节点,但我们可以使用单个实例来索引文档并将其保存在弹性文件系统中,并且可以由多个节点共享以进行读取。

我们的测试运行良好,但技术上这种方法有什么问题吗? (如锁定问题等)

有人可以在此建议吗

先谢谢

1 个答案:

答案 0 :(得分:3)

如果您拥有N份索引,可以按照以下步骤操作:

  • 在临时文件夹中的一个位置构建索引
  • 重命名文件,使其包含.new。
  • 使用rsync或任何您喜欢的方式将索引分发到所有其他位置。有些人甚至使用UFTP
  • 进行广播
  • 通过执行RELOAD INDEX(http://docs.manticoresearch.com/latest/html/sphinxql_reference/reload_index_syntax.html)将HUP发送到searchd或更好地在所有位置旋转索引,通常只需几毫秒,所以我们可以说你的新索引替换了前一个索引同时在所有节点上
  • 之前(也许还在Sphinx中)旋转索引(通过--rotate或RELOAD)存在问题,以防它处理长查询(旋转只需要等待)。它最近在Manticoresearch中得到了修复。

这是人们在生产中使用多年的尝试解决方案,但是如果你真的想在多个搜索实例之间共享相同的文件,你可以软链接除.spl之外的所有文件,但是然后旋转索引。使用链接(而不是实际文件)搜索实例,您需要重新启动一般看起来不太好的搜索实例,但在某些特殊情况下,这仍然是一个很好的解决方案。