将雪貂索引复制到其他服务器?

ana*_*phe 4 ruby-on-rails

我继承了一个旧的 rails 应用程序,我最近将其批发转移到了 AWS。基础设施的一部分是一个雪貂索引,它存在于每晚构建订阅者电子邮件的十个后端应用程序服务器上。我们有一个大型数据库,所以每个后端服务器每天重建索引大约需要四个小时。在 10 个应用服务器中,这需要很多额外的时间来保持其中大部分在否则会停止运行时继续运行。(总而言之,每组索引每台服务器大约 8GB)。

所有重建的雪貂指数都从主数据库读取相同的数据。我想知道的是 - 我可以让一个应用程序服务器进行每日重建,然后将最终重建的索引 rsync 到其他应用程序服务器吗?我对雪貂(或就此而言的导轨)了解得不够多,无法知道这里可能存在什么样的依赖关系。我认为索引就是索引,因此将完全相同的数据复制到所有服务器应该是“无争议的”。我是在杂草中还是在正确的轨道上?

Tom*_*nor 7

我不明白为什么不。

我的意思是,你试过了吗?

Ferret 只是 Lucene 的一个 ruby​​ 端口,您可以使用 Lucene 索引做一些巧妙的事情,例如 rsync,并且 NFS 共享它,只要服务器只需要对其进行只读访问即可。

但是,您必须停止索引才能运行复制过程,以便获得索引中数据的一致快照。

虽然这听起来像是一个批处理作业,运行了一会儿就停止了,ICBW。

我对你最好的建议是尝试一下。从池中取出几台服务器,并尝试在它们之间同步索引,然后对其进行测试。您应该能够定义一些测试用例来验证您的假设,对吗?

资料来源:1 2 3 4

  • 你是一个罕见的类型,系统管理员不会或不能查看代码来弄清楚它是如何工作的。祝你好运,我猜。 (8认同)
  • 我想是的。如果我处于你的位置,我会陷入困境并进行一些调查。这就是我们在比赛中保持领先的方式。如果您不想这样做,我想您会发现自己被更年轻、更敏捷的系统管理员超越了。正如美国人所说,“站到盘子上”。 (8认同)
  • 除了 Snark,@TomO'Connor 就在现场。可以*只是*一个系统管理员,而无需在代码中弄脏双手的日子已经屈指可数了。如果我们(包括我自己)想要保持相关性,我们需要适应代码,如果没有实现。这些(雪貂,lucene,基本的红宝石)都不是很复杂。就像 ITHedgeHog 说的那样,只需启动另一个实例(或本地虚拟机虚拟机)并四处看看。你不会伤害任何东西。 (5认同)
  • 如果它在 AWS 上,为什么不启动第二个较小的实例来首先测试您的更改? (3认同)