Rack design

Celkem často se díváme, jakým způsobem plní racky v datacentrech ostatní a snažíme se od nich učit. Bohužel ale narážíme na to, že v ČR to málokdo dělá dobře a zařízení jsou do racků umístěná bez většího plánování. My se snažíme racky využít opravdu naplno a tak musíme být pozorní na každý detail. Rádi bychom se tedy podělili o naše zkušenosti s plánováním a stavbou racků.

Rozmístění serverů v racku

Při plánování se vždy zamyslíme nad tím, jaká zařízení v racku budou. U racků, u kterých víme, že budou sloužit jedné aplikaci - například našim ceph storage serverům, si můžeme dovolit plánování usnadnit. Naopak u obecných racků se snažíme počítat s tím, že budou plné 1U serverů a podle toho dimezujeme jednotlivé komponenty.

Konstrukční prvky racku

Při přípravě racku máme vždy kabeláž v zadní části racku. To nám dává jedinečnou možnost minimalizovat prostor mezi servery a předními dvěrmi a maximalizovat prostor na kabeláž v zadní části racku.

Rozestup mezi vertikálními lištami máme 700 mm. Používáme pouze Supermicro servery a pokud nepoužijeme vyloženě mělké ližiny, tak je jejich minimální hloubka 498 mm pro 1U, resp. 673 mm pro 2U a vyšší. Hloubka běžných serverů, které používáme, se pohybuje od 507 mm do 730 mm.

Zamykací mechanismus conteg V případě racků od společnosti Conteg, které používáme v DC Tower s hloubkou 100 cm, jsme narazili na zásadní problém se zamykacím mechanismem racku, který výrazně vyčnívá do vnitřního prostoru racku. Stalo se nám tedy to, že rack nešel zamknout, protože zámek narážel do ucha serveru. Pro nás to bohužel znamenalo celý rack vyskládat, posunout o několik centimetrů vertikální lišty hlouběji a zase všechny servery vrátit zpátky.

Napájení

Běžně dostupné racky v datacentrech v ČR jsou dimenzované na 6kW nebo 8kW odběru/chladícího výkonu. V případě, že máme limit 6kW na rack, tak se snažíme používat 2x 16A jističe na každou napájecí větev. Celkem tedy 2x16A na první větvi (A) a 2x16A na druhé větvi (B). Počítáme pak, že máme dostupných pouze 2x16A na celý rack, protože druhá větev musí mít dostatečnou rezervu na obsloužení plného provozu v případě výpadku. V takových situacích opravdu nechceme přetížit jističe.

Při použítí 16A jističů máme dostupný hraniční odběr 3 680 W. My jsme si stanovili limit 80%, čili 2 944 W na jeden jistič (resp. A+B pár). Přibližně 20% necháváme jako rezervu pro případné incidenty nebo jiné události, které nemůžeme ovlivnit. Např. spouštění 4U serveru s 36 disky způsobí výrazně větší krátkodobý proudový odběr než u něj naměříme v plné zátěži.

V rámci racku máme jističe rozdělené na horní a spodní pár. V každé polovině racku tedy máme dostupné 3kW.

Ve většině případů nám to stačí a jsme schopni HW naplánovat tak, abychom limity nepřekročili. Vyžaduje to však velmi dobré plánování. Další racky už ale plánujeme stavět jako 3x16A na každé větvi, abychom měli větší volnost při zapojování serverů a nebyli omezeni na horní a spodní polovinu.

U 8kW racků používáme 3x16A jističe na každou napájecí větev. Ostatní pravidla zůstávají stejná.

Důležitým aspektem jsou napájecí zdroje serverů. Nové servery nakupujeme už jen se dvěmi napájecími zdroji. Ze zkušenosti můžeme říct, že ale jednozdrojové servery jsou výrazně jednodušší a jejich úmrtnost je nižší. Naopak ale při úmrtí občas dojde k vyhození jističe, což se nám u dvouzdrojových serverů ještě nestalo.

U racků, kde víme, že bude kombinace serverů s jedním a dvěmi zdroji se snažíme plánovat tak, aby půlka racku měla 2 zdroje a druhá půlka byla připojena přes ATS.

ZONIT uATS Občas je potřeba připojit jen několik serverů přes ATS - například náš testovací ceph. V takových případech se snažíme být kreativní a zvolili jsme kombinaci 1U PDU s 8x C13 na výstupu a 1x C14 na vstupu. Do vstupu jsme zapojili ZONIT uATS, která se stará o přepnutí napájení v případě výpadku jedné větve. Nevypadá to sice elegantně a manipulace se serverem za PDU není tak přímočará jako u ostatních, ale funguje to naprosto spolehlivě.

Spotřeba serverů a switchů

S napájením úzce souvisí spotřeba serverů. Abychom byli schopni rozložit servery správně do racku, tak u každého serveru měříme jeho spotřebu. A to nejen v režimu bez zátěže, ale hlavně při plné zátěži a to včetně všech komponent a pevných disků. Jako příklad uvedeme jeden projekt, kde dochází ke zpracování asynchronních front. Zpracování každé zprávy je procesorově náročné a tak se nám stává, že se během okamžiku všechny servery zatíží na 100% a my si potřebujeme být jisti, že nevyhodíme jistič i v případě provozu omezeného na jednu napájecí větev. Níže přikládáme ukázku grafu z jedné poloviny racku, která je v plné zátěži krásně zarovnaná na 3kW.

Graf spotřeby poloviny racku

Zde je také vidět rozdíl mezi spotřebou bez zátěže a v plné zátězi. Předpokládáme, že s novějšími generacemi procesorů bude tento rozdíl čím dál větší.

Racky vždy plníme takovým způsobem, abychom v plné zátěži nikdy nepřekročili stanovené limity napájení.

Při použití běžných 42U racků nám spotřeba průměrně vychází na 142 W na 1U. A zde narážíme na problém moderních serverů. Jednoprocesorové servery s procesorem z nižšího spektra nabídky se do tohoto limitu vejdou - bavíme se konkrétně třeba o serverech s CPU Intel Xeon řady Silver nebo E-2200. Pokud do serverů dáváme výkonnější procesory, AMD procesory nebo použijeme dvouprocesorové sestavy, tak se dostáváme se spotřebou výrazně výš. V takových případech se do racku snažíme kombinovat servery s velmi malou spotřebou a výkonějšími servery tak, abychom využili dostupné místo a zároveň nepřekročili limit napájení.

Spotřeba našich switchů začíná na 50W u Arista 7010T, což nám dělá radost. U běžných 10GE switchů s malým bufferem se pohybuje okolo 120W. U switchů, které mají pokročilejší funkce nebo jsou deep buffer je pak spotřeba v nižších stovkách wattů.

Chlazení

Se spotřebou serverů také souvisí jejich chlazení. Stávalo se nám, že servery s větším množstvím vyprodukovaného tepla se ve vyšších pozicích v racku zahřívaly více (klidně i o 10°C) než ty, které byly níž. Tento efekt jsme sledovali v jednom sále s teplou a studenou uličkou. Chápeme, že naše měření je ovlivněno použítím chladícího zařízení, jeho výkonem a prouděním vzduchu v sálu. Nicméně, na základě této zkušenosti se snažíme dávat výkonné servery do spodní části racku a servery s menším odběrem do vyšších pozic.

Pro správné chlazení zařízení v racku je také potřeba dát si pozor na správné proudění vzduchu - obzvláště u síťových prvků. V tomto případě se nám líbí switche Arista 7010T, kde se dá směr chlazení jednoduše přehodit. V ostatních případech si dáváme pozor, aby byl výfuk teplého vzduchu na straně portů.

Konektivita

Když odbočíme ke konektivitě, tak do každé racku přivádíme 4x SFP+. Běžně zapojujeme 4x10GE, které jsou zapojené do 2 nezávislých agregačních switchů. Na každý rack dostáváme 20Gbps redundantní konektivity, což nám zatím stačí. Servery se snažíme skládat tak, aby co nejvíce datových přenosů probíhalo vždy v rámci jednoho racku. V případech, kde je potřeba v racku více konektivity, můžeme sáhnout po 40GE nebo 100GE portech a konektivitu se stávající kabeláží jednoduše rozšířit.

V každém racku máme dle požadavků jeden nebo 2 access switche, do kterých jsou zapojené servery. V rámci šetření portů ve switchi jsme uvažovali, že bychom používali sdílené switche mezi 2 racky tam, kde je malá obsazenost portů. Nakonec jsme od toho ustoupili, protože bychom si tím značně zkomplikovali přehlednost sítě a museli tahat kabeláž mezi racky. Navíc se snažíme mít racky co nejvíce samostatné a je nám pak jedno, jestli jsou racky vedle sebe nebo na druhém konci sálu.

Rozmístění v racku

Při plánování racku pracujeme s tím, že hotswap komponenty musí být opravdu vyměnitelné bez nutnosti servery vypínat. Z pohledu serveru se tedy jedná primárně o hotswap pevné disky a napájecí zdroje. U všech serverů také počítáme s tím, že v případě úmrtí serveru musí být obnova provozu maximálně jednoduchá - to znamená, že se vezmou disky a přesunou se do hotspare serveru, který je připraven přímo v racku. Je to úkon, který podle připraveného scénáře musí zvládnout kdokoliv.

U serveru, kde je v jedné skříni více žiletek (např. Supermicro twin), platí, že musíme být schopni vyndat jednotlivé žiletky bez vlivu na ostatní žiletky.

K tomu, abychom mohli jednotlivé servery servisovat, je potřeba, aby se daly jednoduše z racku vyndat. Z tohoto důvodu agregujeme servery také podle jejich hloubky. Velmi špatně se odpojují mělké servery s hloubkou 500 mm, které jsou mezi dvěmi hlubokými servery s hloubkou 700 mm. Viděli jsme i případ, kdy byl server mezi switchi. Do 1U prostoru se ruka zasunout nedá, natož v tomto prostoru nějak operovat a snažit se vycvaknout nebo řádně dotlačit kabel.

Držíme se toho, že čím méně je věcí v racku, tím více je tam prostoru pro práci a proudění vzduchu. Nepoužíváme tedy vyvazovací panely a kabelová ramena.

Kabeláž

Kabeláž v racku zabírá nemalý prostor a při špatném plánování může vzniknout z kabelů docela slušný nepořádek. Je pro nás důležité, abychom při servisu nedělali chyby a podle toho kabeláž musí být připravena. V případě kabeláže se držíme pravidla, že máme oddělené napájecí kabely na jedné straně racku a datové kabely na druhé straně. Ale samozřejmě v závislosti na použitých serverech. Teď připravujeme rack, který bude mít zdroje uprostřed a po stranách jednotlivé žiletky. V takové případě zkoušíme variantu, kdy kabely (síťové i napájecí) budou rozdělné na půl na každou stranu.

Napájecí kabely volíme co nejkratší můžeme. Pro připojení serverů používáme 0,5m a 1m kabely, pro switche pak 1,5m nebo podle potřeby. Nikde nepoužíváme delší kabely, protože přebytek kabelu se musí nekdě uchovat, což zabírá v racku místo a snižuje se tím prostor pro práci. Využíváme dvě barvy (bílá, černá), abychom tím oddělili A a B napájecí větev. U serverů s jedním zdrojem, které jsou připojené přes ATS, používáme kabely červené barvy. Vše je orientované tak, aby při pohledu na rack bylo jednoznačně vidět, že jsou servery zapojené správně.

Síťové kabely jsou trochu náročnější, protože je jich výrazně větší množství. U obecných racků se snažíme switche kompletně naplnit, protože nevíme přesně co v nich bude. Když jsou kabely správně vyvázané, tak v racku moc nepřekáží a zároveň jsme vždy připraveni zapojit další server bez toho, abychom do kabeláže museli zasahovat. Při správném vyvázání zároveň minimalizujeme místo, které kabeláž zabírá. Rozdíl v objemu u svazku kabelů, kde jdou jednotlivé kabely souběžně vedle sebe, a u svazků, kde se jednotlivé kabely přelínají a vznikají mezi nimi vzduchové mezery, je značný.

Kabeláž navíc vyvazujeme tak, že když máme pod sebou 2 nebo 3 switche, tak každý z nich musíme být schopni vyndat a vyměnit. Kabely z jednoho switche tedy nesmí zasahovat do prostoru jiného switche.

Jak si myslíme, že by se to nemělo dělat
Naše zapojení

Často slýcháváme názor, že v takto vyvázané kabeláži je problém v případě poškožení vyměnit jeden kabel. Musíme přiznat, že už se nám to jednou stalo. Kabel jsme při neopatrné manipulaci zlomili. Řešení bylo jednoduché - takový kabel jsme tam nechali a nahradili jej kabelem mimo svazek. Až se bude rack obměnovat, tak se celý rozebere a kabeláž se natáhne nová.

Délku kabelů volíme tak, aby nám v cílové části racku zbyla drobná rezerva, ale zároveň, aby nebyl přebytek kabelu příliš velký. Používáme proto kabely o delkách 0,5m, 1m, 1,5m, 2m, 2,5m a v některých případech 3m podle dostupnosti a výšky racku.

UTP kabely vždy rozlišujeme barevně podle switche. Červená je pro management síť, modrá a zelená pro uplink.

V případě 10GE používáme SFP+ switche a pro připojení serverů DAC kabely černé barvy a tady si kvůli menší nabídce nemůžeme moc vybírat. Kabely v případě potřeby alespoň barevně rozlišujeme na obou koncích.

Všechny kabely vždy popisujeme číslem portu, do kterého jsou zapojeny pro jednoznačnou identifikaci. Nemusíme pak nikde nic hledat a zjednodušuje se tím servis. Původně jsme používali jednoznačné identifikátory napříč všemi kabely v podobě 3 znaků, ale to se nám neosvědčilo. Kabely mezi racky nepřesouváme a bylo složité hledat co je kam zapojeno.

Do serverů vždy zapojujeme kabely konzistentně napříč switchi. To znamená, že jeden server používá vždy jedno číslo portu napříč switchi. Nestane se, že by byl server v jednom switchi zapojen do portu 35 a ve druhém do portu 22.

Umístění switchů

Switche umístěné uprostřed racku

S kabeláží souvisí také umístění switchů v racku. Switche umisťujeme vždy na nejvyšší pozice v racku. Vždy tak, aby měly porty směrem k portům serveru. Tahat kabeláž z přední části racku do zadní je náročné a stojí to další prostor. V našich začátích jsme zkoušeli switche umístit doprostřed, což nám sice přineslo výhodu v kratších kabelech a polovičních svazcích. Bylo ale velmi težké kabely rozdělit a překřížit tak, abychom byli schopni switche z racku vyndat bez vlivu na ostatní provoz.

Je dobré si také správně rozmyslet pořadí switchů podle rozmístění portů. U supermicro serverů bývá větši mezera mezi uplink porty a management portem, což ovlivňuje délku potřebného kabelu a tím i přebytek.

Tím, jak používáme kabely běžných délek musíme také pracovat s přebytky. Kabely v tomto případě ve svazku otočíme o 180° a jdeme s kabelem kousek nahoru. Zkoušeli jsme také s přebytkem pracovat za servery - tzn. kabely šly směrem ke zdrojům a pak se vracely k portům. To se nám ale nepovedlo udělat pořádně a vytvářeli jsme tím celkem ostrý zlom u kabelu.

PDU

Na začátek zmíníme, že jsme zatím nenašli PDU, které by nám 100% vyhovovaly a stále hledáme vhodné řešení. Vesměs máme 3 jednoduché podmínky.

Šířka

Pro maximální využítí prostoru v racku preferujeme, když je PDU na straně a nezabírá prostor pro servery. Abychom toho dosáhly, tak potřebujeme, aby se vešly 2 PDU vedle sebe do prostoru mezi dveře a servery.

Počet portů

Obecné racky se snažíme připravit tak, že ve 42U racku bude 42 kusů 1U zařízení a každé z nich bude mít 2 napájecí zdroje. Celkem se tedy jedná o 84 kusů dohromady na dvou větví.

C13 blokuje napájecí zdroj Hloubka se zapojeným kabelem

Hloubka PDU s kabelem je pro nás důležitá kvůli servisu napájecích zdrojů a žiletek, které kolem nich musíme být schopni vytáhnout bez odpojení kabelu. Z PDU tedy nesmí vystupovat nic, co by tomu bránilo. Natož pak třeba lokální jistič. Na tento problém jsme narazili při použítí PDU s C13 sloty, které jsme kvůli tomu přestali používat ačkoliv měli dobrou hustotu portů.

Současné řešení

V jednom racku jsme experimentálně nainstalovali celkem 4 kusy IP-BA-312UT8C316, kde každá má 12 UTE slotů a 8 C13 slotů. Až budeme obměňovat hardware v tomto racku, tak PDU také vyměníme.

V současné době se nám nejvíce osvědčilo používat základní PDU DP-RP-09-UTE. Pro spodní polovinu racku je používáme v kombinaci s DP-RP-03-UTE. Získáme tím 11 slotů na každou fázi. Pro horní polovinu racku používáme dvě DP-RP-09-UTE, čímž získáme 17 slotů na každou fázi. Celkem na celý rack máme dostupných 28 slotů. Pro napájení 42 zařízení bychom ještě potřebovali 14 slotů.

Obecně se tuto situaci snažíme řešit tak, že pro napájení switchů používáme Y kabely. V některých případech dáme do přední části proti switchům do 1U 2 kusy DP-RP-03-UTE a switche zapojíme do nich.

Další trik, kterým si pomáháme je použití Supermicro twin serverů. Získáme 2 nebo 4 servery na 2U, ale protože všechny žiletky sdílí 2 zdroje, tak pouze za cenu 1 slotu v PDU pro každou větev.

A v poslední řadě pro připojení malého množství serverů používáme Y kabely. Ty mají zásadní nevýhodu v tom, že jsou prostorově objemnější a dělají se jen v délkách mezi 1,5m a 2m.

Sice naše zapojení napájení serverů nevypadá tak pěkně jako v případě síťových kabelů. Pro nás je ale mnohem důležitější, abychom byli schopni servisovat servery maximálně jednoduše.