wyszukiwanie:

na ten temat

AKTUALNOŚCI

PORADY

TESTY

WIDEO

powiększ tekst >
AKTUALNOŚCI

Jak zapewnić wydajność i dostępność strony internetowej?

25 sierpnia 2008 16:13

Kamil Folga
Prowadzę stronę internetową, która w ostatnim okresie notuje znaczne zwiększenie liczby odwiedzin. W momentach najwyższego obciążenia, serwer obsługujący stronę odmawia odpowiedzi na zapytania. Chciałbym zainwestować w kolejne serwery i zrealizować mechanizm balansowania obciążeniem serwerów. Czy jest na to prosta metoda?

Zasoby każdego serwera są ograniczone. Aplikacja lub strona WWW o dużym obciążeniu, powinna wykorzystywać nie jeden, a wiele serwerów w celu zaakceptowania zwiększonej liczby użytkowników. Problem skalowalności dotyczy głównie serwerów internetowych, w których liczba użytkowników rośnie wraz z dostępnością łącz szerokopasmowych. Balansowanie obciążeniem to partycypowanie wielu serwerów w tej samej usłudze, realizujących te same zadania. Przy dużej ilości maszyn zawsze istnieje ryzyko uszkodzenia jednego z serwerów. Zdolność poprawnego funkcjonowania w momencie błędnego zadziałania usługi określa się mianem dostępności.

Najłatwiejszą drogą do wprowadzenia balansowania obciążeniem jest dedykowanie serwerów predefiniowanym grupom użytkowników. W podstawowej konfiguracji serwera nazw, domena jest rozwiązywana przez serwer na jeden adres IP. Co stanie się, gdy dana nazwa będzie rozwiązywana na kilka adresów IP, czyli kilka fizycznych serwerów? Otrzymamy prosty i skalowalny mechanizm balansowania obciążeniem. Przykładową metodą realizującą te założenia jest mechanizm Round Robin DNS. Wykorzystując RR DNS użytkownicy będą otrzymywali różne adresy IP dla tej samej nazwy serwera. Jak ten proces wygląda od strony użytkownika? Spróbujmy zapytać o rekordy typu A powiązane z domena google.com:

dns:~# host -t a google.com
google.com has address 72.14.207.99
google.com has address 64.233.187.99
google.com has address 64.233.167.99

Sprawdzamy ponownie po kilku sekundach:

dns:~# host -t a google.com
google.com has address 64.233.187.99
google.com has address 64.233.167.99
google.com has address 72.14.207.99

W przypadku serwera BIND możemy zrealizować identyczną usługę przez wprowadzenie następującej konfiguracji w ramach strefy danej domeny:

www IN CNAME serwer1.domena.pl.
IN CNAME serwer2.domena.pl.
IN CNAME serwer3.domena.pl.
IN CNAME serwer4.domena.pl.

Serwer DNS będzie rozwiązywał nazwę www.domena.pl rotacyjnie na jeden z wielu wprowadzonych konfiguracyjnie serwerów (serwer1.domena.pl, serwer2.domena.pl, serwer3.domena.pl, serwer4.domena.pl). W rezultacie użytkownicy będą kierowani na różne fizycznie serwery. To jest bardzo popularna metoda równoważenia obciążenia, ale nie zapewnia wymaganej dostępności. Serwer DNS nie ma informacji o dostępności serwera WWW, więc kontynuuje przełączanie nawet na niedostępne serwery.

Trudno w tym przypadku mówić o wysokiej dostępności. Można powiedzieć, że tym sposobem realizowana jest dystrybucja obciążenia. Niektóre z tych niedogodności mogą zostać usunięte przez implementację zaawansowanej wersji mechanizmów DNS, realizowanych przy wykorzystaniu dodatkowych skryptów. Konieczne będzie okresowe sprawdzanie statusu każdego z serwerów i przełączanie na poprawnie pracujące serwery w przypadku awarii. Dodatkową komplikację będzie stanowiła konieczność ustawienia krótkiego czasu TTL danej strefy, po upływie którego klient powinien jeszcze raz odpytać serwer nazw o daną domenę. Taka konfiguracja powoduje jednak znaczne zwiększenie obciążenia serwera nazw.

Niektóre odmiany mechanizmów równoważenia obciążenia mogą zostać przeprowadzane przy wykorzystaniu serwerów pośredniczących (proxy), w których są one wykorzystywane do balansowania ruchem rzeczywistych serwerów.

Zaawansowane rozwiązania oparte są o sprzętowe mechanizmy balansowania obciążaniem oraz realizację wirtualnych serwerów. Wśród niekomercyjnych rozwiązań bardzo popularnym rozwiązaniem jest LVS. Linux Virtual Server jest wirtualnym i skalowalnym serwerem zbudowanym w oparciu o klaster rzeczywistych serwerów. Oprogramowanie zawierające wbudowany mechanizm balansowania obciążeniem jest dedykowane dla systemu operacyjnego Linux. Architektura serwera jest w pełni przeźroczysta dla końcowego użytkownika. Rzeczywiste serwery mogą być połączone zarówno przez sieć LAN oraz WAN. Od strony użytkownika widoczny jest jeden serwer z jednym adresem IP. Skalowalność systemu jest realizowana przez przeźroczyste dodawanie i usuwanie węzłów klastra. Wysoka dostępność jest realizowana przez węzły wykrywające usterki, a następnie automatycznie rekonfigurujące system. Istnieje wiele systemów zarządzania klastrami, które w połączeniu z LVM mogą zapewnić wysoką wydajność dla każdej aplikacji.

Co wybrać? W przypadku bardzo prostych rozwiązań i nieskomplikowanych stron, możemy zadowolić się mechanizmem Round Robin DNS. W przypadku zaawansowanych projektów warto wykorzystać darmowe oprogramowanie klastra typu LVS. Najbardziej zaawansowane rozwiązania będą oparte o kompilację opisanych metod oraz rozwiązania sprzętowe.

Wystaw ocenę:
   Średnia ocena (liczba głosów: 1)
wydrukuj wydrukuj wyslij do znajomego wyślij do znajomego rss

Komentarze

Redakcja NetWorld nie ponosi odpowiedzialności za wypowiedzi Internautów opublikowane na stronach serwisu oraz zastrzega sobie prawo do redagowania, skracania bądź usuwania komentarzy zawierających treści zabronione przez prawo, uznawane za obraźliwie lub naruszające zasady współżycia społecznego. Osoby zamieszczające wypowiedzi naruszające prawo lub prawem chronione dobra osób trzecich mogą ponieść z tego tytułu odpowiedzialność karną lub cywilną.

bonio

  • ocena: 3
  • IP: 78.8.163.56
  • 18-11-2008, 12:15

Artykuł dobry, ale ja jestem ciekaw jak to wyglada od strony np. serwera mysql czyli czy dane muszą być podzielone niezależnie na kilka serwerów np. użytkownicy jedni mają konta na serwerze jednym a innni na innym itp. Natomiast, że serwer balansuje ruch to raczej prosto sobie wyobrazić ale jak postawić 5 serwerów PHP z których byłyby dostępne wszystkie dane??

Może ktoś poruszył taki problem, ciekawe jak jest zbudowana nasza-klasa, choć tutaj łatwo sobie podzielić dane na serwery wg. użytkowników.

Linki sponsorowane

Superpromocja PC World! Jak utrzymać promocyjną cenę za egzemplarz? Sprawdź »
Dobry Pracownik wanted! 10 000 ofert pracy z kraju i z zagranicy! PRACA.IDG.PLSprawdź! »
Prenumerata MIX PC World. Wygodne połączenie wydań papierowych i cyfrowych Szczegóły »
Zamów kartę kredytową banku Millennium dostaniesz półroczną prenumeratę PC World Szczegóły »
Prenumerata PC World z DVD za darmo! Sprawdź to!
Książki teleinformatyczne w najlepszej cenie! Księgarnia IDG.pl zaprasza!
04-204 Warszawa ul. Jordanowska 12
tel.: (+48 22) 321 78 00 fax: (+48 22) 321 78 88
© copyright 2008 IDG Poland SA
logo IDG