У нас есть группа машин (около 50 и продолжает расти). На каждой машине есть поисковый индекс, который необходимо обновлять несколько раз в день. В настоящее время мы обновляем индекс на каждой машине индивидуально, но в идеале мы могли бы обновить его на одной машине, а затем синхронизировать новые файлы с остальной частью кластера. Сначала мы использовали rsync, чтобы справиться с этим, но по мере роста количества машин стало очевидно, что это решение не может масштабироваться. Я только начал исследовать многоадресную передачу файлов. Кто-нибудь, имеющий здесь некоторый опыт, может предложить какие-нибудь места для поиска?
Однажды для меня это был вопрос интервью ...
Варианты многоадресной рассылки:
BitTorrent
Другие протоколы, использующие обмен сообщениями pub / sub.
Другой подход ... Используйте дерево распределения:
Отправить на N хостов, которые по очереди отправят на N хостов; и проделайте это по дереву. Это, конечно, потребует некоторых разработок с вашей стороны, но, возможно, это более масштабируемый подход.
Большая часть этого зависит от того, сколько систем вам действительно нужно обслуживать, размера индекса и вашей сетевой инфраструктуры.
Возможно, вам будет удобнее использовать общую файловую систему, особенно если поисковый индекс доступен только для чтения приложением, использующим поисковый индекс (т. Е. На конечном конце). Таким образом, большая часть сложности сделана за вас.
Попробуйте BitTorrent. Он предназначен для быстрого распространения файлов на несколько хостов. Multicast заставит вашего сетевого инженера кричать от боли :)
UFTP будет работать для того, что вы пытаетесь сделать. Помимо многоадресной рассылки, у него есть опция синхронизации, поэтому клиенты будут получать файл только в том случае, если есть более новая его версия.
Раскрытие информации: автор УФТП
Я бы рекомендовал посмотреть git. Я использовал это в прошлом, чтобы вносить изменения на одном сервере и выталкивать их или запускать задания cron на других серверах, чтобы их отключить. Решение обладает некоторой гибкостью.