SphinxSearch - 使用共享数据的不同节点
SphinxSearch - Different Nodes using shared data
我们正在使用 Amazon EC2 实例构建 SphinxSearch 集群。我们使用相同的共享文件系统(弹性文件系统)对多个实例进行了示例测试。我们的想法是,在一个集群中我们可能有超过10个节点,但是我们可以使用单个实例来索引文档并将其保存在Elastic File System中并且可以被多个节点共享以供读取。
我们的测试工作正常,但从技术上讲,这种方法有什么问题吗? (比如锁定问题等)
有人可以对此提出建议
提前致谢
如果您同意拥有 N 个索引副本,您可以执行以下操作:
- 在临时文件夹的一个地方建立索引
- 重命名文件,使其包含 .new。
- 使用 rsync 或任何你喜欢的方式将索引分发到所有其他地方。有些人甚至用 UFTP
进行广播
- 通过将 HUP 发送到 searchds 或通过执行 RELOAD INDEX (http://docs.manticoresearch.com/latest/html/sphinxql_reference/reload_index_syntax.html) 更好地一次在所有位置旋转索引,通常只需要几毫秒,因此我们可以说您的新索引替换了前一个同时在所有节点上
- 以前(可能仍在 Sphinx 中)在处理长查询时旋转索引(通过 --rotate 或 RELOAD)存在问题(旋转只需要等待)。它最近在 Manticoresearch 中得到修复。
这是人们多年来在生产中使用的久经考验的解决方案,但如果您真的想在多个 searchd 实例之间共享相同的文件,您可以软链接除 .spl 之外的所有文件,然后旋转索引在使用链接(不是实际文件)的 searchd 实例中,您需要重新启动 searchd 实例,这通常看起来不太好,但在某些特殊情况下可能仍然是一个很好的解决方案。
我们正在使用 Amazon EC2 实例构建 SphinxSearch 集群。我们使用相同的共享文件系统(弹性文件系统)对多个实例进行了示例测试。我们的想法是,在一个集群中我们可能有超过10个节点,但是我们可以使用单个实例来索引文档并将其保存在Elastic File System中并且可以被多个节点共享以供读取。
我们的测试工作正常,但从技术上讲,这种方法有什么问题吗? (比如锁定问题等)
有人可以对此提出建议
提前致谢
如果您同意拥有 N 个索引副本,您可以执行以下操作:
- 在临时文件夹的一个地方建立索引
- 重命名文件,使其包含 .new。
- 使用 rsync 或任何你喜欢的方式将索引分发到所有其他地方。有些人甚至用 UFTP 进行广播
- 通过将 HUP 发送到 searchds 或通过执行 RELOAD INDEX (http://docs.manticoresearch.com/latest/html/sphinxql_reference/reload_index_syntax.html) 更好地一次在所有位置旋转索引,通常只需要几毫秒,因此我们可以说您的新索引替换了前一个同时在所有节点上
- 以前(可能仍在 Sphinx 中)在处理长查询时旋转索引(通过 --rotate 或 RELOAD)存在问题(旋转只需要等待)。它最近在 Manticoresearch 中得到修复。
这是人们多年来在生产中使用的久经考验的解决方案,但如果您真的想在多个 searchd 实例之间共享相同的文件,您可以软链接除 .spl 之外的所有文件,然后旋转索引在使用链接(不是实际文件)的 searchd 实例中,您需要重新启动 searchd 实例,这通常看起来不太好,但在某些特殊情况下可能仍然是一个很好的解决方案。