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

Amazon ec2 SphinxSearch-使用共享数据的不同节点,amazon-ec2,sphinx,amazon-efs,Amazon Ec2,Sphinx,Amazon Efs,我们正在使用AmazonEC2实例构建SphinxSearch集群。我们使用相同的共享文件系统(弹性文件系统)做了一个类似于几个实例的示例测试。我们的想法是,在一个集群中,我们可能有10多个节点,但我们可以使用单个实例对文档进行索引,并将其保存在弹性文件系统中,并且可以由多个节点共享以进行读取 我们的测试很好,但是技术上这个方法有问题吗?(如锁定问题等) 有人能建议一下吗 提前感谢如果您对索引的N个副本感到满意,您可以执行以下操作: 在临时文件夹中的一个位置建立索引 重命名文件,使其包含.ne

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

我们的测试很好,但是技术上这个方法有问题吗?(如锁定问题等)

有人能建议一下吗


提前感谢

如果您对索引的N个副本感到满意,您可以执行以下操作:

  • 在临时文件夹中的一个位置建立索引
  • 重命名文件,使其包含.new
  • 使用rsync或任何您喜欢的方法将索引分发到所有其他位置。有些人甚至用电视做广播
  • 通过向searchds发送HUP,或者通过执行RELOAD INDEX(),在所有位置一次旋转索引,通常只需要几毫秒,因此我们可以说,您的新索引在所有节点上同时替换了以前的索引
  • 以前(可能仍然在Sphinx中)在处理长查询时旋转索引(通过--rotate或RELOAD)会出现问题(旋转只需等待)。它最近在Manticoresearch中被修复

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

如果您对索引的N个副本感到满意,您可以按如下操作:

  • 在临时文件夹中的一个位置建立索引
  • 重命名文件,使其包含.new
  • 使用rsync或任何您喜欢的方法将索引分发到所有其他位置。有些人甚至用电视做广播
  • 通过向searchds发送HUP,或者通过执行RELOAD INDEX(),在所有位置一次旋转索引,通常只需要几毫秒,因此我们可以说,您的新索引在所有节点上同时替换了以前的索引
  • 以前(可能仍然在Sphinx中)在处理长查询时旋转索引(通过--rotate或RELOAD)会出现问题(旋转只需等待)。它最近在Manticoresearch中被修复

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

我知道的两个主要问题是锁文件(.spl)-每个searchd节点都需要自己的一个。访问同一文件夹的多个服务器会混淆。每个实例的索引“旋转”都希望能够在新的索引文件中旋转,因此索引的分隔滚动“旋转”比较容易。但你已经说过测试是有效的,所以persumable解决了问题…@barryhunter是否可以在不建立索引的情况下旋转索引?我使用一个主服务器对其他实例进行索引和rsync。我尝试对同一索引使用indexer merge命令
indexer--merge jobs jobs--config/var/sphinxcluster/config/sphinx_node.conf--rotate
这种方法有什么问题吗?我的目标是避免在我的所有实例中建立索引(大约15个实例)。Well merge只是从两个索引创建一个新索引。不知道这有什么帮助。似乎不相关。一个可能有效的技巧是在主索引节点中执行标准的基于“旋转”的重新索引。一个是“从”服务器,重启searchd可能就足够了(如果你有很多冗余节点,一次离线重新加载并不重要),我知道的两个主要问题是锁文件(.spl)-每个searchd节点都需要自己的一个。访问同一文件夹的多个服务器会混淆。每个实例的索引“旋转”都希望能够在新的索引文件中旋转,因此索引的分隔滚动“旋转”比较容易。但你已经说过测试是有效的,所以persumable解决了问题…@barryhunter是否可以在不建立索引的情况下旋转索引?我使用一个主服务器对其他实例进行索引和rsync。我尝试对同一索引使用indexer merge命令
indexer--merge jobs jobs--config/var/sphinxcluster/config/sphinx_node.conf--rotate
这种方法有什么问题吗?我的目标是避免在我的所有实例中建立索引(大约15个实例)。Well merge只是从两个索引创建一个新索引。不知道这有什么帮助。似乎不相关。一个可能有效的技巧是在主索引节点中执行标准的基于“旋转”的重新索引。作为“从属”服务器之一,重新启动searchd可能就足够了(如果您有许多冗余节点,一次离线重新加载并不重要),谢谢Sergey Nikolaev的建议
manticoresearch
是一个开源项目吗?感谢Sergey Nikolaev的建议
manticoresearch
是一个开源项目吗?