Azure Virtual Machine Scale Set
Azure 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, koristit ć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.
Odabir virtualnog stroja
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"
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
Image koji se nalazi u galeriji je moguće dijeliti s drugima ili ga podijeliti javno svima.
Kreiranje image definitiona
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
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.
Instaciranje verzije imagea
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
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
Za parametar --image
dajemo ResourceID zadnje verzije imagea.
Ažuriranje reference 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
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. Virtualni strojevi kreirani iz istog imagea su identični. Zbog toga je scale set u kombinaciji s load balancerom dobro rješenje. Pogotovo 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.