Я унаследовал устаревшее приложение rails, которое недавно полностью переместил на AWS. Частью инфраструктуры является индекс хорька, который существует на каждом из десяти внутренних серверов приложений, которые каждую ночь создают электронную почту подписчика. У нас большая база данных, поэтому каждому внутреннему серверу требуется около четырех часов на восстановление индекса каждый день. Для десяти серверов приложений это очень много дополнительных часов, чтобы поддерживать большинство из них в активном состоянии, хотя в противном случае они были бы остановлены. (В целом каждый набор индексов составляет около 8 ГБ на сервер).
Все восстановленные индексы хорьков считывают одни и те же данные из основной базы данных. Что мне интересно - мог бы я один сервер приложений выполняет ежедневное восстановление, а затем синхронизирует окончательные восстановленные индексы с другими серверами приложений? Я недостаточно знаю о хорьках (или о рельсах, если на то пошло), чтобы знать, какие здесь могут быть зависимости. Я бы подумал, что индекс - это индекс, поэтому копирование одних и тех же данных на все серверы должно быть, так сказать, «бесспорным». Я в сорняках или на правильном пути?
Не понимаю, почему бы и нет.
Я имею в виду, ты пробовал?
Ferret - это просто рубиновый порт Lucene, и вы можете делать изящные вещи с индексом Lucene, например rsync, и NFS совместно используют его, если серверам нужен только доступ к нему только для чтения.
Однако вам придется прекратить индексирование, чтобы запустить процесс копирования, чтобы получить согласованный снимок данных в индексе.
Хотя звучит так, будто это пакетное задание, которое выполняется ненадолго и останавливается, ICBW.
Мое лучшее предложение вам - попробовать. Возьмите пару серверов из пула и поэкспериментируйте с синхронизацией индекса между ними, а затем проверьте это. Вы должны уметь определять несколько тестовых примеров для проверки вашей гипотезы, верно?