Strona 1 z 2
Klaster NLB dla serwera Apache i bazy MySQL
: 17 czerwca 2013, 19:15
autor: mathrix
Witam forumowiczów.
Potrzebuję zrobić klaster wydajnościowy dwóch serwerów na Debianie Squezee.
Na obecnym serwerze pracuje Apache ze stroną www i MySQL z bazą pod tą stronę. Zadanie jest takie, żeby większa liczba użytkowników nie miała problemu z korzystaniem ze strony.
Robiłem to kiedyś laboratoryjnie na Windows Serwer 2008, ale to zupełnie inna bajka.
Moglibyście podpowiedzieć mi jakieś rozwiązania? To co udało mi się znaleźć w sieci to jakieś artykuły i posty sprzed 5 i więcej lat, do tego niekoniecznie podchodzące pod moje zadanie. Może jakaś książka, artykuł w miarę świeży w gazecie, którą można jeszcze kupić/odkupić.
Generalnie szukam PEWNEGO punktu zaczepienia, gdzie już wgłębiając się w temat z pewnością osiągnę swój cell.
Pozdrawiam.
: 17 czerwca 2013, 19:46
autor: lun
Polecam zapoznać się z tematem klastrów w oparciu o Pacemaker
http://clusterlabs.org/. W manualu jest w miarę fajnie opisany przypadek właśnie apache ze współdzieloną przestrzenią dyskową. Sam się za to nie zabierałem, bo jednak konfiguracja wygląda na skomplikowaną.
Drugą opcją jest Redhat-cluster-suite, znacznie prostsze w konfiguracji, z webowym managementem. Paczki masz w repo.
: 17 czerwca 2013, 20:13
autor: mathrix
RedHat odpada, bo w OVH dają mi Debiana, a szkoda. Poza tym serwis pracuje teraz na Debianie, więc trzeba by było jeszcze raz wszystko od początku instalować.
Poczytam o Pacemaker, zobaczymy, może akurat.
Tymczasem może ktoś ma jeszcze jakieś inne wskazówki?
: 17 czerwca 2013, 20:50
autor: lun
A kto powiedział że masz cokolwiek przenosić na RedHata?
http://packages.debian.org/stable/admin ... ster-suite
: 17 czerwca 2013, 20:56
autor: mathrix
Świetnie.
Druga sprawa:
Mam dedykowany serwer na OVH i do zrobienia klastra oczywiście potrzebny będzie drugi taki.
Teraz pytanie, czy muszę dodatkowo wykupywać u nich usługę 'wirtualnej szafy' i ruter równoważenia obciążenia CISCO? Czy mogę to wszystko załatwić już na poziomie samego OS`u?
Trzecia sprawa:
Serwis www który aktualnie wisi na serwerze w OVH, jest serwisem dynamicznym, z CMS`em, bazą danych itd.
W jaki sposób najlepiej/najtaniej sklastrować takie usługi? Będę musiał dokupować jeszcze 3ci serwer pod magazyn danych (ang. storage) i MySQL, czy da się jakoś zsynchronizować dane, które będą fizycznie na obydwu serwerach?
: 18 czerwca 2013, 08:52
autor: lun
Do pytania drugiego się nie odniosę, bo nie znam zupełnie OVH ani ich usług.
Co do trzeciego, to nie da się tak prosto odpowiedzieć na to pytanie.
Wszystko zależy od tego, co chcesz osiągnąć. Z tego co napisałeś chcesz zrobić równoważenie obciążeniar (NLB w języku Microsoftu), ale tak naprawdę nikt z nas nie wie dlaczego. Rozumiem założenie, pewnie chcesz rozłożyć obciążenie ruchu http na dwa nody, ale czy sprawdziłeś co jest wąskim gardłem w twoim systemie? Bo być może wystarczy rozdzielić apache od mysql i to załatwi sprawę obciążenia. Ale to wróżenie z fusów.
Jeśli chodzi o magazyn danych (ang. storage), to w rozwiązaniach klastrowych stosuje się tzw. cluster's shared storage, którą można utworzyć z lokalnych dysków nodów klastra.
Masz do zgłębienia dużo wiedzy zanim zaczniesz podejmować jakieś decyzje i kupować serwery na OVH. Zrób sobie najpierw jakiś środowisko laboratoryjne na VirtualBoxie (czy czymś podobnym), postaw takie rozwiązanie i sprawdź z czym to się je.
: 18 czerwca 2013, 10:43
autor: mathrix
Wczoraj właśnie uruchomiłem VMWare i zacząłem zabawę.
Wąskich gardeł niestety nie znam. Porobiłem testy wydajnościowe serwisu softem JMeter, ale niestety nie potrawie zinterpretować wyników. Wrzuciłem je na forum i od dwóch dni zero odpowiedzi
threads/28987-Pomoc-w-interpretacji-wynik%C3%B3w-JMeter
Robiłem też testy innymi rozwiązaniami np. Webstress Tool, ale wyniki były nie jednoznaczne, poza tym testy wykonywane z mojego laptopa. Jakieś piki ogromne w czasach odpowiedzi, potem powrót do normy, żeby znów zapikować do 35sec. A test robiony tylko dla 500
wirtualnych użytkowników.
Co chcę osiągnąć? Zwiększenie wydajności w zakresie obsługi większej ilości
użytkowników w jednostce czasu. Sam serwis działa szybko i wydajnie, ale jak wejdzie na niego więcej użytkowników to nie wiem jak się zachowa, a nie mogę sobie pozwolić na ,,outage''.
: 18 czerwca 2013, 21:13
autor: lun
Nie jestem specjalistą od tego typu spraw, więc interpretacji wyników JMetera się nie podejmę (jak rzuciłem na nie okiem, to są czarną magią).
Ale podejrzewam, że ludzie zrzeszeni wokół tego programu na pewno pomogą w tym bardziej niż my.
Co do twojego zagadnienia głównego, to szczerze mówiąc zrobił bym wszystko na początku metodą, nazwijmy to, chałupniczą - czyli symulacją zwiększonego ruchu, ale pomiarami własnymi nie JMetera. Startujesz test, dajesz top, vmstat, iostat itp. i sprawdzasz czy procek daje radę, czy procesor nie czeka na odczyt/zapis dysku, czy pamięć się nie kończy, czy nie wysycasz tym ruchem całego pasma jakie masz na tym serwerze. Jeśli wykluczysz problemy po tej stronie (hardware/vhardware), to znaczy że samo rozwiązanie programowe może być źle napisane i np. CMS lub interfejs webowy czeka długo na wykonanie jakiegoś zapytania do bazy itp.
Nie wiem jakie granice obciążenia chcesz osiągnąć i ile zapytań obsłużyć, ale ~400 użytkowników z apache i mysqlem opędzam na maszynie wirtualnej 2vCPU, 2GB VRAM. Więc zbadaj najpierw czy rzeczywiście musisz swoje rozwiązanie klastrować.
: 18 czerwca 2013, 21:34
autor: mathrix
Widzisz, problem z tymi pomiarami jest taki, że jak puszczę JMeter i dam htop na serwerze, to nawet przy 5
wirtualnych
użytkownikach proce
sor pracuje na 100%. Przy innych programach do testowania już wygląda to zgoła inaczej, ale i tak jak na serwer z Xeonem grubo ponad 3GHz, dyskami SSD i 24GB ramu, wyniki
zadowalające nie są. Chyba, że wina leży po stronie mojego laptopa, który nie daje rady generować tak dużo zapytań (ograniczenia karty sieciowej może...). Z kolei jak korzystałem z jakiejś strony gdzie można wykonać taki i wyniki są CZYTELNE, to widzę piki już przy 200 aktywnych klientach, którzy w ciągu około 5 minut wygenerowali mi około 47000
zapytań.
Wyniki tu:
http://loadimpact.com/load-test/www.421 ... a3ee77be7e.
Odnośnie kodu strony, wierzyć mi się nie chce, że coś tam może być zepsute, robili to profesjonaliści, a nie studenci za 5 puszek zimnego żywca. Znam ich osobiście, więc wiem, że tam lipy nie ma. Bardziej nie wierzę tym testom, jak ich oprogramowaniu.
Jeżeli chodzi o klastrowanie, to chcę to zrobić chociażby na maszynach wirtualnych, żeby w końcu mieć to już za sobą, zrobione, przećwiczone, wiem co mnie może czekać.
: 19 czerwca 2013, 09:16
autor: lun
Coś mi się nie chce wierzyć, że 5 wirtualnych użytkowników zabija procesor na 100%?
Uruchom JMetera, a na serwerze:
i wklej wynik.
Na marginesie tematu:
Odnośnie kodu różnych rozwiązań to ja nie twierdz,ę że coś u Ciebie jest źle napisane, tylko zaznaczam, że poważny debug niedomagania może objąć również i tą część zagadnienia.
Jeśli natomiast chodzi o profesjonalistów, to widziałem już takie cuda pisane przez jedne z większych firm informatycznych w Polsce, że można by niezłe dowcipy na tej podstawie stworzyć. A potem siedzieli programiści ode mnie z firmy, zarabiający 30% tego co profesjonaliści i poprawiali kod aplikacji żeby wszystko miało ręce i nogi
