Skocz do zawartości
jensej

Rozłożenie danych między serwerami.

Polecane posty

Witam,

otóż zastanawiam się jak w najlepszy sposób rozłożyć ruch między serwerami.

 

Sytuacja wygląda tak:

na serwerze s1: limit użytkowników wynosi 100. Aktualnie z tego serwera korzysta te 100 osób, wykorzystując limit. Wypada mi przekierować 101 użytkownika na serwer s2. tyle że akurat treść którą chce obejrzeć jest na serwerze s1. Wypada mi ją tutaj w jakiś sposób podpiąć. Czy system plików NFS się tutaj sprawdzi jeśli serwery są w 1 serwerowni (a co gdy są w różnych, chyba że wtedy się nie da)? One będą się komunikować po LANie (jest taka opcja?) załóżmy ze z prędkością 1Gbps. Czy gdy serwer s2, będzie korzystał z zasobu serwera s1 (w którym łącze zewnętrzne jest wykorzystywane w 100%), to serwer s2 podając plik z serwera s1 będzie wykorzystywał swoje łącze zewnętrzne? Wiem że do rozłożenia ruchu mogę użyć HAproxy, jednak głównym problemem jest tutaj dostępność treści na każdym z serwerów. W znaczeniu takim, że s1 zawiera dane ( 1, 2, 3, 4), a serwer s2 zawiera dane (5,6,7,8), i aby serwer s1 miał dostęp do danych serwera s2 i na odwrót.

 

Mam nadzieję że wyraziłem się logicznie. Proszę o jakąś radę, jak to rozwiązać najlepiej.

Edytowano przez jensej (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Pisząc bardzo prosto synchronizacja danych z zachowaniem nazw plików powinna rozwiązać problem. Dzięki temu jeżeli serwer s1 jest głównym synchronizował by zawartość z s2 , s3 ,s4 itd. Przy odpowiednim podejściu można to ładnie rozpisać by dodając plik do s1 wysyłał by te zawartość do pozostałych. A rozdzielenie ruchu już przez HAproxy

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Pisząc bardzo prosto synchronizacja danych z zachowaniem nazw plików powinna rozwiązać problem. Dzięki temu jeżeli serwer s1 jest głównym synchronizował by zawartość z s2 , s3 ,s4 itd. Przy odpowiednim podejściu można to ładnie rozpisać by dodając plik do s1 wysyłał by te zawartość do pozostałych. A rozdzielenie ruchu już przez HAproxy

W jakim sensie wysyłał zawartość? Że na s1 byłby ten plik fizycznie i na s2 też fizycznie?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Dokładnie tak jak napisałeś.

 

Zapomniałem o najważniejszym! Sprawdź sobie w google: "rsync to multiple locations"

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

na marnowanie przestrzeni też nie mogę sobie pozwolić. Chodzi o jakieś bardziej ambitnie rozwiązanie, a nie o kopiowanie plików na każdy serwer. (o ile to miałeś na myśli)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jedno storage np 4TB podpięte do dwóch czy trzech serwerów po sieci prywatnej również rozwiąże problem ale wszystko w obrębie jednego DC. Innym wyjściem jest puszczenie wszystkiego przez CDN który pobierał by zawartość w trakcie odtwarzania na zasoby zewnętrze ale koszt tego nie jest mały. Dlatego zaproponowałem najprostsze rozwiązanie z wykorzystaniem rsync. Jest to o tyle elastyczne narzędzie że tworząc odpowiednie reguły jest wstanie porównać zawartość i jedynie przenieść najnowsze pliki. Co tobie da rozdzielenie ruchu jeżeli w twoim przypadku są ważne dwa elementy: przepustowość katy/usługi i wydajność serwera do przekazania ruchu. Jeżeli masz nad dwoma serwerami s1 i s2 nadrzędny serwer z HAproxy to on ma się zająć przepięciem ruchu po przekroczeniu jakiejś granicy która ustalisz. Nie ma możliwości by HAproxy szukając pliku na s2 bo s1 jest zajęty pobrał plik z s2 który by go automatycznie pobierał z s1. To nie ma sensu. Po prostu nie tędy droga. Do rozdzieleni potrzebujesz źródła konkretnej zawartości. Teoretycznie można by to oprzeć na sieci prywatnej ale tylko w tym samym DC tyle że nie wiem jak by się to zachowało. Mam na myśli opóźnienia i dobrze rozpisane zależności według utworzonego wzoru. Kilka VPS pod testy na digitalocean powinno dać jakieś ciekawe wyniki.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Może codzienne, automatyczne przenoszenie plików w zależności od ich popularności?

Rozłoży to ruch i nie marnujesz przestrzeni.

Proxy i NFS raczej się nie sprawdzą ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

a nie prościej zastosować jakiś rozporoszony system plików? Glusterfs, moosefs

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

też bym poszedł w rozproszony filesystem o ile masz sieć wewnętrzną z nielimitowanym transferem.

"Problemem" takiego systemu plików jest to, że raczej musisz zastosować replikację conajmniej rzędu 2 - bo chyba w większości tych filesystemów pliki są "rozproszone" i przy braku replikacji pad jednego serwera by ci wszystko uziemił.

Krzysiek

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość patrys

Nie pomoże system plików, programowo muszą być dane "przesuwane" między serwerami podającymi content.

  • Upvote 1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×