Niezniszczalna aplikacja? Jak?

0

Hejka, ostatnio zastanawiałem się co by było gdyby postawić dwie maszyny wirtualne i z palca nadać im ten adres IP, czy w chwili awarii jednej z nich druga od razu dostanie adres i będzie widoczna? Zakładam, że tak ale nurtuje mnie inna rzecz...
Mianowicie co wtedy dzieje się z zapytaniem ?
Jeśli mamy dwie identyczne konfiguracje i nagle jedna umiera a druga wskakuje na jej miejsce to czy przykładowo:
Serwer 1 -> User wchodzi na stronę zaczyna wypełniać formularz
Serwer 1 -> Umiera ;<
Serwer 2 -> Wstaje
User kończy wypełniać formularz i go wysyła.

Pytanie brzmi co się stanie z formularzem? Zostanie odrzucony bez nową maszynę mimo tego, że droga do niej jest taka sama i oprogramowanie również czy może jednak przyjmie dane?

Totalnie nie znalazłem żadnych sensowych artykułów na temat podstawiania dodatkowej maszyny w razie awarii, jak to działa, jak to się robi?

Czy może ktoś polecić odpowiednie źródło z którym muszę się zapoznać?

4

Od tego są replikacje, bo co jak chcesz mieć takie same dane na tych dwóch serwerach ? Nie możesz mieć dwóch takich samych ip w sieci w jednym czasie, więc jakby jeden był wyłączony to nie będziesz miał synchronizacji danych. Stawiasz sobie bazę, dajesz tam jakiegoś raida żeby to zabezpieczyć, stawiasz drugi serwer do którego się replikuje pierwszy. W momencie wysłania żądania jeśli nie masz odpowiedzi po np. 3 próbach przełączasz się na drugi serwer. To jest pewnie jeden z wielu sposobów.

9

Totalnie nie znalazłem żadnych sensowych artykułów na temat podstawiania dodatkowej maszyny w razie awarii, jak to działa, jak to się robi?

Szukaj informacji pod kątem load balancing oraz database replication.

0

Chodzi mi o sytuacje w której bazę mam osobno a sama aplikacja jest w 2 kopiach, co się wtedy stanie ? Formularz dotrze do maszyny które wejdzie na jej miejsce i bez problemu skontaktuje się z bazą danych?

1
ggie napisał(a):

Chodzi mi o sytuacje w której bazę mam osobno a sama aplikacja jest w 2 kopiach, co się wtedy stanie ? Formularz dotrze do maszyny które wejdzie na jej miejsce i bez problemu skontaktuje się z bazą danych?

Jeśli baza jest gdzieś na zewnątrz, a nie na maszynie która padnie, to tak. Zakładając, że baza też w tym momencie nie padnie :D

2

Jeśli wszystko jest stateless i aplikacja nie trzyma lokalnie niczego związanego z sesją usera, to nie ma problemu.

9

To o czym piszesz - dwie maszynki "z tym samym IP" (słowo kluczowe: VIP = Virtual IP) odnosi się do architektury Active-Standby (jedna maszynka pracuje, druga się nudzi i czeka na podjęcie pracy w przypadku awarii pierwszej). Maszynki widzą się za pomocą tzw. "heartbeat" (mogą być połączone różnymi ścieżkami fizycznymi - np. dedykowana karta sieciowa + inne niezależne połączenie - np. mitycznym kabelkiem RS232). Pierwsza maszyna podnosi interfejs z VIP i pracuje, druga jak zauważy że pierwsza nie odpowiada, to podnosi interfejs sieciowy z adresem VIP i wysyła "ARP pinga" do gatewaya, tak by gateway zaktualizował sobie "arp cache" i wiedział, że jak przyjdzie request dla VIP, to ma go pokierować pod nowy "MAC adres".

Ogólnie temat rzeka.

Musisz wiedzieć na jakim poziomie chcesz mieć odporność na awarie:

  • requestu
  • sesji
  • serwisu
  • serwera
  • data center

Słowa kluczowe:

  • redundancja :-)
  • High availability
  • Failover
  • Replication
  • Geo-redundancy
  • klastry active-active
  • klastry active-passive
  • load balancing
  • virtual ip
  • network bonding
  • heartbeat
  • split brain
    ...

Jak będziesz wiedział na jakim poziomie musisz (bo chcieć pewnie będziesz chciał dostępność rzędu 99,9999% , ale jak zobaczysz ceny interconnectów dla klastra, to może uznasz, że wcale nie potrzebujesz wysokiej dostępności ;-) ), to pod taki poziom tworzysz architekturę.

edycja:
A i jeszcze jedno. Wirtualizacja dostarcza zupełnie nowych możliwości i rozwiązania dla konkretnych wymagań mogą bazować na wirtualnych sieciach, storagach i funkcjonalnościach oferowanych przez dostawców takich rozwiązań (np. vMotion).

0

Czemu od razu maszyny wirtualne? Rozważałeś Kubernetes? Zarządzane np. Rancherem.

2
donPietro napisał(a):

Czemu od razu maszyny wirtualne? Rozważałeś Kubernetes? Zarządzane np. Rancherem.

To k8s gdzieś musi działać. W większości będzie działać wewnątrz VMek. Poza tym ja nie rozumiem tego hajpu na k8s jak praktycznie wszystko to samo można uzyskać przy pomocy ASG (czy podobnego systemu) i systemd, a zdecydowanie mniej pracy i nauki nowych narzędzi. k8s to IMHO dodatkowa, zbędna warstwa abstrakcji, która jest fajna, jak to nie Ty musisz nią zarządzać, inaczej jest to koszmar.

1

Mając odpowiednie narzędzia i techniki, oraz odpowiednią konstrukcję infrastruktury można osiągnąć 9 dziewiątek stabilności (oznacza to troszkę ponad pół sekundy downtime w skali 20 lat).

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0