Najlepszym sposobem na udostępnienie katalogu przesyłanych plików między serwerami WWW skalowanymi poziomo

9

Obecnie próbuję określić poziomo skalowalny klaster dla aplikacji internetowej opartej na drupalu, która wygląda jak kolorowy schemat poniżej:

Moduł równoważenia obciążenia implementuje sesje lepkie, więc użytkownik zachowuje stan po przydzieleniu serwera do pracy.

Każdy serwer aplikacji ma następujące funkcje:

  • lakier z przodu
  • drupal 6 w środku biegnie na stosie lamp
  • memcached z tyłu

Dwa serwery bazy danych mysql są na wspólnym adresie IP i znajdują się w klastrze HA z DRBD i słyszą rytm, dzięki czemu ich utrata nie spowoduje awarii całej platformy.

wprowadź opis zdjęcia tutaj

Jest kilka rzeczy, których nie jestem pewien. Doceniam twoje opinie na temat:

Jak pamięć masowa plików powinna być skalowana w poziomie?

Zastanawiam się nad użyciem NFS do zamontowania udostępnionego katalogu plików na każdym serwerze aplikacji, więc plik przesłany w jednym miejscu będzie dostępny na wszystkich z nich. Myślę o NFS, ponieważ istnieje on od wieków i nie mam doświadczenia z MogileFS lub GlusterFS, i to było coś, z czego korzystaliśmy wcześniej, więc jesteśmy bardziej zaznajomieni z tym.

Czy istnieją jakieś wytyczne dotyczące ustalania, ile serwerów warto w ten sposób udostępnić katalog przez NFS?

W jaki sposób należy udostępnić tutaj HA na współużytkowanej pamięci plików?

Jednym z problemów jest to, że serwer NFS jest pojedynczym punktem awarii.

Używamy już Heartbeat i DRBD na serwerach Mysql, i wolałbym, aby liczba technologii zaangażowanych w stos była jak najniższa - jakie byłyby pułapki, gdybym użył tej samej strategii HA dla pliku serwery też?

Alternatywne podejście

Dotyczy to wewnętrznej witryny z ograniczoną liczbą użytkowników, którzy od czasu do czasu bardzo intensywnie korzystają z witryny przez krótki czas, gdy jest uruchomiona wewnętrzna inicjatywa. Więc to nie musi być skalowane w nieskończoność, jak w przypadku niektórych startupów.

Jeśli się uwzględni

  • istnieje górny limit ruchu, którego możemy się spodziewać
  • dodanie dodawania HA do serwerów plików i zaprojektowanie konfiguracji do skalowania w poziomie w ten sposób wprowadza znaczną złożoność

Zastanawiam się również nad tym, aby dwa serwery WWW były mocniejsze, aby mogły obsłużyć szczytowe obciążenie między nimi, i skonfigurować unison lub rsync między nimi w zadaniu cron, aby:

  • pliki są nadal zsynchronizowane (lepkie sesje utrzymują użytkownika na tym samym serwerze, na którym przesłano plik)
  • utrata jednego oznacza, że ​​strona nadal działa.

Czy to wydaje się być możliwym sposobem na obejście ewentualnych problemów związanych ze złożonością HA NFS / DRBD?

Dzięki,

do

Chris Adams
źródło

Odpowiedzi:

3

Serwer NFS będzie musiał mieć co najmniej taki sam przepis jak serwer MySQL, ponieważ mają one zasadniczo tę samą funkcję i ograniczenia (oba są miejscami, w których zapisujesz dane). Nie podoba mi się pomysł wielu pisarzy na NFS, dlatego zarządzanie blokadami plików jest bardzo skomplikowane, a moje doświadczenia nie poszły zbyt dobrze w tym zakresie.

Moją sugestią byłoby skoncentrowanie wszystkich zapisów na jednym z serwerów aplikacji (może mieć jeden serwer aplikacji dedykowany do pisania na serwerze NFS) i wielu serwerach aplikacji czytających montujących go tylko do odczytu (wiem, że drupal ma kilka dynamicznych miniatur, które muszą być napisane, ale większość z nich możesz zachować na RO fs). Będziesz potrzebował co najmniej drugiego serwera NFS (użycie DRBD jest tutaj najlepszym wyborem, jeśli nie masz współużytkowanej pamięci, takiej jak SAN), aby zapewnić HA.

Na koniec spójrz na Gluster i inne systemy rozproszone.

rdzeń rdzeniowy
źródło
0

Możesz spróbować mogileFS. Wykorzystałem go w jednym z naszych projektów. Jest łatwy w użyciu i konfiguracji oraz skalowalny i nie ma pojedynczych punktów awarii.

http://danga.com/mogilefs/

Sameer
źródło
0

Najlepszym sposobem jest znalezienie dobrego rozwiązania do przechowywania. W zależności od skali i rodzaju aplikacji można użyć dobrego serwera NAS z obsługą NFS i co najmniej dwóch portów gigabitowych i zasilaczy (sprawdź niektóre rozwiązania dla przedsiębiorstw).

Jeśli naprawdę poważnie podchodzisz do swojej aplikacji, najlepszym rozwiązaniem jest sprawdzenie niektórych rozwiązań SAN, ale może to być bardzo kosztowne, ponieważ wymaga specjalnego sprzętu (można to zrobić przy użyciu gotowego sprzętu, ale może być zbyt wolne).

André S.
źródło