Unikanie SPOFS w GlusterFS i Windows

10

Mamy klaster GlusterFS, którego używamy do naszej funkcji przetwarzania. Chcemy zintegrować z nim system Windows, ale mamy problemy z ustaleniem, jak uniknąć pojedynczego punktu awarii, jakim jest serwer Samba obsługujący wolumin GlusterFS.

Nasz przepływ plików działa w następujący sposób:

Przepływ dokumentów GlusterFS

  1. Pliki są odczytywane przez węzeł przetwarzania systemu Linux.
  2. Pliki są przetwarzane.
  3. Wyniki (mogą być małe, mogą być dość duże) są zapisywane z powrotem do woluminu GlusterFS po ich zakończeniu.
    • Wyniki można zamiast tego zapisać do bazy danych lub zawierać kilka plików o różnych rozmiarach.
  4. Węzeł przetwarzania odbiera inne zadanie z kolejki i GOTO 1.

Gluster jest świetny, ponieważ zapewnia wolumin rozproszony, a także natychmiastową replikację. Odporność na katastrofy jest miła! Lubimy to.

Ponieważ jednak system Windows nie ma rodzimego klienta GlusterFS, potrzebujemy jakiegoś sposobu, aby nasze oparte na systemie Windows węzły przetwarzania współpracowały z magazynem plików w podobny sposób odporny. Dokumentacja GlusterFS stwierdza, że sposobem na zapewnienie dostępu do systemu Windows jest skonfigurowanie serwera Samba na zamontowanym woluminie GlusterFS. Doprowadziłoby to do takiego przepływu plików:

Przepływ dokumentów GlusterFS przez nawijarki

Dla mnie to wygląda na jeden punkt awarii.

Jedną z opcji jest klastrowanie Samby , ale wydaje się, że jest ona oparta na niestabilnym kodzie w tej chwili i dlatego nie działa.

Więc szukam innej metody.

Niektóre kluczowe szczegóły dotyczące rodzajów danych, które przekazujemy:

  • Oryginalne rozmiary plików mogą wynosić od kilku KB do kilkudziesięciu GB.
  • Przetwarzane rozmiary plików mogą wynosić od kilku KB do GB lub dwóch.
  • Niektóre procesy, takie jak wczytywanie pliku archiwum, takiego jak .zip lub .tar, mogą powodować DUŻO dalszych zapisów, gdy zawarte pliki są importowane do magazynu plików.
  • Liczba plików może dostać się do dziesiątków milionów.

To obciążenie nie działa z konfiguracją Hadoop „statycznego rozmiaru jednostki roboczej”. Podobnie oceniliśmy magazyny obiektów w stylu S3, ale okazało się, że ich brakuje.

Nasza aplikacja napisana jest w języku Ruby na zamówienie i mamy środowisko Cygwin w węzłach Windows. To może nam pomóc.

Jedną z rozważanych przeze mnie opcji jest prosta usługa HTTP na klastrze serwerów, na których zamontowano wolumin GlusterFS. Ponieważ wszystko, co robimy z Glusterem, to zasadniczo operacje GET / PUT, wydaje się, że można je łatwo przenieść na metodę przesyłania plików opartą na HTTP. Umieść je za parą loadbalancer, a węzły Windows mogą HTTP PUT do zawartości ich małego niebieskiego serca.

Nie wiem, w jaki sposób utrzymywana byłaby spójność GlusterFS . Warstwa proxy HTTP wprowadza wystarczające opóźnienie między momentem, w którym węzeł przetwarzający zgłasza, że ​​jest to zrobione z zapisem, a faktycznym widocznością na woluminie GlusterFS, że obawiam się, że późniejsze etapy przetwarzania, które będą próbowały pobrać plik, Znajdź to. Jestem prawie pewien, że skorzystanie z direct-io-mode=enableopcji mount pomoże, ale nie jestem pewien, czy to wystarczy . Co jeszcze powinienem zrobić, aby poprawić spójność?

A może powinienem stosować zupełnie inną metodę?


Jak zauważył Tom poniżej, NFS to kolejna opcja. Więc przeprowadziłem test. Ponieważ wyżej wymienione pliki mają nazwy dostarczone przez klienta, które musimy zachować i mogą występować w dowolnym języku, musimy zachować nazwy plików. Więc zbudowałem katalog z tymi plikami:

Katalog NFS z dobrymi nazwami na serwerze

Kiedy montuję go z systemu Server 2008 R2 z zainstalowanym klientem NFS, pojawia się następujący katalog katalogów:

Katalog NFS ze złymi nazwami na kliencie

Najwyraźniej Unicode nie jest zachowywany. Więc NFS nie będzie dla mnie działać.

sysadmin1138
źródło
Uważam, że zespół Samby uważa, że ​​jest ctdbstabilny i gotowy do użytku produkcyjnego, a pierwsze zdanie w podanym linku powoduje, że drugie zdanie jest nieprawidłowe, ponieważ nigdy nie zostało zaktualizowane. Planowałem to ustalić, ale zanim do tego doszedłem, zmieniłem zadania na środowisko prawie wolne od okien.
Sven
Z jakiej wersji systemu Windows korzystasz?
Tom O'Connor,
@ TomO'Connor Jak mówi tag, Windows 7. Chociaż w pewnym momencie będzie tam Server 2008 R2.
sysadmin1138
Podejrzewam, że Cygwin nie wchodzi w rachubę?
Tom O'Connor,

Odpowiedzi:

5

Lubię GlusterFS. Uwielbiam GlusterFS. Tak długo, jak możesz dać mu dedykowaną przepustowość, wszystko jest w porządku.

Jedną z najlepszych rzeczy w GlusterFS jest używanie go z NFS. Jedną z zaskakujących rzeczy, nad którymi ostatnio pracowałem, jest NFS w systemie Windows 7 i 2k8R2 .

Oto co bym zrobił.

  1. Skonfiguruj 2 serwery GlusterFS, które mogą eksportować NFS.
  2. Skonfiguruj połączenie między nimi.
  3. Może wdrożyć coś takiego jak Heartbeat / Pacemaker?
  4. Skonfiguruj wirtualny adres IP (VIP) między swoimi węzłami Gluster.
  5. Połącz zmapowane dyski sieciowe Windows boxen przy użyciu adresu IP VIP.
  6. Przetestuj wszystko, co możesz sobie wyobrazić.

Klastrowanie Samby brzmi przerażająco, a nawet jeśli to zrobisz, Sambie nadal brakuje możliwości niezawodnego zachowania się w niektórych sieciach Windows (cała ta kompatybilność z domeną NT4, nigdy nie wydaje się być w stanie tego ominąć).

Myślę , że ponieważ każdy węzeł gluster jest w trybie rozproszonym, replikowanym, teoretycznie powinieneś być w stanie połączyć się z którymkolwiek z nich i pozwolić mu martwić się przenoszeniem danych. W rezultacie bicie serca powinno być tym, co przekierowuje i kontroluje, z którym rozmawiasz.

Co do twojego

  • Liczba plików może dostać się do dziesiątków milionów.

Sugeruję, abyś zbadał użycie XFS jako podstawowego systemu plików, ponieważ jest całkiem dobry z dużymi systemami plików i obsługiwany przez GlusterFS

Tom O'Connor
źródło
Obecnie używam XFS! Przyglądaliśmy się NFS3 jakiś czas temu, aby obsłużyć początkową funkcję przetwarzania, ale okazało się to niemożliwe z powodu braku obsługi Unicode. Tak było z serwerem NFS w systemie Windows. „会計 2012.xls” nie wyświetla się poprawnie, a to bardzo ważne. Ale ... Nie wiedziałem tego o 7 / R2 i warto to zbadać!
sysadmin1138
Więc przeprowadziłem test. Niestety nie zwrócił dobrych wyników (patrz aktualizacja pytania). Wydaje się, że problem Unicode jest dwukierunkowy.
sysadmin1138
Facet. Więc nie mam pomysłów. Zastanawiam się, czy możesz postawić Sambę za VIPem.
Tom O'Connor,
Grupa robocza tak, Domena (z której korzystamy) nie. Tak więc mój problem.
sysadmin1138
Z drugiej strony, po rozmowie z programistami zachowanie nazw plików nie jest tak krytyczne, jak się spodziewałem. Najwyraźniej tak długo, jak możemy je zdobyć na pierwszym etapie (spożyciu), baza danych będzie śledzić nazwy. Tak więc NFS jest tutaj prawidłową opcją (gdy otrzymamy odpowiednie wersje systemu Windows).
sysadmin1138
1

Być może możesz pomyśleć w rozwiązaniu HA ... użyj uwierzytelniania LDAP (może być replikowane na dowolną liczbę serwerów LDAP) i umieść adres IP, aby słuchać usług SMB.

Ten adres IP będzie zmienny na głównym serwerze. Po wyłączeniu Heartbeat może uruchomić usługi na drugim serwerze.

Te serwery będą miały punkt montowania glusterfs, a wtedy będą tam wszystkie dane.

To możliwe rozwiązanie i tak łatwe w zarządzaniu ...

Saxa
źródło