
Wir haben einen Cluster von Maschinen (etwa 50 und es werden mehr). Jede Maschine hat einen Suchindex, der mehrmals täglich aktualisiert werden muss. Derzeit aktualisieren wir den Index auf jeder Maschine einzeln, aber idealerweise könnten wir ihn auf einer Maschine aktualisieren und dann die neuen Dateien mit dem Rest des Clusters synchronisieren. Anfangs haben wir dafür rsync verwendet, aber als die Anzahl der Maschinen zunahm, wurde klar, dass diese Lösung nicht skalierbar ist. Ich habe gerade angefangen, mich mit Multicast-Dateiübertragungen zu befassen. Hat jemand hier Erfahrung und kann mir ein paar Stellen empfehlen, an denen man nachsehen kann?
Antwort1
Das war einmal eine Frage bei meinem Vorstellungsgespräch ...
Multicast-Optionen:
BitTorrent.
Andere Protokolle, die Pub/Sub-Messaging verwenden.
Ein anderer Ansatz ... Verwenden Sie einen Verteilungsbaum:
Senden Sie an N Hosts, die wiederum an N Hosts senden, und arbeiten Sie sich auf diese Weise den Baum hinunter. Das würde natürlich einige Entwicklungsarbeit Ihrerseits erfordern, ist aber möglicherweise der skalierbarere Ansatz.
Dies hängt größtenteils davon ab, wie viele Systeme Sie tatsächlich versorgen müssen, von der Indexgröße und von Ihrer Netzwerkinfrastruktur.
Antwort2
Möglicherweise sind Sie mit einem gemeinsam genutzten Dateisystem besser bedient, insbesondere wenn der Suchindex von der App, die den Suchindex verwendet (also am Zielende), nur gelesen werden kann. Auf diese Weise wird ein Großteil der Komplexität für Sie übernommen.
Antwort3
Versuchen Sie es mit BitTorrent. Es ist dafür ausgelegt, Dateien schnell über mehrere Hosts zu verteilen. Multicast wird Ihren Netzwerktechniker vor Schmerzen schreien lassen :)
Antwort4
Ich würde empfehlen, sich Git anzusehen. Ich habe das in der Vergangenheit verwendet, um Änderungen auf einem Server vorzunehmen und sie zu übertragen oder Cron-Jobs auf den anderen Servern auszuführen, um sie herunterzuladen. Die Lösung bietet ziemlich viel Flexibilität.