Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jeden serwis pare serwerów
Forum PHP.pl > Forum > PHP > Pro > Archiwum Pro
Major
Witam, mam nadzieje że wybrałem odpowiedni dział smile.gif

Za jakiś czas będe musiał zrobić system korzystający z paru serwerów by ujednolicić ruch i by w wypadku awarii jednego drugi go zastąpił, lecz zbytnio nie wiem jak to rozwiązać, mam pare pomysłów ale żaden nie jest idealny:
1.
Serwer1 --- Serwer2
Rozwiązanie na pozór dobre, ale podczas dodawania rekordów do bayz na serwerze1 trza dodać też serwerze2. A jednak zalezy mi na szybkości a to może jednak spowolnić
2.
Kod
Serwer1     Serwer2
       \    /
        \  /
      Serwer DB


Takie rozwiązanie by było prawie idealne, ale co będzie jak padnie serwer z baża danych, wtedy oba serwery będa nie czynne. W takiej sytuacji można by zastosowac jednak cache html, wtedy by były wyswietlane cachce(które by obejmowaly wszystkie pliki), ale jednak nie można by przeprowadzać żadnych operacji INSERT/UPDATE/REPLACE
3.

Nie mam zdjolnosci do rysowania winksmiley.jpg

Takie rozwiązanie jest prawie idealne, wszystko jest ok, oprócz cena jaką by to kosztowało. Bo to sa dwie maszyny nie najlepsze i poteżne maszyny do obsługi baz danych i jednak będe na takim rozwiązaniu tracił szybkośc wczytywania strony

Ma ktoś pomysł jak można by to zrealizować po najniższych kosztach i bez dużej straty wydajnosci?
Ociu
IMHO. Dwa serwery mające to te same informacje. Jesli jeden nie zadziała, śmiga drugi.
Jeśli dodasz informacje do jednego, to te same info przeniesą się do drugiego i na odwrót.

pozdrawiam
Major
Tak ale jednak to spowolni działanie serwisu podczas dodawaniu komentarzy/newsów i innych rzeczy. Bo jednak nie będzie to localhost więc będzie wolniej.
matid
Ja bym sugerował po prosu raz dziennie o godzinie najmniejszego ruchu przesyłać zawartość pierwszego serwera do drugiego. W wypadku awarii jednego z nich zawsze będzie dostępna kopia sprzed < 24h.
Kinool
przy niezawodnosci systemow BSD to malo prawdopodobne zeby cos walnelo! jesli sa dobrze skonfigurowane i dedykowane tylko pod to konkretne zastosowanie to niezawodnosc siega prawie 100% smile.gif

jesli juz chesz miec te zapasowe do baz danych to replikacja bedzie pomocna smile.gif ustawic je tak by sie np replikowaly co 2 godziny zaby nie obciazac za mocno (zalezy jeszcze co tam bedziesz trzymal, ile to objetosciowo zajmuje i strukturalnie)
dr_bonzo
Cytat
przy niezawodnosci systemow BSD to malo prawdopodobne zeby cos walnelo! jesli sa dobrze skonfigurowane i dedykowane tylko pod to konkretne zastosowanie to niezawodnosc siega prawie 100% smile.gif
Serwer to nie tylko software -- sa jeszcze dyski twarde, zasilacze -- jak to padnie to bsd nic na to nie poradzi. Chyba nie bez celu instaluje sie w serwerach macierze dyskowe i redundantne zasilacze. Ale to offtopic smile.gif
Major
Cytat
przy niezawodnosci systemow BSD to malo prawdopodobne zeby cos walnelo! jesli sa dobrze skonfigurowane i dedykowane tylko pod to konkretne zastosowanie to niezawodnosc siega prawie 100% smile.gif

Ale jednak co jakiś czas trza zrobić update chodzby php, zainstalować dodatkowe oprogramowanie, wtedy trza wykonac restart, wtedy by chodził drugi serwer, albo by unormować ilość osób na serwerze, by nie przeciązać jednego serwera nadmiernie

Cytat
ustawic je tak by sie np replikowaly co 2 godziny zaby nie obciazac za mocno


Pomysł dobry np. w komentarzach "Komentarz zostanie opublikowany w przeciągu jednej godziny", ale forum już co innego tam raczej wolałbym odrazu publikować
dr_bonzo
Ale takie np. allegro wylacza swoj serwis na czas napraw/konserwacji.
matid
Cytat(Major @ 2005-05-20 14:51:21)
Cytat
ustawic je tak by sie np replikowaly co 2 godziny zaby nie obciazac za mocno


Pomysł dobry np. w komentarzach "Komentarz zostanie opublikowany w przeciągu jednej godziny", ale forum już co innego tam raczej wolałbym odrazu publikować

To nie o to chodzi. Na serwerze głównym wszystkie zmiany wykonywane są w czasie rzeczywistym, a co dwie godziny serwer replikuje wszystkie dane na drugi, więc mamy tak:

Serwer 1 - wszystko w czasie rzeczywistym
Serwer 2 - w wypadku awarii Serwera 1 mamy dane najpóźniej sprzed 2h.
Synaps
Cytat(matid @ 2005-05-20 15:25:10)
To nie o to chodzi. Na serwerze głównym wszystkie zmiany wykonywane są w czasie rzeczywistym, a co dwie godziny serwer replikuje wszystkie dane na drugi, więc mamy tak:

Serwer 1 - wszystko w czasie rzeczywistym
Serwer 2 - w wypadku awarii Serwera 1 mamy dane najpóźniej sprzed 2h.

Albo zdecydować się na logowanie wszystkich operacji typu DML i przesyłanie takich logów na backupowy serwer DB gdzie są one pobierane i wykonywane. Jeśli dobrze napiszemy interfejs który to wykonuje , wrazie awarii tracimy co najwyżej kilka op. DML.
Vengeance
Cytat(matid @ 2005-05-20 15:25:10)
Cytat(Major @ 2005-05-20 14:51:21)
Cytat
ustawic je tak by sie np replikowaly co 2 godziny zaby nie obciazac za mocno


Pomysł dobry np. w komentarzach "Komentarz zostanie opublikowany w przeciągu jednej godziny", ale forum już co innego tam raczej wolałbym odrazu publikować

To nie o to chodzi. Na serwerze głównym wszystkie zmiany wykonywane są w czasie rzeczywistym, a co dwie godziny serwer replikuje wszystkie dane na drugi, więc mamy tak:

Serwer 1 - wszystko w czasie rzeczywistym
Serwer 2 - w wypadku awarii Serwera 1 mamy dane najpóźniej sprzed 2h.

Pada pierwszy sewer... włącza się drugi.
Na drugim masz kopie przedawnioną o 2h.
Drugi serwer działa przez godzine, serwer 1 naprawiony.

Teraz na serwerze masz kompie przedawnioną o 1h (z czego ona była przedawniona o 2h) :]

Rozumiesz o co mi chodzi? W przypadku jakiegoś np. forum uzyskujesz 2 kompletnie niezgodne wersje serwisu :]


Proponuje zrobić tak, iż gdy coś padnie to serwer 2 udostępnia tylko zawartość statyczną, a forum, komentarze itd po prostu nie są dostępne do czasu usunięcia awarii.
matid
No zapomniałem tego dodać. Sam miałem na myśli wyłączenie możliwości dodawania danych w wypadku awarii serwera głównego.
Innym rozwiązaniem tego problemu byłoby logowanie operacji DML.
Wtedy jak padnie pierwszy serwer, to drugi ma bazę sprzed 2 godzin. W międzyczasie wszystkie operacje na bazie danych są logowane i po przywróceniu serwera głównego wysyłane na niego i wykonywane.
dvc
A moze cos takiego ?
Kod
serwer 1                  serwer 2
   \                            /
     \                        /
       \                    /
         \                /
            P R O X Y
            /          \
          /              \
        /                  \
      /                      \
Serwer DB1   <=>      Serwer DB2


w przypadku padu jednego z serwerow DB baza jest ciagle aktualna - po naprawie
nastepuje synchronizacja(przychodzi mi wiele pomyslow do glowy) miedzy serwerami DB [ciagla praca serwerow, brak calkowitej desynchronizacji serwerow]

mozna sie pokusic o postawienie jeszcze jednego serwera proxy przed serwerami 1 i 2

tylko nie wime do czego maja byc te serwery 1 i 2 ?

moze lepiej tak zrobic ?

Kod
   klient
     |
     |
   Proxy ( w przypadku totalnego padu wyswietli strone sorry awaria )
     |
  Serwer Aplikacji
     |
  Proxy ( dane ida na dwa serwery, w przypadku padu laduja tylko na jednym)
  |     |                  (po naprawie nastepuje synchronizacja miedzy serwerami DB)
DB1 <=> DB2  
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.