Nahliadnite do fungovania webovej časti infraštruktúry, ktorá prešla za posledné roky rôznymi podobami. V súčasnosti dokončujeme migráciu na jej najnovšiu verziu. Pri jej návrhu sme čerpali z bohatej histórie a vybrali to najlepšie. Niečo sme zmenili, niečo pridali a teraz sa už iba pozeráme na farebné grafy (haha, to určite).
Základom je webový server, kreatívne nazvaný web-X (kde X je celé kladné číslo), server s 24-32 jadrami, 128GB RAM a 6-10 SSD diskami. Ako operačný systém používame LTS verzie Ubuntu. Problémom sa snažíme predchádzať a preto tam, kde nám to switche umožňujú, používame active-active bonding pomocou LACP, inde active-pasive. Všetky servery však majú konektivitu zdvojenú. Rovnako aj redundantné napájanie.
Kontajnery
Nosnou myšlienkou architektúry je skrytie jednotlivých verzií aplikačného softvéru ako je Apache do kontajnerov. Nerobíme to len preto, že kontajnery sú moderné, ale že nám umožňujú lepšie používať staré a ťažko udržiavateľné verzie softwaru, ktorému už dávno skončila podpora na aktuálnej verzii operačného systému.
Konfiguračný manažment
Po zavedení konfiguračného manažmentu vo firme už nebolo cesty späť. Síce sme vymenili nástroj – CFEngine za SaltStack, avšak nie prístup, akým ho používame. Celá konfigurácia je aplikovaná pomocou kódu (Infrastructure as Code), ktorý je uložený v Git repozitári, kde sa trackujú všetky zmeny. Konfigurácia nového servera je teda maximálne zjednodušená len na to, že po aplikovaní operačného systému zaradíme server do správnych skupín a necháme Salt-master (prezývaného gru) nech inštruuje svojich minionov (klientov), čo majú robiť. A, že čo znamená aplikovanie operačného systému? To je veľmi dobrá otázka.
Deploy
Na deploy serverov používame nástroj MAAS, ktorý zjednodušuje celý proces obsluhy hardwaru a jeho uvedenie do prevádzky pomocou pár fintičiek s sieťovým PXE bootmi a vzdialenými IPMI príkazmi. MAAS má u seba pripravený obraz aktuálnej LTS verzie Ubuntu, ktorý je upravený pre naše potreby a namiesto inštalácie všetkých komponentov tento obraz rozbalí na pripravený RAID, chroot-ne sa dovnútra, nastaví bootloader a hurá, inštalácia je dokončená. Celý proces je rýchlejší a robustnejší, pretože balíčky netreba sťahovať, inštalovať a konfigurovať po jednom.
Templates
Ďalším veľmi používaným zlepšovákom sú templates (šablóny) pre spomínané kontajnery. Myšlienka na pozadí je v celku jednoduchá: máme Y serverov (Y je aktuálny počet webserverov, v dobe písania tohto článku 75), prečo by sme konfigurovali jednu vec Y-krát, keď nám to stačí spraviť raz, vytvoriť si z toho template a potom to opät “placenúť”, kde treba. Takto vznikol samostatný templatovací server na ktorom Salt-om pripravujeme všetky verzie Apache, PHPčiek a Zionov, ktoré potrebujeme a následne všetky nepotrebné veci odinštalujeme (napr. Spomínaného Salt miniona), template otestujeme a keď sú testy OK (zelená je tá správna farba), môže byť nasadený na webserver.
Tento prístup ma niekoľko príjemných výhod. Okrem ušetreného času potrebného na všetky konfigurácie máme istotu, že nasadená verzia je presne taká, akú sme ju vyrobili a config management nič nezmenil, pretože tam už ani nie je. Ak nastane problém a kontajner nebeží správne, netreba zdĺhavo investigovať, ako ho naštartovať. Stačí znova aplikovať template, ktorý je lokálne pripravený a daná verzia beží opäť ako nová, doslovne. Je to ako keby sa config management staral o každý jeden súbor na serveri.
Takýto templatovací prístup má však aj niekoľko nevýhod, napríklad zvýšené nároky na diskový priestor a dáta prenesené po sieti pri nasadzovaní zmien. Pomocou nášho obľúbeného ZFS a jeho featurkami ako deduplikácia a inkrementálne posielanie snapshotov sa však podarilo tieto dopady minimalizovať.
100% webov na novej architektúre
Na našej architektúre bežia už všetky weby. Aktuálne vylepšujeme proces nasadzovania a testovania templatov a samozrejme, ako vždy, zbierame nápady na novú ešte ultimátnejšiu architektúru. V prípade, že máte akékoľvek otázky k týmto pár riadkom, alebo nápady do budúcna, budeme radi ak nám ich v komentároch posuniete.
Mimochodom, aktuálne hľadáme šikovného kolegu do nášmu IT tímu na pozíciu Site Reliability Engineer. Daj nám o sebe vedieť.