|
3000 osób online - jak się przygotować?
Shakez - 18-10-2009 14:16
Witam. Już wkrótce stanę przed bardzo dużym zadaniem. Mianowicie będę miał uruchomić sprzęt, z którego będzie korzystało około 100 oddziałów firmy. W każdym oddziale pracuje około 30 pracowników, czyli w sumie firma ma około 3000 pracowników.
Dane te wyliczam w przybliżeniu i mogą być mniejsze ale mogą być i większe. Praktycznie 40% czasu pracy tych osób będzie polegała na komunikacji z serwerem, więc obciążenie będzie duże.
Zanim się tego podejmę chcę poznać wasze opinie na ten temat. Chciałbym usłyszeć jakie są wasze propozycje np. dotyczące sprzętu, łącza itp.
I wszystko cokolwiek chcecie mi poradzić przed rozpoczęciem takiego projektu.
Czekam na wszelkie uwagi, propozycje, podpowiedzi.
gothye - 18-10-2009 14:23
Wszystko dobrze, ale napisz coś o usługach jakie chcesz dla użytkowników udostępnić, będzie łatwiej rozpoznać wymogi maszyny oraz ISP.
Shakez - 18-10-2009 14:39
To ma być serwer www + bazy danych MySQL. Bynajmniej na razie to wystarczy.
I tu pojawia się pytanie czy bo sa przeróżne opinie - czy mysql poradzi sobie z obsługą tak wielkich baz danych?
gothye - 18-10-2009 16:23
Domyślam się że chcesz używać tego do obsługi bazy danych przez www i zależy od bazy danych ale proponowana konfiguracja: Quad x 1 ,8gb Ram i dyski w konfiguracji raid5 U320 (najwydajniejsze rozwiązanie kopii bazy danych).
Z wielkością bazy nie powinno być problemu, na podobnej maszynie mam poważnie dużą bazę w MySQL przy mniejszej ilości użytkowników i spisuje się świetnie razem z apache obciążenie poniżej 40% w szczycie. Co do ISP zależy od wielkości sieci i ale myślę, że 6-8Mbit/symetrycznie powinno wystarczyć.
lessmian2 - 18-10-2009 19:08
gothye bez urazy, ale nie podzielam Twojego zdania. Przy tych informacjach które dostarczyłeś Shakez, ciężko cokolwiek powiedzieć o sprzęcie który ma to obsługiwać, oprócz tego że jakiś sprzęt jest potrzebny.
Jeśli to ma być najważniejszy system w firmie, to automatycznie odpada konfiguracja jedno serwerowa - przy uszkodzeniu któregokolwiek z elementów maszyny cała firma stoi. Trzeba się zastanowić nad podziałem zadań na różne maszyny. Osobno serwer bazodanowy, osobno www. Zadania jakie spełniają serwery bazodanowe a www są różne i inaczej też powinny zostać skonfigurowane.
Bazy danych to przede wszystkim wydajny podsystem I/O i sporo RAM-u. Procesory nie muszą być wybitnie szybkie - lepiej żeby było ich więcej. Bez dobrego podsystemu dyskowego nie podchodź jeśli ma to działać sprawnie. Np. jakaś półka dyskowa z 14 dyskami.
Ale co do tego ma kopia zapasowa? Poza tym SCSI to przeżytek. Teraz standardem jest już SAS. gothye wiesz ile kosztuje dysk SCSI 36 GB IBM-a? Od 500$ w górę. Kupiłbyś gdyby Ci taki dysk wypadł z macierzy? Jak dla mnie lepszym rozwiązaniem jest RAID10 - łączy zalety RADI0 (szybkość) i RAID1 (niezawodność), nawet jeśli wybierzemy wersję budżetową na dyskach SATA. Nie trzeba tu też walczyć o niebotyczne pojemności, im więcej I/O tym lepiej, więc lepiej zainwestować w dużo małych dysków niż np. dwa duże.
Serwery www to natomiast szybkie procesory i trochę RAM-u. Systemy www są bardzo dobrze skalowalne wszerz - oznacza to że bez większych problemów dokładamy kolejne małe serwery, uruchamiamy ,,load balancing'' i tak dokąd nie będzie w porządku. Z bazą danych może być trudnej - bazy są skalowalne w górę - dobrze jest sobie zostawić zapas slotów na dołożenie CPU/RAM.
Koniecznie też każdy z podsystemów musi mieć maszynę zapasową - znów się kłania konieczność zapewnienia niezawodności całego systemu w przypadku padu jednego z elementów. Oczywiście nie zapominamy o replikacji/kopii danych.
Ale to tylko takie gdybanie, wszystko zależy przede wszystkim od ważności systemu i pieniędzy jakie są przeznaczone na sprzęt. Trzeba by też dokładnie wyznaczyć profil aplikacji, przeprowadzić testy itp. Bez tego ani rusz.
gothye - 18-10-2009 19:36
lessmian2 oczywiście również bez urazy, ale nie wiem ile Ty takich maszyn administrujesz ale u mnie przejąłem większość małych "firemek" z taką konfiguracją jedno serwerową gdzie klient raczej nie uśmiecha się kupić kolejnego serwera bo ,,brzęczy'' albo ,,koszt znowu...'' itp. ale rozwiązanie naprawdę dobre pod warunkiem odpowiedniej konfiguracji. Większość to serwery Della PowerEdge, które mają po ładnych parę latek za sobą i od samego początku nic się z żadnym nie stało, a jedyne o co można się martwić to dłuższy zanik napięcia sieci lub pad UPS-a.
Gdzie się zaopatrujesz, że dysk Cię tyle kosztuje?
SCSI są dyskami predysponowanymi do konfiguracji serwera SQL ze względu na osiągi i skierowanie na ciągłą pracę, a konfiguracja macierzy w raid10 na jednej maszynie to już troszkę przesada. Co innego jeśli używaną macierzą zewnętrzną. Kopia zapasowa danych obowiązkowo streamer ipt.
lessmian2 - 18-10-2009 19:54
nie wiem ile Ty takich maszyn administrujesz
To nie miejsce żeby się chwalić, ale wystarczająco dużo. Wystarczy, że przestój liczony w godzinach generuje straty rzędu tysięcy złotych.
przejąłem większość małych "firemek"
Cieszę się, że biznes się kręci, ale te "firemki" to jakiej wielkości były? Shakez wspominał o górnej granicy 3000 użytkowników pracujących na tym systemie. Nie wyobrażam sobie tego systemu na jednym serwerze.
Gdzie się zaopatrujesz, że dysk Cię tyle kosztuje?
Tyle kosztuje dysk w serwisie IBM-a. Niestety jeśli masz umowę serwisową, musisz zaopatrywać się w oryginalne podzespoły.
a konfiguracja macierzy w raid10 na jednej maszynie to już troszkę przesada
No przecież ja odradzam jedną maszynę. Wręcz pisałem o zewnętrznym magazynie na dane.
Shakez - 18-10-2009 20:36
Cieszę się, że otrzymałem tak obszerne informacje.
Ja osobiście myślałem nad dwoma osobnymi serwerami DELL jeden na bazę drugi na www. Może i wszystko na jednym by wystarczyło ale nie mogę sobie pozwolić na jakiekolwiek zamulanie. Lepiej robić coś na wyrost bo za rok lub dwa dojdzie więcej pracowników i będzie lipa.
Serwer www nastawiony na szybkie procesory, a serwer mysql na dyski.
Pokusiłbym się na tą macierz ale nigdy czegoś takiego nie używałem i szczerze mówiąc musiałbym najpierw poznać temat.
Ale ostatnie słowo i tak należy do inwestora, bo jeżeli oni nie zdecydują się na taką ilość sprzętu to będę się musiał zadowolić jednym serwerem.
Jak myślicie ile wynosiłby przybliżony koszt dwóch serwerów odpowiedniej jakości + macierz?
Tak w przybliżeniu o wystarczających parametrach sprzęt?
lessmian2 - 18-10-2009 20:53
Dell udostępnia konfiguratory on-line. Możesz sobie sprawdzić ile w przybliżeniu mogłaby kosztować odpowiadająca Ci konfiguracja. A co do macierzy, radziłbym się zastanowić.
Ister - 19-10-2009 09:13
Skąd Twoje pytanie o MySQLa? Czy dopiero będzie tworzone oprogramowanie? Jeśli tak to gorąco polecam od razu pisać pod Postgresa. Natomiast jeśli oprogramowanie już istnieje to i tak wielkich możliwości zmiany pewnie nie będzie.
Poza tym obciążenie nie przekłada się ani na ilość danych (może to być głównie "czytanie" danych z bazy), a już w żadnym wypadku nie przekłada się na jakość oprogramowania. Przy dużej ilości danych to drugie ma ogromne znaczenie i jeśli dopiero oprogramowanie będzie tworzone to koniecznie trzeba na to zwrócić wielką uwagę.
kmlkml - 19-10-2009 14:37
No to ja tez coś zaproponuje. Wszystko zależy oczywiście od tego jaki budżet posiadasz. Jeśli budżet nie jest za niski to dobrym wyjściem byłaby macierz netapp i do tego dwa serwery dwuprocesorowe np. na płytach intela z serii S5000. Na tym zwirtualizować systemy (vhd na macierzy moc na serwerach). Min. dwa systemy na jednym serwerze a drugi pod High Avability lub po dwa systemy na serwer w load balancing'u. Do wirtualizacji polecam Citrix XenServer (jeśli chcesz używać High Avability to potrzebny byłby komercyjny Citrix Essentials for XenServer).
Pozdrawiam, Kamil Filipek
Shakez - 19-10-2009 16:48
Oprogramowanie powstaje. Ta część modułów które już napisałem obsługują mysql i nie chciałbym przerabiać.
Jeśli możesz napisz dlaczego gorąco polecasz postgresql? Może jeżeli jest on tak znacząco lepszy to się jednak zdecyduje na przeróbki. Prawdę mówiąc nigdy nie pisałem na bazie postresql ale może czas zacząć.
szpuni - 19-10-2009 17:02
Z tego co widzialem postgree w akcji jest duzo szybszy od mysql.
Uzywalismy u mnie w firmie mysql do serwera gier (obliczenia matematyczne plus php) i w momencie przeniesienia sie z mysql do postgree wydajnosc, szybkosc wyswietlania danych na stronie wzrosla drastycznie.
W bazie jest okolo 500 000 (albo i wiecej) rekordow w niektorych tabelach i mysql po prostu sie przypychal (nawet po dostrojeniu), postgree bez zadnych zmian konfiguracyjnych (domyślna instalacja z paczki) dziala duzo szybciej. Jezeli planujesz miec w tej bazie bardzo duzo rekordow i duza ilosc zapytan w ciagu minuty proponowałbym ci sprobowac przeniesc sie na postgree.
lessmian2 - 19-10-2009 18:42
Przy małych bazach danych z prostymi tabelami MySQL jest szybszy. Jednak wraz ze wzrostem skomplikowania struktury bazy, przewaga PostgreSQL znacząco rośnie. Poza tym w MySQLu ciężko z transakcjami (tylko InnoDB), nie ma obsługi procedur składowanych, brak obsługi PL/SQL. W PostgreSQL jest też parę innych drobnych ficzerów, których w MySQLu nie uświadczysz.
Nie oznacza to jednak że PostgreSQL jest lepszy czy MySQL gorszy. Po prostu trzeba wybrać odpowiednie narzędzia do konkretnych celów. Z tego co kojarzę, to np. swojego czasu Allegro korzystało z MySQLa, choć mieli napisany swój silnik do niego. Teraz przesiedli się na Oracle lub DB2, choć tego nie jestem pewien. Na rzecz PostgreSQLa przemawia też (przynajmniej dla mnie) sposób administracji.
Jeśli masz jeszcze możliwość, to pomyśl o testach aplikacji na PostgreSQLu i sam sprawdź różnice.
timor - 19-10-2009 23:34
Jeśli mogę się wtrącić to lessmian2 dobrze prawi - ale z tego co wypisuje sam zainteresowany to dopiero tworzy aplikację opartą o php i mysql nie mając ani doświadczenia, ani większego pojęcia co robi... Więc przypuszczam, że ta aplikacja nie jest aż tak krytyczna. Gdyby to było coś krytycznego to tak duża firma kupiłaby gotowy program + sprzęt zalecany do niego. Obawiam się, że wersja ekonomiczna z jednym serwerem może nie będzie elegancka ale wystarczająca. Jeżeli kiedyś z tej aplikacji wyrośnie jakiś CRM, z którego wszyscy będą korzystać non stop to wtedy wdrożenie z opisu lessmiana2, jest tym optymalnym i zalecanym.
Pozdrawiam.
peter86 - 20-10-2009 08:38
Czolem, a gdzie system pocztowy?
Ister - 20-10-2009 08:57
Hmm, szczerze mówiąc jedyną znaczącą przewagą MySQLa nad Postgresem jest marketing... Przynajmniej takie mam wrażenie. Być może przy bardzo małych bazach MySQL jest nieznacznie szybszy, ale to przy rozmiarach bazy, przy których i tak nie będzie to zauważalne.
Część zalet Postgresa już masz wypisane powyżej. Ja do tego dodam zdecydowanie bardziej rozbudowane możliwości zapytań (jak choćby zapytania zagnieżdżone, zapytania z zapytaniem wstępnym). Zdarzało mi się, że zapytanie dla MySQLa wymagało 3 ekranów, a to samo zapytanie pod Postgresa mieściło się na pół ekranu... Przy tym Postgres był natywnie pisany pod Linuksa i jest dla niego w pewnym sensie bazą domyślną (wiele usług "chętnie" integruje się z Postgresem), Wreszcie jest to OpenSource możesz go bezpłatnie użyć na dowolną ilość procesorów, komputerów itd. MySQL ma (jakieś-tam) ograniczenia. Oczywiście szerokie, ale nigdy nie wiadomo. Jest jeszcze jeden dość istotny argument. Struktura baz, danych, procedur itp Postgresa jest taka, że można względnie łatwo przejść z Postgresa na Oracle'a bez przepisywania połowy kodu. O MySQLu tego powiedzieć się nie da. Dlatego powtarzam - jeśli dopiero piszesz aplikację, dobrze rozważ czy nie przepisać elementów już napisanych pod MySQLa na Postgresa.
PS. W moim odczuciu niemal każdy słyszał o MySQL, ale niemal każdy, kto słyszał o Postgresie, nie chce słyszeć o MySQL ;-)
Shakez - 20-10-2009 15:04
Czolem, a gdzie system pocztowy?
Już jest.
tworzy aplikację opartą o php i mysql nie mając ani doświadczenia, ani większego pojęcia co robi...
To że pytam na forum nie oznacza że nie mam pojęcia. Zapewniam że nie jest ze mną tak źle ale zawsze chętnie korzystam z doświadczenia innych.
Jeśli możesz nie wypisuj wyssanych z palca teorii bo nie to jest tematem.
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|