我已经inheritance了最近转移到AWS的传统rails应用程序。 基础设施的一部分是每晚晚上build立用户电子邮件的10个后端应用服务器上的每一个存在的鼬索引。 我们有一个庞大的数据库,所以每个后端服务器每天重build索引大约需要四个小时。 在十个应用程序服务器中,如果将其中大部分应用程序服务器分离出来,那么这些服务器会花费大量的额外时间。 (全部被告知,每套服务器的指标大约是8GB)。
所有重build的雪貂指数都从主数据库读取相同的数据。 我想知道的是 – 我可以有一个应用程序服务器做每日重build,然后rsync最后重build索引到其他应用程序服务器? 我不太了解鼬(或铁轨),知道这里可能存在什么样的依赖关系。 我认为一个索引是一个索引,所以把完全相同的数据复制到所有的服务器应该是“无争议的”。 我在杂草上还是在正确的轨道上?
我不明白为什么不。
我的意思是,你试过了吗?
Ferret只是Lucene的一个ruby端口,只要服务器只需要只读访问权限,你就可以使用Lucene索引来做一些整洁的事情,比如rsync和NFS共享它。
但是,您将不得不停止索引以运行复制过程,以便获得索引中数据的一致快照。
虽然这听起来像是一个批处理作业,运行了一段时间,并停止,ICBW。
我最好的build议是尝试一下。 从池中取出几台服务器,并尝试对它们之间的索引进行rsyncing,然后对其进行testing。 你应该能够定义一些testing用例来validation你的假设,对吗?
来源: 1 2 3 4