Miroslav Holec
Premium

Infrastruktura kolem Azure Virtual Machines

Miroslav Holec   18. července 2017

Tento článek byl napsán v roce 2017. Vývojářské technologie se neustále inovují a článek již nemusí popisovat aktuální stav technologie, ideální řešení a můj současný pohled na dané téma.

Pokud se rozhodnete jít cestou IaaS a založíte si virtuální stroj (Azure VM) na základě některého řešení z marketplace, můžete být překvapeni tím, co vše se kolem takového stroje vytvoří. V tomto článku popíšu základní stavební kameny kolem virtuálních strojů.

Veškerý popis infrastruktury vychází ze zkušeností s VM a OS Win. Je možné, že v případě Linuxových VMs se mohou některé části lišit.

Infrastruktura (high-level)

V tomto článku nebudu zacházet do detailů a budu se držet high-level pohledu na služby, které se paralelně s virtuálním strojem vytváří.

Infrastruktura

Computing

Samotný virtuální stroj může být součástí Availabily Setu (který musí být samozřejmě ve stejné resource group a je nutné jej mít připraven již před vytvářením VM). Availability Set slouží primárně k zajištění dostupnosti v případech, kdy dochází k údržbě virtuálního stroje (ať už plánované nebo neplánované). V případě, že virtuální stroj používá Managed Disky, pak i přichystaný Availability Set musí být "Managed". V rámci Availability Setu lze zvolit počet fault domén (skupina VM sdílejících systémové zdroje) a počet update domén.

Storage

Každý virtuální stroj pracuje se dvěma virtuálními disky (dále už budu psát jen VHD). Na jednom je operační systém a na druhém dočasná data. Druhý zmíněný VHD je mountován jako Temporary Disk a je důležité mít na paměti, že slouží pouze pro systém a nikoliv pro trvalé uchování dat. Systém na tento VHD dává například pagefile a další soubory s dočasnou životností. K VM je samozřejmě možné skrze portál připojovat i vlastní VHD a ty jsou společně se všemi ostatními ukládány v Azure Storage jako page blobs (zamčené a určené pouze pro čtení).

Networking

Oblast networkingu kolem virtuálních strojů je velmi zajímavá a dobře vymyšlená.

Network Interfaces / NIC

Důležitým prvkem je NIC (Network Interface), který tvoří propojení mezi virtuálním strojem a dalšími síťovými prvky. NIC musí být připojen do jedné podsítě v rámci virtuální sítě (VNet) a tato síť musí být ve stejné lokalitě (a subscription) jako NIC. Po tom, co je NIC založen, lze měnit subnet ale pouze v rámci stále stejné virtuální sítě. NIC má svou vlastní MAC adresu, která se nemění po dobu propojení NIC s virtuálním strojem (nemění se ani při restartu). NIC musí mít dále jednu primární IPv4 adresu (statickou nebo dynamickou) a může mít i veřejnou IP adresu. V rámci některých scénářů se lze setkat s ním, že je více NIC připojených k jednomu virtuálnímu stroji (Azure to sám pokud vím nikdy nedělá). NIC je možné k virtuálnímu stroji připojit pouze tehdy, když je VM zastaven a každý VM má právě jednu primární NIC.

Nastavení NIC

IP Adresy

Pokud má NIC nastavenou IP adresu, která je dynamická, pak je virtuální stroj s každým zastavením a následným spuštěním dostupný pod jinou veřejnou IP adresou (při založení dynamické IP adresy není alokována žádná veřejná IP adresa a při zastavení VM je aktuální uvolněna). Proto při vytváření virtuálního stroje dostává k dispozici vývojář i DNS, které se skládá mimo jiné z názvu virtuálního stroje a lokality. V případě statických IP adres se platí poplatek a IP adresa je alokována a zaručena i po restartu virtuálního stroje.

Network Security Group / NSG

NSG si lze představit jako sadu pravidel, kterými se musí připojený prvek řídit. NSG lze připojit přímo k NIC nebo k subnetu. Při vytváření VMs Azure automaticky vytvoří i NSG a tu propojí s podsítí. Zjednodušeně NSG plní funkci firewallu a lze jím řídit co se bude dít se síťovými pakety v závislosti na nastavení.

Azure NSG

Pokud zakládáte VMs s cílem provozovat na něm webový server, bude nezbytné se nastavení NSG věnovat.

Nastavení Azure NSG

Správa a závěrečné poznámky

Při práci s virtuálními sítěmi a virtuálními stroji se občas stane, že se něco dostane do nekonzistentního stavu a GUI je poté nepoužitelné. Například není výjimkou, že virtuální stroj se zastaví, ale tlačítko Start v portálu je disablované. Stejně tak přidělování NIC pro VMs a nastavení primární NIC. Pro práci s VM se mi tedy osvědčilo (resp. mě zachránilo) používání Azure CLI.