Provozujeme linuxový server (1) - hardware I

Linux dnes potkáváme prakticky na každém kroku, jedním z paradigmat ovšem zůstává realizace malého internetového serveru. Nejčastěji se setkáme s provozem webového serveru, elektronické pošty či zprostředkování připojení k internetu. Tento seriál se bude zabývat právě provozem Linuxu na serverech, první díl pojednává o hardware.

17.1.2005 06:00 | Petr Houštěk | přečteno 27037×

Určení serveru

Na začátku je důležité určit jakou práci má server zastávat. Je třeba dopředu vědět, jak rychlá linka bude k dispozici, jaká bude návštěvnost, u fileserverů mít představu o množství dat, ... Je také třeba vědět, jaká může být perspektiva do budoucna.

Při výběru hardware i software je vždy dobré myslet na to, že spolehlivost a dostupnost serveru bývá v drtivé většině případů mnohem cennější než extrémní výkon či pokročilé vlastnosti a schopnosti.

Co se výkonu týká, obyčejné PC (takt CPU 1–2 GHz, 256–512 MB RAM, IDE disky na ATA-100 sběrnici, libovolná 100Mbit ethernetová karta) je schopné zastat většinu typických úkolů, např. poskytovat statický obsah přes HTTP až do rychlosti stovek dotazů za sekundu, odpovídající počet dynamických stránek (v závislosti na době generování a paměťových nárocích na jednu stránku), přijmout a rozeslat stovky tisíc e-mailů denně, nebo routovat 100Mbit/s toky dat a každý paket porovnat se stovkami pravidel v iptables.

Takto výkonný stroj má ale svá omezení. Nemůžeme očekávat, že by zvládal náročné operace, jako je např. routování gigabitové sítě, případně poskytování služeb (třeba fileserver) na takto rychlé lince v plné rychlosti. Velká databáze, ke které přistupují současně stovky lidí a provádí převážně zápisy s využitím transakcí je také nad možnostmi výše popsaného serveru. Podobně http server s řádově stovkami virtuálních serverů s dynamickým obsahem.

Faktorů, které ovlivňují potřebný výkon je mnoho. Při jeho odhadování je zejména třeba vzít v úvahu špičkovou zátěž místo průměrné. Různé činosti serveru vyžadují různé nároky. Hlavním limitujícím faktorem může být paměť, výkon procesoru, rychlosti disků nebo celková propustnost. Paměť se stává úzkým hrdlem při velkém množství současně běžících aplikacích (každá aplikace, každé TCP spojení alokuje část paměti), výkon procesoru může být úzkým hrdlem při náročných dynamických webových aplikacích a databázových požadavcích. Dále je důležité nastavit výkon serveru tak, aby zůstávala určitá rezerva. Ta se může vyplatit při DoS útoku, napadení internetovým červem, spammery, agresivními mirrorovacími automaty a podobnou havětí.

Statický obsah webu není výkonově moc náročný a i relativně velké množství statických webů se dá bez problémů obsloužit např. s výše popsaným strojem. Na druhou stranu dynamicky generované stránky jsou náročnější. Samotná režije http serveru zde představuje pouze menší část potřebného výkonu. Zbylý výkon je potřeba pro běh aplikací generující obsah, jako je např. perl, java, php, generické CGI, ... V současné době se také databáze začínají používat v daleko širším měřítku. Databázové operace se stávají komplexnější a mnoho operací s daty je prováděno přímo v databázovém engine, ne až v aplikaci, která vysledek databázového dotazu zpracovává. Databázové operace proto můžou spotřebovávat větší část potřebného výkonu serveru. V určitých situacích se pak vyplatí přesunout databázi na samostatný databázový server.

Pro orientaci jsem provedl malý benchmark. Dva přibližně stejně výkonné PC jsem spojil lokálním 100Mbit/s ethernetem se síťovými kartami 3Com 905C. Oba počítače mají základní desku s VIA KT333 čipsetem, procesorem AMD AthlonXP 1800+ a 512 MB paměti. Na jednom počítači jsem nainstaloval http server Apache 1.3.26 a z druhého jsem testoval výkonnost na statických stránkách. Na obou počítačích běží vanilla kernel 2.6.8.1. K benchmarku jsem použil program httperf. Testované statické stránky byly součástí dokumentace z /usr/share/doc/bash, aby nedošlo k kešování jako v případě pouze jedné testované stránky. Každý test obsahoval celkem 30000 TCP konexí s timeoutem nastaveným na 5 sekund. Postupně jsem zvyšoval množství konexí za sekundu. Až do 500 konexí za sekundu téměř žádná konexe neskončila timeoutem (do 5%). Výsledky pro vyšší hodnoty jsou v tabulce.

Množství konexí/s500600 7008009001000
Množství ztracených konexí13%20%24% 37%43%43%

Možnosti při výběru hardware

Sestavený server

Nejdříve se musíme rozhodnout, jestli chceme mít PC, které chceme prohlásit serverem, nebo opravdový server serverem. V prvním případě je nejlevnějším způsobem koupit v bazaru relativně nový počítač, který již nebyl dostatečně výkonný pro poslední hry, vyměnit komponenty náchylné k chybám a doplnit např. novými disky, pamětí.

Další možností jak získat PC pro server je koupit značkovou sestavu, případně si sestavit vlastní. V tomto případě máme několik možností, uveďme si několik nejznámějších – postavit PC založené na produktech od Intelu, případně od AMD. V případě řešení od AMD je vhodná kombinace téměř libovolného Athlon procesoru, spolu s kvalitní deskou, případně řešení postavené na AMD Athlon 64 či AMD Opteron. Podobně s kombinací založenou na procesoru od Intelu a deskou s Intel čipsetem.

Server můžeme také koupit od některého z renomovaných výrobců jako je např. SGI, IBM, Dell, Sun, HP, ... Výběr je opravdu široký – od malých, až po velké servery určené pro nasazení v kritických aplikacích. Tyto servery se vyrábějí ve velkém množství, takže je zaručena vyváženost jejich součástí a kvalita návrhu. Dále si lze pořídit server od některých menších výrobců. Téměř každý serioznější hardwarový obchod prodává různé varianty "svých" serverů.

Skládáme server

Další volbou je složit server z komponent (nebo si to nechat udělat od někoho jiného). Určité komponenty, které jsou určeny pro servery (hlavně základní desky, paměti, procesory) se svou stavbou liší od těch určených pro PC. Obvykle jsou více testované a mají jiné vlastnosti, ale na druhou stranu nejde jednoznačně stanovit, která komponenta je "už serverová" a která "ještě pro PC".

Na základních deskách určených pro servery obvykle nenajdete nejnovější čipsety, zvukové karty a podobné věci, které se objevují na téměř každé normální základní desce, na druhou stranu zde je obvykle podpora pro ECC paměti (paměť, která obsahuje kontrolu chyb – parity check, je schopná napravit neočekávané změny uložených hodnot způsobené například okolním zářením), podpora pro více procesorů, výborná síťová karta, podpora pro management po síti, 2D grafická karta, podporu pro SCSI řadiče, ... Serverové procesory se také liší od desktopových a notebookových typů – typickými příklady serverových procesorů jsou od Intelu procesory řady Xeon a u AMD Opterony. Např. nejběžnější serverové desky pro Opterony jsou desky od Thunder desky od Tyanu a K8T desky od MSI. Mnohdy se vyplatí koupit místo jednoprocesorové desky dvouprocesorovou variantu. Ty totiž obvykle obsahují vše, co od serverové základní desky můžeme očekávat. Další její výhodou je snadné zvětšení výpočetního výkonu – jednoduše přidáme další procesor.

Disky

Další nezbytnou součástí serveru mimo základní desky, procesoru a pamětí jsou disky. Zde máme opět několik možností. Nejběžnější jsou PATA, SATA a SCSI disky a řadiče. SCSI technologie je starší, původně navržená Applem jako small computer system interface, tedy interface pro všemožné příslušenství. V současné době je nejvíce rozšířený standard Ultra SCSI 320. Ten je limitován šířkou sběrnice 320 MB/s a maximálním množstvím 16 zařízení. Na rozdíl od PATA a SATA disků mají SCSI disky nejkratší přístupovou dobu a nejvyšší dosažený počet otáček za sekundu, rychlost náhodného čtení je tedy nejvyšší ze zmiňovaných technologií. Toto je také způsobeno tzv TCQ (tagged queuing), který je zatím funkční pouze v SCSI. Bohužel za vše se musí platit a jednou z mála nevýhod SCSI disků je jejich vyšší cena. Rychlost a výkonnost SCSI disků ale není v jejich mechanickém zpracování. Mechanické součásti disků (čtecí hlava, plotny, ...) jsou více méně identické u všech typů. To, co se liší, je hlavně elektronika.

PATA disky na rozdíl od SCSI disků jsou téměř výlučně určené pro použití v málo kritických nasazeních, jako je např. v desktopovém počítači. Na rozdíl od SCSI disků jsou totiž pomalejší, nespolehlivé a jeden řadič dokáže obsloužit velmi limitované množství disků, takže jsme nuceni připojovat disky zvláštními kabely, které pak brání chlazení. PATA řadiče se také nedokáží vyrovnat se zkolabováním disku, obvykle při poruše přestane fungovat celý řadič.

SATA technologie vznikla jako reakce na neuspokojivý stav v oblasti diskových technologií. SCSI disky byly dobré, ale drahé, PATA na druhou stranu levnější, ale trpící řadou neduhů plynoucích z návrhu. Začal se tedy vytvářet zcela nový návrh se zkušnostmi ze současného stavu, některé ideje se převzaly ze SCSI modelu. Výsledkem je SATA. Bohužel se ale jedná o velmi novou (pro serverové nasazení) technologii, v podstatě stále ještě pořádně neotestovanou. Problémy můžou nastat i s ovladači, např. není ještě v Linuxu dotažená podpora pro S.M.A.R.T. na SATA.

Case

Case je další nezbytnou věcí pro server. Case určená pro servery má určitá specifika. Obvykle nezáleží na velikosti, vzhledu, hlučnosti ani hmotnosti case, protože server nemusí sloužit estetickému účelu. Důležité je, aby bylo uvnitř dostatek prostoru pro všechny součástky, cirkulaci vzduchu a dostatek větráků. Dále rozhodně neuškodí, když byde case vyrobený z dostatečně silného plechu, aby nedocházelo k nechtěným deformacím. Dále mívají casy teplotní a intrusion senzory (detekují, jestli je case otevřený).

Existují určité standardizované velikosti casů. Tzv. rackový case je široký 19 palců a jeho výška je vyjádřena v násobcích U (1U odpovídá 1,75", tedy 44,45 mm). Běžně jsou k dostání casy o výškách 1U, 2U, 3U, 4U a 5U. Standardizovaná šířka je vhodná pro montáž do polic. Můžete si také pořídit tower nebo midi-tower case. Jediný rozdíl je ve vertikální orientaci. Některé casy se dokonce dají situovat jak v horizontálně, tak vertikálně.

Casy určené primárně pro PC mají určité vlastnosti, které nejsou ideální pro servery. Obvykle jsou totiž designované pro atraktivní vzhled a ne pro dobré chlazení,

Další hardwarové doplňky

Další věcí, která by se neměla u serveru opomíjet je možnost výpadku napájení. Protože v elektrické síti k výpadkům dochází, je třeba se postarat o překlenutí času, než se dodávka obnoví, případně server korektně vypnout. Tomuto účelu slouží tzv. UPS (záložní zdroje). V podstatě jsou složené z akumulátoru a řídící jednotky. Při výpadku pak začne napájet server z akumulátoru a podle aktuální spotřeby a stavu baterie komunikuje se serverem. Ovládací software pak před úplným vybitím může dát povel ke korektnímu vypnutí serveru. UPS se dodávají v mnoha provedeních. Od nejmenších pro jeden až dva počítače s výdrží do 30 minut, po velké UPS, které obstarávají nouzové napájení ve velkých serverovnách. UPS dále slouží jako stabilizátor napětí a ochrana před náhlými napěťovými špičkami (např. při úderu blesku).

To by ze základních informací o serverovém hardware bylo zatím vše, nezbývá než popřát šťastnou ruku při realizaci vašeho serveru. V příštím díle se budeme zabývat umístěním serveru, tj. takzvaným serverhousingem. K hardware se také ještě vrátíme, budeme diskutovat jeho podporu v Linuxu.

Online verze článku: http://www.linuxsoft.cz/article.php?id_article=619