Mohou v cloudu někdy dojít servery? Dlouhodobě určitě ne, ale události jako byl začátek COVID (a s tím spojený masivní nárůst spotřeby služeb jako Teams) nebo dočasný nedostatek serverů nějakého speciálnějšího typu v nějakém regionu se vyskytnout mohou a to i ve velkých cloudech. Je to vzácné, ale možné. Technická havárie datového centra (nebo celé zóny) vzhledem k HA a DR ostatních zákazníků jistě také zvýší nároky na kapacitu v těch zbývajících.
Řešením je typicky zkusit to o chvilku později, ideálně večer, a pokud to nepomůže, tak zvolit jiný typ serveru, jinou zónu a nebo jiný region.
Běžící nehavarovanou VM vám nikdo nevezme (nikdo neřekne tuhle VM vypínáme, dostane ji někdo jiný - samozřejmě s výjimkou Spot instancí, které slouží přesně na využití zbytkové kapacity pokud tolerujete, že nikdy nevíte dopředu kolik čeho dostanete a jaká bude aukční cena), takže by vlastně stačilo ji mít pro jistotu dopředu spuštěnou a je to. Jasně, pokud by to byl třeba AKS node, tak na něj pak pustíte kontejnery podle potřeby, ale u starších aplikací to může znamenat hodiny instalace nebo dokonce tým ani neví jak na to (má připravený image od dodavatele například). Představme si teď, že mám legacy aplikace, které neumí nějaký cluster. App1 běží v AZ1, App2 v AZ2 a chtěl bych mít jistotu, že v AZ3 mám garantovanou kapacitu na to, abych v něm spustil buď App1 nebo App2, pokud by AZ1 nebo AZ2 vypadla (tedy chci režim N+1 aka spare nikoli 1+1 aka hot-standby pro každou aplikaci zvlášť). U kontejnerů je to jedno, na AKS node jednoduše hodím kontejnery App1 nebo App2, ale u legacy aplikace to bude spíš o tom, jaký spustím image. VM tedy efektivně nahodím až když vím jaký image potřebuji - a hodilo by se mi SLA, že tam pro ni budu mít dedikovaný prostor. O tom jsou on-demand capacity reservation.
Rezervaci si snadno zajistíte přes portál, API, PowerShell nebo ARM/Bicep šablonu.
V tento okamžik (tedy až bude služba dostupná v GA) máte SLA na to, že rezervace je vaše a můžete si spustit VM. To lze udělat například v průvodci vytváření VM:
Další možností je použít existující VM, ale nejdřív ji musíte vypnout a spustit v capacity rezervaci.
Rezervace kapacity má svoje vlastní SLA, které zatím nebylo zveřejněno - jasné bude jakmile půjde tato funkce z preview do GA.
Efekt vytvoření rezervace kapacity je vlastně stejný, jako spuštění VM. Scheduler vám najde volnou kapacitu a tu vám zabere - stejně, jako kdyby tam běželo vaše VM. S tím souvisí logická věc - je to stejné, jako kdyby VM běželo i finančně. To znamená pokud jedete v režimu pay as you go, platíte jeho plnou cenu. Nicméně pro některé případy viz dále to dává smysl. Ještě častější ale bude kombinace s Reserved Instance. Ta říká, že si rezervujete VM na rok, například 8 cores typu Dav4 v regionu West Europe a získáte velmi pěknou slevu. Tahle rezervace vám sice dává přednost na zdroje, ale ne jejich garanci. Ostatně je tam velká flexibilita - neříkáte v které zóně (platí to automaticky na všechny), neříkáte jestli to má být jedna 8-corová mašina nebo dvě 4-corové a své rozhodnutí o regionu můžete kdykoli změnit a rezervaci si přesunout jinam. Za Reserved Instance platíte bez ohledu na to, jestli nějaké takové VM běží nebo ne - efektivně tedy platíte RI a VM máte díky tomu “zdarma”. Nedává tedy smysl takovou VM nepoužívat, takže pokud jste rozhodnuti v které zóně ji chcete, udělejte si on-demand capacity rezervaci - nic navíc vás to nestojí a k moc pěkně ceně si přidáte i rezervovanou fyzickou kapacitu v konkrétní zóně.
S tím souvisí další logická věc - rezervace kapacity nemůže vědět, jestli tam pak bude OS zdarma (Linux, Windows financované přes AHUB) nebo z cloudu placené Windows - proto rezervovaná kapacita stojí jen compute, dokud nad ní nepustíte Windows.
Tady jsou za mne nejdůležitější scénáře použití:
Takhle tedy funguje on-demand capacity reservation v Azure a zejména bych ji doporučil, pokud máte tradiční workload a nakoupenou reserver instance.