Przez duże drzewo plików mam na myśli około 200 000 plików i cały czas rośnie. Jednak stosunkowo niewielka liczba plików jest zmieniana w każdej godzinie.
Przez dwukierunkowy rozumiem, że zmiany mogą wystąpić na jednym serwerze i muszą zostać przesunięte na drugi, więc rsync nie wydaje się odpowiedni.
Przez odległe rozumiem, że oba serwery są w centrach danych, ale geograficznie oddalone od siebie. Obecnie są tylko 2 serwery, ale z czasem mogą się one rozszerzać.
W czasie rzeczywistym jest ok, ponieważ istnieje niewielkie opóźnienie między synchronizacją, ale uruchamianie crona co 1-2 minuty nie wydaje się właściwe, ponieważ bardzo mała część plików może się zmieniać w dowolnej godzinie, a co dopiero w minutach.
EDYCJA : Działa na VPS, więc mogę być ograniczony rodzajami rzeczy na poziomie jądra, które mogę zrobić. Ponadto VPS nie są bogate w zasoby, więc unikałbym rozwiązań wymagających dużej ilości pamięci RAM (takich jak Gluster?).
Jakie jest najlepsze / najbardziej „akceptowane” podejście, aby to zrobić? Wydaje się, że byłaby to powszechna potrzeba, ale nie byłem jeszcze w stanie znaleźć ogólnie przyjętego podejścia, co było zaskakujące. (Szukam bezpieczeństwa mas.)
Natknąłem się na lsyncd, aby uruchomić synchronizację na poziomie zmiany systemu plików. To wydaje się sprytne, choć nie bardzo powszechne, i jestem trochę zdezorientowany różnymi podejściami lsyncd. Po prostu używa się lsyncd z rsync, ale wydaje się, że może to być niestabilne dla dwukierunkowości, ponieważ rsync nie ma pojęcia pamięci (np. Aby wiedzieć, czy usunięty plik na A powinien zostać usunięty na B, czy też jest to nowy plik na B które należy skopiować do A). LipSync wydaje się być tylko lsyncd + rsync realizacja, prawda?
Potem jest użycie lsyncd z csync2 , na przykład: https://icicimov.github.io/blog/devops/File-system-sync-with-Csync2-and-Lsyncd/ ... Skłaniam się ku temu podejściu, ale csync2 jest trochę dziwaczny, chociaż przeprowadziłem udany test. Obawiam się przede wszystkim, że nie udało mi się znaleźć wielu potwierdzeń społeczności dotyczących tej metody.
Ludzie tutaj wydają się bardzo lubić Unison, ale wygląda na to, że nie jest już aktywnie rozwijany i nie jest jasne, że ma automatyczny wyzwalacz, taki jak lsyncd.
Widziałem Glustera , ale może przesadziłem z tym, czego potrzebuję?
AKTUALIZACJA: fyi- skończyłem na oryginalnym rozwiązaniu, o którym wspomniałem: lsyncd + csync2. Wydaje się, że działa całkiem dobrze i podoba mi się podejście architektoniczne polegające na tym, że serwery są bardzo luźno połączone, dzięki czemu każdy serwer może działać w nieskończoność samodzielnie, niezależnie od jakości łącza między nimi.