Temat: Loadbalancing i failover pomiędzy dwoma datacenter

Witam,

mam za zadanie zrobić projekt na loadbalancing i failover między dwoma kolokowanymi serwerami w dwóch róznych datacenter. Wiem mniej więcej jak zrobić mirroring baz miedzy oboma serwerami ale zastanawiam się jak zrobić "failover" pomiędzy dwoma data center. Jedyne co mi przychodzi do głowy to loadbalancing przez DNSy i gdy jedno datacenter padnie, drugie usuwa wpis pierwszego datacenter z DNSów

Wada jest oczywista, czas trwania takiego przełączenia, czy są jakies inne metody umożliwiające taki loadbalancing/failover ?
Stanisław P.

Stanisław P. Software designer

Temat: Loadbalancing i failover pomiędzy dwoma datacenter

Najważniejsze pytanie to... loadbalancing czego? Inaczej to wygląda dla baz danych, inaczej http, inaczej sip, ...

Temat: Loadbalancing i failover pomiędzy dwoma datacenter

Wygląda to tak:
-dwa serwery w dwóch datacenter
-aplikacja w PHPie podłaczona do lokalnej bazy SQL
-na każdym baza danych PostgreSQL
-synchronizacja między bazami (czyli żeby UPDATE z s1 był wykonany na obu serwerach a SELECT był robiony z lokalnej bazy na s1... jakies pomysły?)
-w przypadku baz jak s1 padnie, a potem zostanie przywrócony do życia, synchronizacja z s2 (przez ten czas app serwowany z s1)

-loadbalancing/failover do aplikacji PHPowej (dwa różne datacenter), niepotrzeny loadbalancing między serwerami SQL, tylko replikacja zapisów do drugiej bazy)

konto usunięte

Temat: Loadbalancing i failover pomiędzy dwoma datacenter

W zasadzie to kazde stabilne rozwiazanie dla klastrow HA + wystarczajaca przepustowosc lacza. Naturalnie jakis bezpieczny kanal komunikacji po VPN bedzie konieczny pomiedzy tymi kolokacjami.
Moze heartbeat2? wspiera tylko w zasadzie linuxa (sa tez wersje dla FreeBSD i Solarisa, ale nie mam pojecia jak dzialaja), ale open source. W wersji 2 wlasnie wprowadzono architekture Active-Active, wiec razem z round robin na DNS mozna miec i loadbalance i failover.
Do synchronizacji danych mozne DRBD?. Przed Panem jednak kilka innych powaznych problemow jak wydajnosc takiej konfiguracji. Glownym problemem z tego co wiem jest synchronizacja danych pomiedzy serwerami, jesli zmieniaja sie zbyt intensywnie (w konfiguracji dla dwoch NAS mam crossa miedzy i dziala fajnie przy 1000Mbps). DRBD jest jak open source, komercyjny support: 2-6tys euro.
Kiedys uzywalem PolyServe. Dosc fajne ale niestety koszmarnie drogie rozwiazanie, nie tylko w sensie licencji, ale tez dlatego ze SAN jest jednym z wymogow.. Za to wspieral tez Windowsa i mial lepsze narzedzia do konfiguracji, no i system plikow wspieral klastry w roznych konfiguracjach.
Ogolnie polecam lekture rozwiazan klastrow HA.
Daniel Dominik Rudnicki

Daniel Dominik Rudnicki nie takie IT
straszne jak je
maluja

Temat: Loadbalancing i failover pomiędzy dwoma datacenter

ja pozwole sobie wskazac kluczowe punkty
- czy wchodzi w rachube loadlanacing IP na poziomie ISP
- czy dwa datacenter w stanie active-active
- jakie sla, czy czas przelaczenia

jesli wersja najprostsza to moze po prostu replikacja na poziomie baz danych i np
Slony lub 'Pgpool - a connection pooling/replication server for PostgreSQL'
Stanisław P.

Stanisław P. Software designer

Temat: Loadbalancing i failover pomiędzy dwoma datacenter

postgres -> chyba mają jakiś system replikacji multi-master? slony, pgcluster? po stronie samej aplikacji nic nie powinno się zmienić - komunikuje się tylko z serwerem lokalnym

http -> no tutaj to jest problem... heartbeat i owszem, ale jego failover działa tylko jak masz te same ip w jednej podsieci. A dokładniej - jeśli możesz zmienić routing tak, że ruch do ip X możesz dowolnie przekierować do jednego z serwerów (rozwiązanie typu odwrotny VRRP). Jeśli lokacje są rozdzielone fizycznie, inni providerzy, etc. to nie wiem co można zrobić w sumie... Reverse proxy zrobi load balancing - ale nie uwolni Cię od problemu SPOF.

No i load-balancing http oczywiście przez dns - ale nie licz za bardzo na to, że jak obrócisz kolejność, to dostaniesz 50/50 rozkład. Połowa serwerów w internecie będzie sortować wpisy przy cashowaniu. Praktycznie uzyskuję 65/35 z dns'a.Stanisław Pitucha edytował(a) ten post dnia 11.03.09 o godzinie 12:14

Temat: Loadbalancing i failover pomiędzy dwoma datacenter

Daniel Dominik Rudnicki:
ja pozwole sobie wskazac kluczowe punkty
- czy wchodzi w rachube loadlanacing IP na poziomie ISP
na 90% nie serwery są kolokowane ale o szczegóły będę dopiero się dowiadywał
- czy dwa datacenter w stanie active-active
tak
- jakie sla, czy czas przelaczenia
cóż, datacenter nie padają zbyt często więc sądzę ze 5 min byłoby całkowicie akceptowalne :)


jesli wersja najprostsza to moze po prostu replikacja na poziomie baz danych i np
Slony lub 'Pgpool - a connection pooling/replication server for PostgreSQL'
mam tylko pytanie, jak wygląda to w wypadku gdy będzie split pomiędzy masterami (np. z jakiegoś powodu brak komunikacji między dwoma data center) i jak wygląda resynchronizacja gdy np jeden z serwerów zostanie wyłączony na jakiś czas

co do DNS loadbalancing, lepszego rozkładu bym się nie spodziewał :)Mariusz Gronczewski edytował(a) ten post dnia 11.03.09 o godzinie 12:29
Daniel Dominik Rudnicki

Daniel Dominik Rudnicki nie takie IT
straszne jak je
maluja

Temat: Loadbalancing i failover pomiędzy dwoma datacenter

jesli active - active to kluczowa kwestia jest replikacja baz i ciaglas danych
tutaj moze warto pomyslec na replikacja poprzez slony a powyzej jako proxy (na wszeliki wypadek) pqpool (tez moze duplikowac kazdy insert na wiele backendow)

a co do dns to chyba tak ... jeden ip dla serwera i jeden dla portalu / aplikacji (najlepiej rozne klasy)

i chyba niekoniecznie dns loadbalancing (na poziomie zduplikowania adresow IP w zonie i RR algorytm) a dwa odrebne pliki strefy na serwerze dns ktory testuje dostepnosc datacenter (troche automatyki ale 5min da sie zrobic)

'bezkosztowo' mozna to zrobic i nawet ciekawie oskryptowac ;)

Temat: Loadbalancing i failover pomiędzy dwoma datacenter

W sumie to jedyne o co się martwię to sync między bazami danych. Co do Slony, a to nie jest tylko master-slave ? W sumie to potrzebny mi jest master-master (pgpoolII wyglada obiecujaco) ale jak wygląda resynchronizacja baz w wypadku gdy jeden z serwerów zostanie dołaczony na jakiś czas, ma ktoś jakieś doświadczenia z tym ?Mariusz Gronczewski edytował(a) ten post dnia 11.03.09 o godzinie 13:30
Daniel Dominik Rudnicki

Daniel Dominik Rudnicki nie takie IT
straszne jak je
maluja

Temat: Loadbalancing i failover pomiędzy dwoma datacenter

Mariusz Gronczewski:
jak wygląda resynchronizacja baz w wypadku gdy jeden z serwerów zostanie dołaczony na jakiś czas, ma ktoś jakieś doświadczenia z tym ?

hmmm na 99,9999999% niezawodnym serwerze dns robisz proby GET angazujace zapytania o serial z bazy danych (odpowiedzi ograniczone tylko do adresu ip serwera dns) i porownujesz a potem wystawiasz jakis prosty plik po http czy tez rsync cos wymuszasz na spoznijacym sie serwerze albo same serwery webowe testuja siebie nawzajem ....

ale ... nie powinienes tak robic ;-) lepiej master -> slave i pgpool ktore wiec ze select na oba a insert lepiej na jeden i unikniesz sytuacji gdy oba serwery beda online a padnie dns balancer i czesc klientow zrobi np zakupy w jeden bazie a czesc w drugiej.
wtedy jedna z baz bedzie RO a jesli awaria powazna to sam przepniesz co i jak trzeba, narazie pgsql nie ma wbudowanej replikacji i chociaz slony jest okoloprojektowy to nie jest to buildin rozwiazanie :)

Temat: Loadbalancing i failover pomiędzy dwoma datacenter

Czyli po prostu wysyłać inserty do jednego serwera a selecty brać z tego który jest lokalny ?

czyli jak rozumiem:
1) pada master server, slave zostaje promowany na master, a jak poprzedni master wróci to podłacza sie jako slave
2) pada slave server, ciągnie updaty z mastera a po syncu uruchamia appa.

Jedyne o co się martwię to sytuacja że oba serwery tracą ze soba kontakt (błąd w konfiguracji VPNa czy jakiś problem z połączeniem) a klienci nadal uzywają appa bo w takim przypadku powstałoby dwóch masterów.
Daniel Dominik Rudnicki

Daniel Dominik Rudnicki nie takie IT
straszne jak je
maluja

Temat: Loadbalancing i failover pomiędzy dwoma datacenter

dokladnie tak a najlepiej aby jeden na szybszym laczu / pewniejsze datacenter desygnowany byl na podstawowy i zazwyczaj byl masterem jesli on padnie to drugie DC staje sie master i wystawia po www np /jamci_master.txt i jaki timestamp

a na masterze do crona i rc_scriptow dodac testy co z drugim dzieje sie i wymusic synca i wtedy dopiero udostepnic baze informujac slave aby wrocil do swojej roli ...

lub wersja bez pseudoautomatyki i skryptow ... master dc pada w secondary masz tryb RO i juz

Temat: Loadbalancing i failover pomiędzy dwoma datacenter

przy loadbalancingu przez DNS i tak jeden bedzie bardziej obciążony więc master leżałby na tym mniej obciążonym i by starczyło :)

konto usunięte

Temat: Loadbalancing i failover pomiędzy dwoma datacenter

Jedyne o co się martwię to sytuacja że oba serwery tracą ze soba kontakt (błąd w konfiguracji VPNa czy jakiś problem z połączeniem) a klienci nadal uzywają appa bo w takim przypadku powstałoby dwóch masterów.

Musisz miec element trzeci, ktory monitoruje pozostale dwa z niezaleznej lokalizacji i w razie split-brain decyduje, ktora maszyna przechodzi w tryb slave a ktora pozostaje masterem. Problem nie jest trywialny.

Daniel podpowiedzial Ci juz rozwiazanie.

Wiecej pomyslow znajdziesz w ksiazkach:
Karl Kopper; The Linux Enterprise Cluster; No Starch Press, 2005
Evan Marcus, Hal Stern; Blueprints for High Availability; John Wiley & Sons, 2003

Temat: Loadbalancing i failover pomiędzy dwoma datacenter

Tak naprawdę trzeba by mieć trzy serwery składające się na klaster aby w przypadku split-brain zrobiły głosowanie i aktywna stała się ta część klastra, która ma dwa elementy.

Temat: Loadbalancing i failover pomiędzy dwoma datacenter

tak by rzeczywiście było najlepiej ale klient ma dwa serwery w różnych częściach polski i muszę działać na tym co mam :)

Chociaż config 2 serwery + monitor tez by się sprawował nieźle, wtedy

1.Moniotr widzi 2 serwy, serwy raportuja brak połączenia miedzy sobą to wyłącza slave
2.Master serwer nie widzi ani monitora ani drugiego serwa to wyłącza bazę danych i czeka aż drugi serwer wróci, jeżeli drugi jest masterem przełącza się w tryb slave, jeżeli drugi serw jest dalej slave to odpala sync.
2.Slave serwer nie widzi nic, przełącza się w tryb readonly i cczeka na mastera żeby zrobić sync
3. Monitor pada, serwery dalej działają tak jak działały, tyle że jak któryś z nich padnie, drugi się też wyłącza żeby uniknąć split-brain
Rafał S.

Rafał S. Czasami I. Czasami
T.

Temat: Loadbalancing i failover pomiędzy dwoma datacenter

Z chęcią dowiedziałbym się kto wymyślił te wymagania do zrobienia takiego failover w którym czas dostępu, przełączenia i dostępności był taki niski (piszesz 5min - cholernie wysokie SLA)
Ja tylko mogę powiedzieć, że jak zaprojektowałem ostatnio wysokodostępne rozwiązanie(w SLA 99,999% dostępności hehe) dla 5 serwerów windows server z bazami danych SQL i serwisami WWW to koszt wyszedł minimum 300tys zł.

Także pamiętaj, jeśli już to zrobisz to dobrze to wyceń.

A open source:
DRBD, DynDNS, Heartbeat i odpowiednie reguły ratujące przed split brain. Da się to zrobić i z chęcią się dowiem jak ci poszło.

PS. W tym przypadku ktoś z biznesu dał ci wymagania nie mając pojęcia co chce uzyskać :) Takie mam wrażenie...Rafał S. edytował(a) ten post dnia 30.03.09 o godzinie 22:03

Temat: Loadbalancing i failover pomiędzy dwoma datacenter

To też jest częścią problemu ;] Ale po uszczegółowieniu wyszło że im chodzi o przełączenie w razie awarii serwera (czyli jak serwer A padnie to loadbalancer A wysyła żądania do serwera B albo robi 301 na adres drugiego serwera) + przełączenie DNSów jeżeli łącze w którejś serwerowni by siadło.

Jak skończę to pewnie opisze to na blogu, projekt zapowiada się ciekawie :)

Edit: pytanie i ich odpowiedź z wstępnych negocjacji:
Jakie są wymagania dotyczące czasu po którym ma zaskoczyć failover w
przypadku całkowitego odcięcia jednego data center?

On line. Takie funkcje są w content switch. Potrafi on przełączyć nawet sesje użytkowników, przy odpowiedniej konfiguracji.
Klient nie powinien zauważyć awarii jednego serwera.

Trochę im się pomieszała terminologia ;)Mariusz Gronczewski edytował(a) ten post dnia 01.04.09 o godzinie 12:19

konto usunięte

Temat: Loadbalancing i failover pomiędzy dwoma datacenter

Trochę im się pomieszała terminologia ;)

I tak, i nie ;)

Cisco CSS z serii 11500 potrafia zrobic tzw. "statefull failover". Sesja jest po prostu przenoszona na inny "serwer" i stamtad kontynuowana. Wszystko jedno gdzie ten drugi "serwer" stoi. Uzytkownik nie ma o niczym pojecia.

Do takiej zabawy potrzebne sa minimum 2 x CSS11501/11503, w okolicach $7/12k za sztuke...

Temat: Loadbalancing i failover pomiędzy dwoma datacenter

Ale to się tyczy loadbalancera tak ? Im chodziło o awarie serwera aplikacyjnego, nie loadbalancera./

«

SNMP

|

Szkolenia

»


Wyślij zaproszenie do