- 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
Mesosphere DC/OS jsme minule jednoduše rozběhali v Azure Container Service a dnes už je na čase zkusit první krůčky. Dnes si spustíme “dlouhohrající” úlohu, tedy něco, co dlouhodobě běží (například web server, aplikace apod.). Řeč bude o Marathon framework pro Mesos, který je ale krásně a přímo integrovaný do DC/OS GUI i příkazové řádky.
Dejme scheduleru jednoduchý proces – bash skript
Určitě už čekáte na ty kontejnery, ale nechme je teď chvilku stranou. Kontejner je způsob jak velmi dobře a přenositelně dostat na jednoduchou hromádku aplikaci se vším co potřebuje pro svůj běh. Ve finále je to ale soustava souborů, spouštěcí příkaz a následné běžící procesy. Tak funguje i běžný OS a my nemusíme nutně kontejner použít. Začněme tedy něčím jednoduchým.
Nejprve se připojíme do DC/OS clusteru a samozřejmě zjistíme, že aktuálně žádné zdroje nevyužíváme.
Pojďme do záložky Services a klikněme na Deploy Service.
Spustíme si teď jednoduchý bash skript, který bude dokola něco vypisovat do konzole. Zatím bez kontejneru, pouze proces. DC/OS pro nás najde vhodný node, na kterém to provede. Všimněte si nastavení zdrojů, které chceme rezervovat – 20% jednoho CPU jádra.
Spusťte službu a podívejme se, jak to dopadlo.
Můžeme rozkliknout službu a podívat se na detaily.
Podíváme se do logu.
To vypadá dobře. Pojďme teď tento proces spustit ve více kopiích, třeba 10x. Jděte do služby a změníme škálu.
Během vteřiny uvidíme výsledek.
Stáhneme celou aplikaci
Takový způsob spuštění procesu samozřejmě není nějak zásadně užitečný, protože do okna se nám toho mnoho nevejde a možná bychom potřebovali nejprve stáhnout nějaké soubory, obrázky, zkrátka to, co aplikace potřebuje. DC/OS může při spouštění stáhnout soubory a umístit je do adresáře a to včetně možnosti stáhnout zip/tar s celou aplikací, který DC/OS rozbalí. My si zkusíme udělat totéž, co v předchozím případě, ale místo přímého zápisu do okna si stáhneme skript a ten spustíme.
V okně s příkazem zajistíme spustitelnost souboru a spustíme skript (ale ještě na Deploy neklikejte).
Otevřete Optional a do Uri vyplníme adresu, kde si DC/OS stáhne naše soubory, v mém případě skript.
Spustíme a podíváme se do logu.
Funguje !
Náš první kontejner
Dokázali jsme spouštět procesy, u kterých DC/OS (a především Mesos pod kapotou) zajistil jejich izolaci (cgroups, namespaces). Data a soubory jsme byli schopni dodat ze vzdálené URI. Dnes ale existuje příjemnější a praktičtější způsob, jak vzít aplikaci i s prostředím a zabalit ji tak, že je přenositelná. Ano, Docker kontejner je ta možnost. DC/OS aktuálně pracuje na rozvolnění vztahu mezi Docker API a DC/OS, takže do tohoto systému nejen můžete používat Docker, ale výhledově i jiné potenciální varianty.
Pro dnešek si jen spustíme Docker image s jednoduchým webovým serverem (na ten se ale síťově nedostaneme, nezkoušejte to – k tomu se v seriálu teprve dostaneme).
Protože Docker formát v případě našeho image obsahuje i výchozí vstupní příkaz, nebudeme nic vyplňovat.
Vyplňte název Docker image z veřejného repositáře a spustíme úlohu.
Aplikace nám jede.
A logy z ní vidíme.
Dnes jsme si vyzkoušeli základní funkce DC/OS pro dlouhohrající aplikace. Příště se podíváme na krátkodobé plánované úlohy.