Szybki, zwinny i tani: serwer o wystarczającej wydajności dla bazy danych małej firmy za mniej niż 1000 USD
(c) Alexey Kovyazin, IBSurgeon, 21 września 2017 (ostatnia aktualizacja - 29 września 2017)
Łatwo jest zdobyć wydajny serwer, jeśli jesteś gotów wydać wiele $$$: są czołowi dostawcy, tacy jak Dell, HP, oraz wiele mniej znanych firm sprzętowych, które chętnie sprzedadzą Ci wydajną maszynę (zwykle z dostawą w 4-6 tygodni).
Jednak pieniądze są zawsze problemem, zwłaszcza dla małych firm i startupów, dlatego istnieje duże zapotrzebowanie na „wystarczająco dobre" tanie rozwiązania. Ten artykuł opisuje praktyczne podejście do budowy „wystarczająco dobrego" serwera baz danych z odpowiednią wydajnością dla małej firmy. Zawiera również obliczenia i linki do konkretnych produktów, które polecamy.
Nasza firma (IBSurgeon) świadczy usługi doradztwa i opieki nad bazami danych Firebird i widzimy wiele typów serwerów (a raczej komputerów używanych jako serwery). Duzi klienci używają konfiguracji z najwyższej półki z SAN na SSD, 350+ GB RAM i dwoma topowymi Xeonami na pokładzie, ale klienci z małych i średnich firm używają mniej wydajnych maszyn, ponieważ nie potrzebują dużej mocy obliczeniowej i nie mają dużo pieniędzy.
Zauważyliśmy, że wiele serwerów to tak naprawdę zwykłe stacje robocze, a co najciekawsze, działają one całkiem stabilnie przez wiele lat. Są naprawdę egzotyczne przypadki, jak Windows XP na komputerze z 2 GB RAM (komputer zbudowany w 2002 roku!), ale większość z nich to po prostu „wystarczająco dobre" samodzielnie zbudowane rozwiązania sprzętowe.
Oczywiście to kwestia statystyki i nikt nie zaleci używania stacji roboczej jako serwera, ale pytanie brzmi: gdzie jest równowaga między stabilnością a wydatkami? Czy to dobre podejście, aby używać taniego, samodzielnie zbudowanego serwera pod względem stosunku wartości do ceny? Co możemy dostać za 1000 USD? Jakie są ryzyka związane z niedrogim sprzętem?
Kogo może zainteresować serwer baz danych poniżej 1000 USD?
Rozważmy następującą sytuację: biuro z 20-25 pracownikami, pracującymi 7x5, rozmiar bazy danych około 50 GB. To typowa sytuacja dla małej firmy, która używa jakiegoś ERP, CRM lub konkretnej aplikacji (na przykład systemu automatyzacji gabinetu dentystycznego) dla małych firm opartych na Firebird.
Wyobraźmy sobie, że firma nie tonie w pieniądzach i chce zaoszczędzić jak najwięcej, bez utraty niezawodności, aby osiągnąć wystarczająco dobrą wydajność. Osoba odpowiedzialna w firmie rozumie, że każdy sprzęt prędzej czy później ulegnie awarii i chce zmniejszyć związane z tym ryzyko.
Jakiego serwera potrzebują dla bazy Firebird o takim rozmiarze i obciążeniu? Według Firebird Hardware Guide, najbardziej krytycznym zasobem dla bazy danych jest dyskowe I/O, następnie RAM, a na końcu CPU (ciekawe, że gdy klienci z MŚP kupują serwery od dużych dostawców, często wybierają serwery z wydajnymi procesorami i wolnymi dyskami, prawdopodobnie z powodu materiałów marketingowych, które przeceniają znaczenie CPU).
Dyski
Szybkie I/O oznacza, że potrzebujemy dysków SSD, ponieważ SSD jest królem losowych odczytów i zapisów. Oczywiście SSD nie jest panaceum na bazy danych, ale zapewnia naprawdę wysoką wydajność i teraz jest właściwym wyborem dla baz danych.
SSD występuje w dwóch wariantach - dyski klasy enterprise i klasy konsumenckiej. Kluczowa różnica między nimi to zasób, z grubsza obliczany jako liczba operacji I/O, które mogą wykonać.
Na przykład Samsung 850 Pro 256 Gb MZ-7KE256BW - dysk klasy konsumenckiej (oparty na technologii MLC), ma TBW (total bytes written) 150 petabajtów i DWPD (Disk Writes Per Day) = 0,16. Lub prościej, zasób można wyjaśnić jako 40 GB zapisów każdego dnia przez 10 lat.
Aktualizacja: otrzymaliśmy sugestię, że Samsung PM863a (181,59 USD) lub SM863a (249 USD) są bardziej niezawodne niż 850 Pro, ale wciąż przystępne cenowo - zasadniczo za dodatkowe 60 USD możemy uzyskać lepszą stabilność i pewnego rodzaju ochronę przed skokami napięcia.
Czy to dużo, czy nie? Mamy serwer testowy z dyskiem SSD klasy konsumenckiej, na którym uruchamiamy testy obciążeniowe symulujące intensywną pracę 100 połączeń przy bazie 60 GB. Każdego dnia uruchamiane są 3 takie testy, każdy po 3 godziny - oznacza to, że testy symulują 9-godzinny dzień pracy. Testy działają już od 2 lat, a pozostały zasób (według firmware) wynosi 54%.
Oczywiście ~50% zasobu oznacza, że dysk powinien zostać wymieniony w ciągu następnego roku… Czy to takie złe? Co kilka lat prędkość SSD rośnie, a ceny spadają: SSD w przykładzie ma 6 Gb/s i kosztuje 137 USD, za 2-3 lata będą dyski 12G za tę samą cenę.
Cena na Amazon od 124 USD
Dyski SSD klasy enterprise są zbudowane na bazie innej technologii (SLC) i mogą wykonać około 30x więcej operacji niż dysk klasy konsumenckiej o tym samym rozmiarze. Kosztują również około 3x więcej niż dyski klasy konsumenckiej. Pytanie brzmi: czy naprawdę potrzebujemy 30x więcej operacji I/O dla serwera małej firmy za 3x cenę?
Jeśli szukamy szybkiego i niedrogiego rozwiązania, bardzo atrakcyjne jest użycie tanich dysków SSD klasy konsumenckiej i regularna ich wymiana (oraz monitorowanie zasobu za pomocą firmware, oczywiście).
Ryzyka związane z SSD
Jako rozsądni ludzie rozumiemy, że sprzęt klasy konsumenckiej ma mniejszy zasób i większe szanse na awarię, więc musimy zmniejszyć te szanse. Jak możemy to zrobić?
Aby zmniejszyć ryzyko nagłej awarii sprzętu, konieczne jest użycie 2 dysków SSD dla bazy danych, połączonych w RAID1. RAID1 nie oznacza, że potrzebujemy osobnego kontrolera RAID - wystarczające będzie użycie funkcji RAID nowoczesnych chipsetów płyt głównych - zasadniczo jest to prosty kontroler RAID bez pamięci podręcznej.
Aktualizacja: ponieważ tanie kontrolery RAID na płycie głównej mogą nie obsługiwać funkcji TRIM dysków SSD, aby uniknąć degradacji wydajności, zaleca się skonfigurowanie programowego RAID, który koordynuje równoczesne operacje na poziomie oprogramowania.
Jeśli nie będzie pamięci podręcznej, jaka będzie wydajność? Nowoczesne dyski SSD, takie jak Samsung w przykładzie, mają wbudowaną pamięć podręczną i bardzo inteligentne kontrolery - więc są wystarczająco szybkie bez dedykowanych kontrolerów RAID.
Oczywiście konieczne jest sprawdzanie stanu dysków; zwykle firmware zapewnia wystarczająco dobre oszacowanie żywotności dysków.
Kopie zapasowe
Oczywiście potrzebujemy dysków do kopii zapasowych. Najlepszym wyborem będzie para dysków SATA po 2 TB każdy - na przykład Seagate SkyHawk 2TB Surveillance Hard Drive, z 5900 obr./min.
Cena na Amazon to 74,99 USD
Potrzebujemy 2 dysków HDD, ponieważ dyski do kopii zapasowych również muszą być w RAID1, aby zapewnić ochronę przed nagłą awarią sprzętu. Te dyski do kopii zapasowych mogą być dość wolne; ich głównym celem jest przechowywanie kopii zapasowych i zapewnienie odpowiedniej prędkości sekwencyjnego odczytu/zapisu. Dyski 5900 obr./min są wolniejsze niż 7200 obr./min, ale są znane z większej niezawodności. Ta konkretna seria dysków (Seagate SkyHawk) jest zaprojektowana do zapisów liniowych: to jest to, czego potrzebujemy do kopii zapasowych.
Ryzyka dla dysków kopii zapasowych
Ryzyko jest takie samo jak dla SSD i chronimy się przed nim w ten sam sposób: RAID1 i monitorowanie. Powinna być niewielka szansa, że oba dyski w RAID1 ulegną awarii jednocześnie.
Dysk systemowy
Czy potrzebujemy osobnego dysku dla systemu operacyjnego? W najtańszej konfiguracji - nie, wystarczy trzymać system operacyjny i bazę danych na tym samym dysku. To nieco przyspieszy degradację SSD, ale nie tak bardzo - w naszym scenariuszu powinien zdecydowanie wytrzymać 3 lata.
CPU
Dla serwera bazy danych Firebird lepiej wybrać CPU z wieloma rdzeniami i jak najniższą częstotliwością. Tak, dobrze przeczytałeś - nie ma potrzeby stosowania procesorów o wysokiej częstotliwości dla serwera baz danych. Firebird (jeśli jest odpowiednio skonfigurowany) używa wszystkich rdzeni do normalnej pracy, ale nie obciąża ich w 100%.
Są wyjątki: niektóre operacje konserwacyjne (kopia zapasowa i przywracanie), które korzystają z szybkiego CPU, oraz źle napisane zapytania SQL z nieprawidłowym użyciem indeksów - zużywają 100% rdzenia, ale to wyraźny znak, że wymagana jest optymalizacja wydajności bazy danych. Ogólnie rzecz biorąc, nie można zrekompensować wolnych zapytań procesorami z wyższej półki: nawet jeśli CPU jest 3x szybszy, wolne zapytanie nadal będzie wolne.
Z drugiej strony, posiadanie kilku rdzeni może zrekompensować istnienie takich zapytań obciążających CPU: przy liczbie użytkowników poniżej 25 i 8 rdzeniach nie ma dużej szansy, że wszystkie rdzenie będą jednocześnie zajęte przez wolne zapytania.
A ponieważ szukamy taniego rozwiązania, jesteśmy ograniczeni do procesorów desktopowych - i, niestety, do układów AMD. Zasadniczo, gdyby Intel mógł dostarczyć procesor desktopowy z 8 rdzeniami za tę samą cenę lub nieco wyższą niż AMD FX-8320E, moglibyśmy użyć również Intela, ale w tej chwili nie widzę takiej opcji.
Ten układ AMD nie jest nowoczesny ani szybki, ale ma 8 rdzeni i jest tani, więc jest optymalnym wyborem dla naszego szybkiego i taniego serwera.
Cena na Amazon to 108 USD
Ryzyka związane z procesorem desktopowym
Jakie jest potencjalne ryzyko związane z CPU? Dla układów o niskiej częstotliwości (tj. niepodkręcanych) z odpowiednim chłodzeniem, ryzyko jest prawie zerowe. Kiedy ostatnio słyszałeś o awarii procesora desktopowego - w 2003 roku? Oczywiście procesory serwerowe są znacznie szybsze, ale szukamy wystarczająco dobrego rozwiązania.
Dobrym pomysłem jest monitorowanie obciążenia CPU i temperatury, aby zapobiec przypadkowym restartom.
RAM
Ilość potrzebnego RAM zależy od rozmiaru bazy danych i liczby użytkowników. W naszym scenariuszu rozmiar bazy to 50 GB, a maksymalnie 30 użytkowników.
Maksymalny rozmiar, jaki Firebird może zużyć, to rozmiar bazy danych (w tym przypadku będzie w pełni buforowana w RAM) plus 200-300 MB na użytkownika (w przypadku Firebird 2.5 SuperClassic). Tak więc idealny maksymalny rozmiar RAM to 64 GB, ale ponieważ chcemy oszczędzać i mamy szybki SSD, możemy użyć zaledwie 16 GB.
Niektórzy użytkownicy w takim scenariuszu pracują dobrze nawet z 8 GB, ale 8 GB to dość ciasno: w tym przypadku żadna inna aplikacja nie powinna być używana na tym samym serwerze. 16 GB to zalecane minimalne optimum.
Cena na Amazon to 59,99 USD x 2 = 120 USD
Ryzyka związane z RAM
RAM jest bardziej podatny na awarie niż CPU, ale mniej niż dyski. RAM klasy enterprise ma specjalne mechanizmy zmniejszające możliwość błędów, takie jak kontrolki parzystości. Jak możemy oszacować i zmniejszyć ryzyko awarii pamięci?
Po pierwsze, istnieją metody sprawdzania kości pamięci, a jeśli takie testy przejdą pomyślnie, kości RAM będą działać przez wiele lat. Po drugie, gdy RAM ulega awarii, zwykle jest to bardzo zauważalne: komputer albo ma niebieski ekran śmierci, albo kernel panic, albo częste restarty: wszystkie takie objawy wymagają sprawdzenia i, w przypadku złych wyników, wymiany RAM.
Płyta główna
Płyta główna to ważna część każdego komputera. Na szczęście nowoczesne płyty główne dla komputerów stacjonarnych są bardzo niezawodne, zwłaszcza płyty wydane 4-5 lat temu - mają wszystkie niezbędne aktualizacje i są stabilne. I - tak, są tanie.
Potrzebujemy płyty głównej z obsługą RAID, z wbudowanym układem wideo i wystarczającą liczbą złączy SATA. Coś takiego:
ASUS M5A78L-M Plus/USB3 DDR3 HDMI DVI USB 3.0 760G MicroATX Motherboard
Cena na Amazon to 74,99 USD
Ma bardzo pozytywne recenzje i łatwo ją skonfigurować do RAID1.
Obudowa desktopowa
Potrzebujemy obudowy desktopowej, aby zmieścić wszystkie komponenty komputera, z wystarczającym zasilaczem. Coś takiego: 76,82 USD http://amzn.to/2ydeYs1
UPS
Jedna rzecz, która nie jest częścią serwera, ale powinna być wyposażona w każdy komputer z ważnymi danymi w środku - zasilacz awaryjny (UPS).
UPS chroni komputer przed przerwami w dostawie prądu i wahaniami napięcia. Z naszego doświadczenia wynika, że skok napięcia lub nieprawidłowa utrata zasilania komputera jest głównym źródłem uszkodzeń baz danych.
Coś takiego jak CyberPower CP1200AVR, za 117,97 USD, powinno być wystarczająco dobre.
Razem
W rezultacie otrzymujemy całkowitą cenę wszystkich komponentów komputerowych i UPS = 855,27 USD - to nawet mniej niż 1000 USD, jednak zanim te komponenty staną się działającym komputerem, należy je złożyć, wyposażyć w system operacyjny i przetestować.
| Element | Cena | Ilość | Razem |
|---|---|---|---|
| SSD Samsung 850 Pro 256 Gb MZ-7KE256BW | 124,24 USD | 2 | 248,48 |
| Seagate SkyHawk 2TB Surveillance Hard Drive | 74,99 | 2 | 149,98 |
| CPU AMD FX-8320E | 86,02 USD | 1 | 86,02 |
| RAM Corsair Vengeance 8GB | 61,99 USD | 2 | 123,98 |
| Płyta główna ASUS M5A78L-M Plus | 57 USD | 1 | 57 |
| Obudowa komputerowa | 69,99 USD | 1 | 69,99 |
| CyberPower CP1200AVR | 119,82 USD | 1 | 119,82 |
| Razem | 855,27 |
Składanie serwera
Aby złożyć wszystkie te części w działający serwer i zainstalować na nim system operacyjny (polecilibyśmy jakąś odmianę Linuksa, np. CentOS7+ lub Ubuntu Server 16+), wszystkie te komponenty należy poprawnie zamontować/podłączyć.
To nie jest trudne - wymaga jedynie śrubokręta, odrobiny cierpliwości i czasu na dokładne przeczytanie instrukcji oraz obejrzenie kilku filmów na YouTube. 10 lat temu prawie każdy programista potrafił złożyć komputer z tych części, dziś jest inaczej, ale nadal nie jest to trudne.
A co, jeśli nie chcesz składać serwera?
Istnieje skrót - można kupić komputer o podobnej konfiguracji, który prawie spełnia nasze potrzeby, i podłączyć do niego dodatkowe komponenty (np. dyski).
Poleciłbym zwrócić uwagę na ten komputer - pierwotnie zaprojektowany jako komputer do gier, ma 8-rdzeniowy procesor i 16 GB RAM, a kosztuje tylko 709 USD.
Konieczne będzie jego doposażenie (otwarcie obudowy i podłączenie) w parę dysków SSD (+248,48 USD), jeden dodatkowy dysk zapasowy (+74,99 USD) oraz oczywiście UPS (+119,82 USD). Razem będzie to 1153 USD - to więcej niż cel 1000 USD, głównie ze względu na kartę graficzną i ładną obudowę. Nadal trzeba skonfigurować RAID1 (w BIOS-ie) i oczywiście zainstalować tam serwerowy system operacyjny zamiast preinstalowanego Windows 10 Home.
To podejście można wykorzystać do przekształcenia wydajnego komputera stacjonarnego w serwer - wystarczy dodać redundantne dyski SSD i dyski zapasowe.
W przeszłości wiele małych i średnich firm oraz startupów korzystało z takich samodzielnie zbudowanych serwerów, obecnie trendem jest korzystanie z maszyn wirtualnych w chmurze.
Jak maszyny wirtualne wypadają w porównaniu z samodzielnie zbudowanym serwerem?
Oczywiście zbudowanie i utrzymanie własnego serwera wymaga pewnych umiejętności (nie tak wysokich, jak mogłoby się wydawać), dlatego wiele firm chce pozbyć się wszystkich serwerów sprzętowych (i ewentualnie zwolnić administratora systemów odpowiedzialnego za serwery).
W następnym artykule rozważymy maszynę wirtualną w chmurze jako serwer bazy danych dla małych i średnich firm.
Więcej artykułów o wydajności bazy danych Firebird:
- Firebird Hardware Guide
- Tuning 1.7Tb Firebird database
- Firebird Performance Optimization Service
- 45 Ways To Speed Up Firebird database
- Collection of optimized Firebird configuration files
Skontaktuj się z nami
Zachęcamy do zadawania pytań: [email protected].
Podziękowania
Serdeczne podziękowania dla osób, które przesłały sugestie i ulepszenia do tego artykułu:
- Vlad Khorsun
- Dmitri Kuzmenko
- Pavel Zotov
- Sergey Nikitin
- Emil Mustea