- DC/OS, Azure a cloud native platforma (1): Úvod
- DC/OS, Azure a cloud native platforma (2): Start DC/OS v Azure
- DC/OS, Azure a cloud native platforma (3): Dlouhohrající aplikace s Marathon
Určitě jste zaznamenali pozdvižení kolem kontejnerů a Dockeru, ostatně i na cloudsvet.cz se jim intenzivně věnujeme. Velká trojice orchestrátorů čítá Docker Swarm, Kubernetes a Mesos Marathon, který je součástí Mesosphere DC/OS. O prvních dvou už jsme zde mluvili, dnes začneme seriál nad DC/OS hostovaným v Azure.
Docker a kontejnery vs. orchestrátor
Nejprve malé opáčko, které platí pro všechny orchestrátory.
Kontejner jak jej dnes chápeme je vlastně soustava technologií, které na úrovni operačního systému dokážou zajistit oddělení běžících procesů či skupin procesů (celého stromu). V případě Linuxu jde o cgroups (ty omezují spotřebu zdrojů), namespaces (ty dávají izolovaný pohled, například pid name space způsobí, že se procesy vidí jen v tomto namespace, síťový namespace vám dá virtuální síťovou kartu a nevidíte hostitelské reálné NIC apod.) a k tomu přidáte hrátky se souborovým systémem, typicky nějaký vrstvený FS. V případě Windows Server kontejneru jsou použity jiné fukce dané pochopitelně jiným kernelem.
Docker nevynalezl kontejnery, ale dokázal tyto zmíněné technologie spojit dohromady a zastřešit je jednotným a velmi přijemným API. Najednou byl kontejner neuvěřitelně praktický a jednoduchý na používání. Nad tímto API lze stavět dál a Kubernetes i DC/OS jich umí využívat. Dokonce v tomto směru dochází k jisté míře standardizace, takže i konkurenční formáty (např. CoreOS Rocket) je možné začlenit do jednotného systému (pole standardizace typu OCI, appc, CNCF je komplikované, nechme ho na jindy). Jde to i opačně, takže Windows Server kontejnery, přestože mají pod kapetou jiné technologie, než Linuxové verze, mají identické Docker API.
Docker je ale hodně tažen firmou Docker, která pochopitelně nechce zůstat jen u stavebního bloku kontejnerů, ale chce jít do oblastí orchestrace, správy, zabezpečení. Proto se v rámci Docker najde i Docker Swarm, což už je orchestrátor a přímá konkurence pro Kubernetes a DC/OS.
Orchestrátory vezmou aplikace v kontejnerech a dokáží je rozprosřít přes více-nodové infrastrukturní zdroje, řídit jejich umístění, škálování, balancing a tak podobně.
Nad orchestrátory ještě může běžet cloud-native platforma pro vývoj a provoz mikroslužeb. Ta zajistí i “plnění kontejneru”, tedy neočekává jen předhození hotového image, ale poskytnete jí zdrojový kód aplikace a ona sestaví potřebné prostředí, framework, balíčky a to pro vás po tom provozuje. Taková platforma je nejrychlejší způsob, jak se dostat do světa aplikací zrozených pro cloud a naplno využít možnosti agilního vývoje.
Apache Mesos – víc, než hrátky s kontejnery
Váš osobní počítač má vícejádrový procesor a provozuje větší množství procesů. Představte si, že kliknete na ikonku Wordu a systém se vás zeptá, na jakém coru má běžet. Divné, že? Jádro operačního systému vašeho počítače si vezme zdroje (CPU jádra, paměť, I/O) a automaticky je přiděluje procesům. Mesos udělá něco podobného pro datové centrum, tedy zdroje z různých nodů. To ale ještě nemá nic společného s kontejnery!
Mesos je totiž dvou-úrovňový scheduler a tím se velmi liší od Swarm nebo Kubernetes. Má na kontě zároveň více zkušeností a reálných nasazení, protože vznikl už v roce 2009, tedy pár let před vznikem Dockeru či Kubernetes. Na první úrovni je to správce zdrojů. Velmi komplexní – můžete přidat různé labely k vašim zdrojům a vytvářet komplexní požadavky, například Mesos dokáže dobře odlišit různé rychlosti procesorů, disků, unikátní vlastnosti hardware (instrukční sady), NUMA a tak podobně (ne automaticky, musíte příslušné labely vytvořit a použít, ale jde to). V tomto je rozhodně propracovanější, než třeba OpenStack. Díky tomu můžete v Mesos provozovat velmi různorodé záležitosti. Brutální chroupíní dat s Hadoop a Spark, masivní ukládání dat s Cassandra, ale i provozovat byznys aplikace a kontejnery. Když poklesne zátěž byznys aplikací, začne Mesos přidělovat volné zdroje chroupači dat. Jakmile je hodně požadavků uživatelů byznys aplikací, Mesos odebere zdroje chroupači a přidá je byznys logice.
Mesos rozděluje v první úrovni zdroje frameworkům, což jsou buď samotné šelmostrojové systémy (třeba Spark) nebo Marathon, tedy orchestrátor kontejnerů. Mimochodem je technicky možné jako druhý scheduler použít i Kubernetes.
Mesosphere Marathon a DC/OS
Firma Mesosphere, do které kapitálově vstoupilo jak HPE tak Microsoft, dělá historicky komerční distribuci Mesos a stojí za vývojem dvou příbuzných projektů. Jedním z nich Marathon, což je framework pro Mesos. Je určen právě pro provoz a orchestraci kontejnerů a o něm celý tento seriál bude. Druhý projekt je Metronom, další Mesos framework zaměřený na spouštění naplánovaných úloh (např. spusť určitý kontejner každý den v 6:00) nebo každých pět minut a zpracuj dávku IoT dat apod.
Mesos je kernel datového centra, ale zbývá vyřešit další úlohy – třeba load balancing, service discovery a další, tedy v naší analogii věci, které by měl na starost operační systém (spouštěl procesy v daný čas apod.). Můžete nad Mesos stavět, ale proč si má každý budovat něco takového sám. Mesosphere je autorem DC/OS, open source projektu, který staví na Mesos a Marathon a řeší další služby pro provoz cloud-native aplikací. Samotný Mesos je jádro operačního systému datového centra, DC/OS je totéž + “operační systém” (ostatně proto ten název).
DC/OS v Azure
Extrémní uživatelé Mesos či DC/OS (Airbnb, Apple, eBay, Netflix, PayPal, Twitter, Uber) občas provozují Mesos přímo nad hardwarovou infrastrukturou. Nejčastěji ale budete chtít využít nějakou IaaS službu, nad jejíž zdroje použijete DC/OS. Bude to asi hlavně proto, že velká část aplikací nebude připravena na takto moderní platformu a zůstane po nějakou (doufejme co nejkratší) dobu tak, jak je. Možná máte přísné požadavky na oddělení provozu aplikací pro různé organizační jednotky, zákazníky či bezpečnostní zóny, vývojové a produkční prostředí. Využijete tedy schopnosti IaaS vytvořit taková izolovaná prostředí a v některých z nich využijete DC/OS. Může to být OpenStack či VMware ve vašem datovém centru, ale i public cloud. Microsoft Azure vám to usnadňuje tím, že nemusíte skládat IaaS a sami si řešit instalaci DC/OS, ale využijete Azure Container Service. Ta pro vás připraví kompletní DC/OS (nebo Docker Swarm) cluster během několika minut.
Využít dalších Azure zdrojů či ne? To je důležitá otázka. V DC/OS můžete provozovat datovou vrstvu, třeba MySQL či Cassandra, chroupat data se Sparkem, balancovat provoz s NGINX a tak podobně. Znamená to pro vás nějakou práci, ale díky tomu celý tento orchestr učiníte nezávislým na prostředí, ve kterém běží. Máte přenositelnost aplikace bez jakýchkoli úprav mezi DC/OS v Azure, AWS nebo OpenStack. Na druhou stranu Azure vám nabídne velké množství technologií jako službu. Azure Load Balancer je výkonnější a dost možná logičtější na provoz, než NGINX (balancujete už přístup do clusteru, ne až po té, co už provoz do clusteru vstoupil a možná ne to nejefektivnější cestou). Místo instalace databáze, starání se o ni, řešení HA a replikace, využijete Azure SQL, DocumentDB, BLOB storage, CDN, Machine Learning, HDInsight, Event Hub, Streaming Analytics – zkrátka hotová řešení, která dramaticky zkrátí vaší rychlost uvádění funkcí klíčových pro váš byznys v život.
Podívat se na DC/OS rozhodně stojí za to. Velká trojka Swarm, Kubernetes a DC/OS má rozhodně co nabídnout a Mesos, který je základem DC/OS, má ze všech variant největší zkušenosti z provozu v nejnáročnějších prostředích. Seriál začíná, pokračujeme příště.