Jakub Rajchowiak

Jakub Rajchowiak właściciel,
Rajchowiak.com

Temat: klastry a aplikacja w php

Witam,

szukam obecnie jakichs materialow na temat tworzenia klastrow. Chodzi dokladnie o uruchomienie aplikacji napisanej w phpie na kilku serwerach jednoczesnie aby zwiekszyc niezawodnosc aplikacji oraz zwiekszyc jej wydajnosc.

Obecnie czysto teoretycznie podchodze do sprawy bo musze ubezpieczyc sie na przyszlosc.

Czy ktos mial z tym do czynienia i ma godne polecenia metrialy polsko lub anglojezyczne??
Radek Baczyński

Radek Baczyński GoldenLine.pl

Temat: klastry a aplikacja w php

Uruchamianie aplikacji php na wielu maszynach jest stosunkowo proste. Musisz zabdać o kilka rzeczy:

* load balancer - tu sprawdzi się nginx, do pewnego poziomu ruchu
* właściwe aplikacje php - apache uruchomione na oddzielnych serwerach wykonujące kod php(ew. same procesy fcgi - zapoznaj się z php-fpm)
* memcache jako handler do sesji - sesje zapisywane są przez serwery aplikacji w e wspólnym memcache przez co są współdzielone.

Zupełnie innym zagadnieniem jest skalowanie baz danych, tutaj najprostsza będzie replikacja(niestety skalujesz tylko odczyt), sharding lub jakiś NoSQL (casandra, mongodb, couch) - to już jest temat na inny post, bo skalowanie baz jest dużo trudniejsze, choć dzięki NoSQL, zaczyna się to zmieniać.

To co Ci napisałem o skalowaniu php świetnie sprawdza się w Goldenie.
Paweł Kalisz

Paweł Kalisz Web & mobile
developer

Temat: klastry a aplikacja w php

Podłączam się pod prośbę Jakuba odnośnie ewentualnych materiałów, bo ten temat ciekawi mnie od dawna, ale jakoś nigdy nie mogłem się zebrać, żeby coś takiego postawić ;)
Tomasz Zadora

Tomasz Zadora programuję

Temat: klastry a aplikacja w php

Loadbalancing i klastry to nie jest dokładnie to samo :)

Generalnie - klaster to grupa maszyn która jest w stanie określone zadanie wykonywać równolegle.

Największy klaster na świecie to komputery internautów połączone w celu poszukiwania życia - projekt SETI. Jeszcze inaczej pisząc: jeżeli masz określone zadanie do wykonania które zajmuje mnuuuuuustwo czasu i jesteś je w stanie rozbić na mniejsze części - to rozbijasz je i wysyłasz te cząstki do poszczególnych nodes/komputerów klastra które po wykonaniu obliczeń zwrócą je z powrotem.

Tutaj np. projekt OSCAR rozwijany od kilku lat, służący do tworzenia klastrów typu Boewulf:

http://svn.oscar.openclustergroup.org/trac/oscar/wiki

Natomiast Loadbalancing to równomierne rozkładanie żądań na grupę maszyn. Każda maszyna (najczęściej) całe zadanie wykonuje niezależnie od innych. Typowe zastosowanie to odbiór requestu HTTP przez loadbalancera i przekazanie go do jednej z maszyn (jest jeszcze kwestia synchronizacji sesji - sticky sessions etc.).

Jeżeli kogoś interesuje różnica między loadbalancingiem a klastrami polecam szukać "Clustering vs loadbalancing" w wyszukiwarkach, to co ja napisałem to też uproszczenie.Tomasz Zadora edytował(a) ten post dnia 05.06.10 o godzinie 17:37
Paweł Kalisz

Paweł Kalisz Web & mobile
developer

Temat: klastry a aplikacja w php

Jeśli chodzi o mnie to mnie ta cała zabawa interesuje w kontekście rozłożenia obciążenia przy dużych portalach. Z tego co napisałeś wnioskuję, że chodzi o load balancing, tak?
Tomasz Zadora

Tomasz Zadora programuję

Temat: klastry a aplikacja w php

Tak - loadbalancing to jest to co powinno nas interesować w kontekście rozłożenia ruchu w serwisie internetowym.

Wyjaśniając jeszcze obrazowo różnicę:

Teoretycznie na klastrze JEDEN request http mógłby być RÓWNOCZEŚNIE przetwarzany przez KILKA maszyn/nodes.

Natomiast przy loadbalancingu każdy JEDEN request http jest przetwarzany indywidualnie przez JEDNĄ maszynę.Tomasz Zadora edytował(a) ten post dnia 05.06.10 o godzinie 17:49
Paweł Kalisz

Paweł Kalisz Web & mobile
developer

Temat: klastry a aplikacja w php

Ok, załóżmy, że chcę postawić duży portal i spodziewam się sporej liczby użytkowników i odwiedzin. Jakie specjalne muszę poczynić, żeby coś takiego postawić? Czy wiążą się z tym jakieś inne standardy kodowania w samym php? Czy da się coś takiego zasymulować przy pomocy apache'a, mysql'a i virtualBox'a??

konto usunięte

Temat: klastry a aplikacja w php

Tak jak napisal Tomasz. Generalnie jest to bardzo ciekawy temat. Kazdemu zainteresowanemu polecam ksiazke 'Skalowalne witryny internetowe', gdzie jest sporo wytlumaczone w temacie load balancingu zarowno hardware'owego jak i software'owego a takze optymalizacji baz, roznych rodzajow algorytmow rozkladania obciazenia na chunk-servery, itd.

Skoro load balancing to obsluga glownie requestow do serwera, to mysle ze nie trudno wywnioskowac czy trzeba zmieniac "standardy kodowania" cokolwiek przez to rozumiesz :)

A zasymulowac mysle, ze da rade - jesli chodzi o balancing software'owy.
Łukasz Gajos

Łukasz Gajos Starszy programista
PHP

Temat: klastry a aplikacja w php

Przykladowe rozwiazania gigantow w IT jesli chodzi o ruch http://highscalability.com/blog/category/example Poniewaz czesto baza danych jest waskim gardlem to dobrze ja odpowiednio zoptymalizowac http://www.mysqlperformanceblog.com/

Generalnie wszystko zalezy od skali, czasami wystarczy dwie maszyny i load balancing na poziomie http, czasami trzeba kombinowac wiecej, na highscalability.com jest sporo bardzo ciekawych rozwiazan wykorzystanych w praktyce.Łukasz Gajos edytował(a) ten post dnia 06.06.10 o godzinie 07:31
Jakub Rajchowiak

Jakub Rajchowiak właściciel,
Rajchowiak.com

Temat: klastry a aplikacja w php

no i dlatego nie moglem niz znalezc konkretnego bo zle szukalem. Jak widac mi tez chodzi o load balancing a nie klastering. Ksiazke "Skalowalne witryny internetowe" posiadam i wlasnie niedawno zaczalem czytac ostatnie rozdzialy na temat skalowania itd. Choc jest to czysto teoretyczny wyklad jak narazie i nie doszukalem sie jeszcze load balancingu. Ale dzieki wielkie za podpowiedz bo wiem juz czego szukac.
Robert B.

Robert B. Web Development
Manager

Temat: klastry a aplikacja w php

Paweł Kalisz:
Ok, załóżmy, że chcę postawić duży portal i spodziewam się sporej liczby użytkowników i odwiedzin. Jakie specjalne muszę poczynić, żeby coś takiego postawić? Czy wiążą się z tym jakieś inne standardy kodowania w samym php? Czy da się coś takiego zasymulować przy pomocy apache'a, mysql'a i virtualBox'a??
Generalnie, to balansowanie ruchem możesz za symulować na jednej maszynie bez wirtualizacji, wystarczy uruchomić serwery WWW na różnych portach - choć testów wydajnościowych w takiej konfiguracji nie przeprowadzisz.

Najpierw zdefiniuj co to znaczy duża liczba użytkowników, bo jeśli to jest 100 tys UU, bez balansowania ruchem możesz taki ruch obsłużyć - ale jeśli użytkownicy nie logują się na portalu, albo liczba stron spersonalizowanych nie jest za duża.
Bartłomiej Ogryczak

Bartłomiej Ogryczak Backend Developer @
Layar

Temat: klastry a aplikacja w php

http://highscalability.com -- aczkolwiek PHP na klastrach? Chyba raczej na farmie niezależnych serwerów.
Wojciech Soczyński

Wojciech Soczyński Programista
eksplorator -
blog.wsoczynski.pl

Temat: klastry a aplikacja w php

Ja polecam zapoznać się z Gearmanem, jest to soft do wykonywania obliczeń rozproszonych, jest też PHP-owe rozszerzenie do tego, manual - http://pl2.php.net/manual/en/book.gearman.php .

Dzięki Gearmanowi możemy podzielić nasza aplikacje na kawałki i wykonywać je na różnych maszynach w klastrze.

konto usunięte

Temat: klastry a aplikacja w php

Sam nie testowałem, ale podobno do skalowania sprzętowego najelpszy będzie Eucalyptus. Jeżeli zabraknie nam pary na święta, można na sobie w każdej chwili dokupić moc obliczeniową na Amazonie :)

Do kompletu autoskalowanie PHP za pomocą Scalr.Maciej Chałapuk edytował(a) ten post dnia 11.06.10 o godzinie 14:09
Michał Sznurawa

Michał Sznurawa Scala Developer

Temat: klastry a aplikacja w php

Jakub Rajchowiak:
no i dlatego nie moglem niz znalezc konkretnego bo zle szukalem. Jak widac mi tez chodzi o load balancing a nie klastering. Ksiazke "Skalowalne witryny internetowe" posiadam i wlasnie niedawno zaczalem czytac ostatnie rozdzialy na temat skalowania itd. Choc jest to czysto teoretyczny wyklad jak narazie i nie doszukalem sie jeszcze load balancingu. Ale dzieki wielkie za podpowiedz bo wiem juz czego szukac.
...bo load balancing był w połowie książki;) Popatrz na indeks na końcu. Co do "teoretyczności" - "Skalowalne..." czytałem rok temu, i z tego co pamiętam, było sporo "życiowych" przykładów (m.in. z flickra) + nazwy programów/sprzętu pozwalających rozwiązywać konkretne problemy, więc chyba taki teoretyczny moment po prostu trafiłeś.

Następna dyskusja:

aplikacja webowa (php+MySQL...




Wyślij zaproszenie do