Tomasz Faszyński

Tomasz Faszyński Specjalista ds.
programowania

Temat: Przełączanie między serwerami - load balancing

Cześć,

Mam stronę internetową na serwerze VPS w ovh. Nie mogę dopuścić do tego, aby była awaria i strona nie była dostępna. Dlatego chcę się zabezpieczyć drugim serwerem i w razie problemów "przełączyć" się na drugi serwer. Czy takie coś jest możliwe? Czy load balancer spełni takie wymagania? Jak podejść do zaprojektowania takiego rozwiązania?

konto usunięte

Temat: Przełączanie między serwerami - load balancing

OVH ma chyba taką usługę w sprzedaży. A jak zrobić load balancing zależy głównie od Twojej strony www.

1) Najprostsza konfiguracja:
2 serwery mysql i replikacja master-master
2 serwery memcache i replikacja master-master
2 serwery www - wszelakiej maści sesje i inne wynalazki powinny nie działać na plikach tylko używać memcache

1.5) Możesz dla zaoszczędzenia zrezygnować z memcache i użyć mysql do sesji i innych wynalazków tego typu.

2) Przed tym wszystkim masz load balancer.

Działa to w ten sposób że jeżeli pada jeden z serwerów www, cały ruch kierowany jest na drugi. Jeżeli działają oba, ruch jest rozkładany co obniży obciążenie pojedynczego serwera. Jeżeli padnie jeden memcache, zasada jest ta sama. Tak samo z mysql. Ta konfiguracja zawiedzie kiedy np oba serwery mysql padną (chociaż jeżeli używasz memcache i masz zmyślnie napisaną aplikację - ta może to przetrwać).

Replikacja master-master sprawia że jeden serwer dostaje dane i synchronizuje się z drugim i odwrotnie. Prawidłowo skonfigurowane serwery działają tak że jeżeli jeden z nich padnie to po powrocie - zsynchronizuje się z drugim i wznowi pracę jakby nigdy nic.

Także podsumowując - Twoja strona www musi być tak napisana żeby mogła działać w takiej lub większej infrastrukturze. Albo możesz pójść na łatwiznę i robić węzły gdzie masz połączony serwer www, mysql i memcache z replikacją. Jak pada jedna z tych części, pomijasz cały węzeł. Chociaż taniej i wygodniej wyjdzie jak Twoja strona będzie potrafiła skorzystać z dowolnego serwera mysql.
Tomasz Faszyński

Tomasz Faszyński Specjalista ds.
programowania

Temat: Przełączanie między serwerami - load balancing

Ok, a load balancer gdzie się znajduje? Na trzecim serwerze?

konto usunięte

Temat: Przełączanie między serwerami - load balancing

Przed całą infrastrukturą. A dokładniej przed serwerami WWW. On ma za zadanie rozkładać równomiernie ruch pomiędzy serwerami i reagować w momencie gdy jeden z serwerów przestanie odpowiadać albo będzie zbyt przeciążony.
Tomasz Faszyński

Tomasz Faszyński Specjalista ds.
programowania

Temat: Przełączanie między serwerami - load balancing

Dariusz P.:
Przed całą infrastrukturą. A dokładniej przed serwerami WWW. On ma za zadanie rozkładać równomiernie ruch pomiędzy serwerami i reagować w momencie gdy jeden z serwerów przestanie odpowiadać albo będzie zbyt przeciążony.

Tak ja to wiem, tylko, że jak mam vps1 i vps2 to na load balancer muszę kupić kolejny serwer?

konto usunięte

Temat: Przełączanie między serwerami - load balancing

Tomasz F.:
Tak ja to wiem, tylko, że jak mam vps1 i vps2 to na load balancer muszę kupić kolejny serwer?

Takie rozwiązania polegają na redundancji. Zawsze musisz mieć więcej niż potrzebujesz z tego względu że jak coś padnie - to będziesz miał tyle ile potrzebujesz (albo dalej jeszcze więcej).

Więc zastanów się. Niezależnie na jaki serwer www trafi użytkownik, jego sesja będzie utrzymana bo siedzi w memcache. Możesz mieć 1 serwer memcache ale jeżeli on padnie - sesje użytkowników na Twojej stronie przestaną działać. No chyba że takowych nie potrzebujesz (można np wystawiać front + api i oprzeć to na ciastku z którego korzysta javascript - ale takie ciastko można skraść).

Jeżeli padnie jeden z serwerów mysql (czy tam w ogóle bd, opieram to co pisze na typowym LAMP-ie), drugi przejmie na siebie cały ruch do czasu naprawy pierwszego. Jeżeli masz jeden serwer bazy danych to po jego awarii zawartość strony znika. No chyba że nie potrzebujesz takowego (zawartość strony jest na plikach na serwerze www).

Jeżeli masz 2 serwery www, ruch jest rozkładany a jak jeden z nich padnie to drugi przejmuje go na siebie. Jeżeli masz jeden i on padnie - to koniec.

I dochodzimy do lad balancera. Jeżeli go umieści na jednym z serwerów o których mowa - co będzie jeżeli akurat ten serwer padnie? Nawet jeżeli masz osobny serwer na load balancer - zawsze istnieje ryzyko że to on padnie więc i tu przyda się failover.

Teraz ciekawostka. Mógłbyś w teorii umieścić bazę danych na owych serwerach www. To z 6 zmniejsza Ci ilość potrzebnych maszyn do 4. To samo możesz zrobić z memcache. Zostają 2 maszyny + load balancer. Ale obawiam się że w wypadku większego ruchu nie opłaci Ci się to. Bo w przypadku awarii leci od razu 1 serwer www, 1 mysql i 1 memcache. Czyli połowa Twojej infrastruktury zamiast 1/6

Ogólnie wpierw zastanów się jaki masz budżet i co możesz za niego osiągnąć.
Jakub Jaworowicz

Jakub Jaworowicz Marketing &
Automation
Consultant

Temat: Przełączanie między serwerami - load balancing

Nie prościej aplikacja która po padzie powyżej X minut zmieni DNS (z reguły max 15 minut) a potem go przywróci ?
Do tego dochodzi tylko kopia lustrzana
Tomasz Faszyński

Tomasz Faszyński Specjalista ds.
programowania

Temat: Przełączanie między serwerami - load balancing

Mateusz J.:
Nie prościej aplikacja która po padzie powyżej X minut zmieni DNS (z reguły max 15 minut) a potem go przywróci ?
Do tego dochodzi tylko kopia lustrzana

A jak to zaimplementować?

konto usunięte

Temat: Przełączanie między serwerami - load balancing

Mateusz J.:
Nie prościej aplikacja która po padzie powyżej X minut zmieni DNS (z reguły max 15 minut) a potem go przywróci ?
Do tego dochodzi tylko kopia lustrzana

zależy jaką niezawodność chcesz osiągnąć. Poza tym wytłumacz tą zmianę DNS. Większość systemów operacyjnych, przeglądarek pakuje w cache co się da. Więc taka zmiana DNS może oznaczać więcej problemów niż je rozwiąże. Ten post został edytowany przez Autora dnia 05.07.15 o godzinie 11:49



Wyślij zaproszenie do