Korištenje custom imagea u Azure Virtual Machine Scale Setu

Azure  mapaAzure Virtual Machine Scale Set je skup više pojedinačnih virtualnih servera formiranih u grupe radi jednostavnije konfiguracije i održavanja, a uglavnom se koriste u tzv. highly available sustavima.
Scale setovi mogu biti kreirani iz Azure Marketplace imagea ili iz prilagođenih korisničkih imagea. Azure Marketplace images izdaje Microsoft ili neki od njegovih partnera. Oni su generalizirani, odnosno sysprepani, što znači da zahtijevaju dodatnu konfiguraciju kod prvog pokretanja, a zatim i instalaciju svog softvera koji će se koristiti. Baš iz tog razloga je ponekad bolje rješenje kreirati vlastiti image kako bi se u njemu spremio sav dodatan softver koji je naknadno instaliran i/ili konfiguracija koja je naknadno podešena. Na takav način izbjegnemo da kod svakog ponovnog kreiranja virtualnog stroja moramo krenuti s instalacijom “od nule”.

Za kreiranje vlastitog imagea, koristiti ćemo Azure CLI naredbe. Azure CLI je multi platformski command-line alat koji možemo instalirati lokalno na svoje računalo (Windows, macOS, Linux), pokrenuti ga iz Docker kontejnera ili ga koristiti bez instalacije putem Azure Cloud Shella.
Kao prvi korak, trebamo odabrati virtualni stroj koji želimo koristiti za izradu imagea. Dakle, možemo koristiti postojeći stroj ili kreirati novi, te podesiti i instalirati sav potreban softver.

Kada znamo koji će nam stroj biti osnova, možemo definirati varijable koje ćemo kasnije koristiti u svojim naredbama.

RG="MojaResourceGrupa"
IMAGE="/subscriptions/c74c18f8-3900-4f34-b8cd-f2fa6e9517a1/resourceGroups/MojaResourceGrupa/providers/Microsoft.Compute/virtualMachines/MojVM"

Azure terminal slika

Varijabla RG predstavlja naziv Resource Groupe gdje ćemo smjestiti novostvorene resurse, a varijabla IMAGE predstavlja jedinstveni ResourceID virtualnog stroja koji ćemo koristiti za kreiranje imagea.

Da bismo image mogli negdje spremiti, potrebno je kreirati Azure Compute Gallery (Shared Image Gallery). U ovom ćemo primjeru galeriju kreirati u westeurope Azure regiji i nazvati je MojaGalerija.

az sig create --resource-group $RG --location westeurope --gallery-name MojaGalerija

Azure terminal

Image koji se nalazi u galeriji je moguće dijeliti s drugima ili ga podijeliti javno svima.

U sljedećem koraku kreiramo image definition.

az sig image-definition create --resource-group $RG --location westeurope --gallery-name MojaGalerija --gallery-image-definition MojImage --publisher Izdavac --offer centos-7-9 --sku centos --os-type Linux --plan-name centos-7-9 --plan-product centos-7-9 --plan-publisher Izdavac --os-state specialized

Azure terminal

Image definition sadrži detaljnije informacije o imageu – operativni sustav, memorijske ili procesorske zahtjeve, SKU tip, arhitekturu, Hyper-V generaciju VM-a i slično. Kod kreiranja imagea moramo naznačiti izdavača (bio to Microsoftov image ili od nekog njegovog partnera) i ponudu/proizvod, odnosno naziv imagea koji ćemo koristiti kao bazu za kreiranje svog, kasnije prilagođenog (custom), imagea.
U gornjem primjeru kreiramo image definition naziva MojImage, a za njega ćemo koristiti centos SKU, ponudu centos-7-9 izdavača Izdavac. Definiramo da je tip operativnog sustava Linux i da je status operativnog sustava tj. imagea specijaliziran. U suprotnosti s generaliziranim imageom, specijalizirani image znači da je zadržao sve informacije i postavke OS-a iz kojeg je generiran (npr. Computer Name, SID, softver itd.). Generalizacijom se te informacije resetiraju i generiraju ponovno kod prvog pokretanja stroja.

Nakon kreiranja image definitiona, iz njega instanciramo verziju imagea.

az sig image-version create --resource-group $RG --location westeurope --gallery-name MojaGalerija --gallery-image-definition MojImage --gallery-image-version 1.0.0 --target-regions "westeurope=1" --managed-image $IMAGE

Isjecak iz terminala

Kada želimo da image sadrži naknadno izvršenu nadogradnju, instalaciju novog softvera ili neku drugu izmjenu, moramo kreirati novu verziju imagea. Na primjer, možemo imati image verzije 1.0.0 na koji smo aplicirali posljednje nadogradnje operativnog sustava ili nekih paketa/librarya. U tom je slučaju nužno kreirati novu verziju 1.0.1 koja će sadržavati te izmjene.

Naposljetku, kreiramo VM Scale Set kojemu dodijelimo posljednju dostupnu verziju imagea.

az vmss create --name MojVMSS --resource-group $RG --instance-count 5 --lb-sku Standard --image "/subscriptions/c74c18f8-3900-4f34-b8cd-f2fa6e9517a1/resourceGroups/MojaResourceGrupa/providers/Microsoft.Compute/galleries/MojaGalerija/images/MojImage/versions/1.0.0" --generate-ssh-keys --plan-name centos-7-9 --plan-product centos-7-9 --plan-publisher Izdavac --location westeurope --specialized

Isjecak iz terminala

Za parametar --image dajemo ResourceID zadnje verzije imagea.

U slučaju kada smo, na primjer, ažurirali operativni sustav s posljednjim nadogradnjama ili instalirali novi softverski alat, te je zbog toga kreirana novija verzija imagea (npr. 1.0.1), potrebno je ažurirati referencu imagea koji se koristi za kreiranje novih instanci u scale setu.

az vmss update --resource-group $RG --name MojVMSS --set virtualMachineProfile.storageProfile.imageReference.id=/subscriptions/c74c18f8-3900-4f34-b8cd-f2fa6e9517a1/resourceGroups/MojaResourceGrupa/providers/Microsoft.Compute/galleries/MojaGalerija/images/MojImage/versions/1.0.1

Isjecak iz terminala

Za parametar virtualMachineProfile.storageProfile.imageReference.id dajemo ResourceID nove verzije imagea.

Kao i kod svakog featurea, korištenje prilagođenih imagea ima svoje prednosti i nedostatke.
Kao prednosti možemo izdvojiti da je provisioning virtualnog stroja iz takvog imagea vrlo brz, a virtualni strojevi kreirani iz istog imagea su identični. Zbog toga je scale set u kombinaciji s load balancerom dobro rješenje za servise ili aplikacije koje zahtijevaju povremeno povećanje resursa, prvenstveno zbog svoje fleksibilnosti i ekonomiziranja troškova.
Također, prednost korištenja vlastitih imagea je činjenica da imate kontrolu nad životnim tijekom tih imagea. U situaciji kada koristite Microsoftov ili javni image nekog drugog izdavača, nemate kontrolu nad time kada će isti ukloniti iz Azure Marketplace-a.
Jedan od nedostataka je da automatska nadogradnja OS imagea nije dostupna kod prilagođenih imagea. Osim toga, bilo kakva izmjena u imageu podrazumijeva rekreiranje nove verzije.

 

Povezani članci

Odgovori