Load balancing dla CDN

Na jednym forum padło pytanie o load balancing dla CDN (Content Delivery Network) i wybór pomiędzy RRDNS (Round Robin DNS) a „ręcznym” balansowaniem requestów na webserwerze. Jako, że miałem prawie identyczny dylemat w przesłości postanowiłem napisać o tym kilka zdań.

[ad#post]Rozwiązania load balancingu opierające się na DNS nie są raczej stosowane jako główne balancery dla rozwiązań produkcyjnych, chociażby z powodu nieznanego procentu cachowanych zapytań do DNS serwera czego wynikiem może być kierowanie 90% zapytań do tego samego IP podpiętego do load balancera. Niestety jest to skutek uboczny cachowania zapytań przez inne serwery DNS, często ignorujące TTL naszego DNS’a – rozwiązania oparte o DNS stosowane są czasami dla webserwerów leżących w innych strefach geograficznych, tak aby kierować zapytania do najbliższego geograficznie serwera. Tak czy inaczej, DNS’owy load balancer nie był przeze mnie brany pod uwagę, starałem się raczej zapewnić rozproszenie requestów bez instalacji dodatkowego oprogramowania i sprzętu.

Zakładamy zatem, że mamy 3 serwery CDN na subdomenach domeny głównej i trzymamy na nich statyczne pliki dla serwisy na głównym webserwerze i musimy rozdzielić równo ruch pomiędzy tymi CDN’ami. Najprostsze rozwiązanie, które przyszło mi do głowy to wykorzystanie do tego PHP i memcache. Dodałem zatem do frameworka procedurę, która dla każdego requesta sprawdza aktualny licznik przekierowań dla każdego serwera CDN i wybiera ten z najniższą liczbą – dane przechowywane są w tablicy PHP jako wartości memcache co zapewnia szybki dostęp. Cała implementacja zajęła ok 10 minut

źródło: działalność gospodarcza, zegarki morgan, http://viagra-pfizer.org/tag/alkohol/, zapomoga, olej rycynowy na wrzody

Powiązane wpisy:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>