Tworzę aplikację, która musi rozpowszechniać standardowy serwer plików w kilku witrynach za pośrednictwem sieci WAN. Zasadniczo każda witryna musi napisać wiele różnych plików o różnych rozmiarach (niektóre w zakresie 100 MB, ale najbardziej małe), a aplikacja jest napisana w taki sposób, aby kolizje nie stanowiły problemu. Chciałbym skonfigurować system spełniający następujące kwalifikacje:
- Każda witryna może przechowywać pliki we wspólnej „przestrzeni nazw”. Oznacza to, że wszystkie pliki byłyby wyświetlane w tym samym systemie plików.
- Każda witryna nie wysyła danych przez sieć WAN, chyba że jest to konieczne. Tzn. Po każdej stronie sieci WAN byłaby pamięć lokalna, która byłaby „scalona” w ten sam logiczny system plików.
- Linux i bezpłatny ($$$) to plus
Zasadniczo coś w rodzaju centralnego udziału NFS spełniłoby większość wymagań, jednak nie pozwoliłoby, aby lokalnie zapisane dane pozostały lokalne. Wszystkie dane ze zdalnych stron sieci WAN byłyby cały czas kopiowane lokalnie.
Zajrzałem do Lustera i przeprowadziłem z nim kilka udanych testów, jednak wydaje się, że dystrybucja plików jest dość jednolita w całej rozproszonej pamięci. Przejrzałem dokumentację i nie znalazłem niczego, co automatycznie „wolałoby” lokalną pamięć masową niż zdalną. Nawet coś, co poszło z najmniejszym opóźnieniem, byłoby w porządku. To działałoby przez większość czasu, co spełniałoby wymagania tej aplikacji.
Niektóre odpowiedzi na niektóre pytania zadane poniżej:
- Węzły serwera: 2 lub 3, aby rozpocząć. Każdy serwer miałby dziesiątki jednoczesnych klientów do odczytu / zapisu.
- Topologia WAN jest pełna i niezawodna. (duża korporacja, koszt nie jest tak ograniczający jak biurokracja)
- Przełączanie awaryjne klienta: Właściwie nie myślałem o przełączeniu awaryjnym klientów (głównie dlatego, że nasza obecna aplikacja nie robi tego tylko w jednej witrynie). Podejrzewam, że praktyczną odpowiedzią jest to, że serwery w każdej geograficznie rozproszonej lokalizacji powinny stanowić pojedyncze punkty awarii dla obsługiwanych klientów. Chociaż, jeśli zastanawiasz się nad czymś konkretnym, myślę, że byłoby to dość istotne dla dyskusji.
- Roll-my-own: Myślałem o rsync / unison, ale potrzebowałbym trochę wymyślnej logiki, aby „dynamiczna” część tego dzieła działała płynnie. To znaczy, plik wydaje się być lokalny, ale jest pobierany tylko na żądanie.
- MS-DFS: Z pewnością wydaje się, że powinienem przyjrzeć się temu. Moim głównym problemem może być niepewność co do konfiguracji / niezawodności / wydajności serwera NFS w systemie Windows, ponieważ wielu klientów łączących się to klienci NFS.