AZURE varmistukset
Tein Azure ympäristööni parannuksia muuttamalla domain kontrollerin Server coreksi, että saisin sen vieläkin edullisemmin ja säästäisin virtuaali- rautaa. Tätä tehdessäni tuli mieleen että, miten saisin kätevästi tehtyä varmuuskopion – jos core muutoksessa menisikin jotain pieleen tai haluaisin palauttaa käyttöliittymällinen domain kontrollerin nopeasti – ilman käyttökatkoa…tai edes lähes
Tässä testattuna ja hyväksi todettuna. Tässä siis suomennettuna ja testattuna. Ole varovainen palautuksen kanssa. Virtuaalikone todellakin tuhotaan operaation aikana. Sen palauttaminen keskeytyneen skriptin tms. jälkeen voi olla haasteellista… Onnistuin itse välillä kaatamaan palautuksen kun data levyjä oli useampia. Palauttelin tällaisen jälkeen vm:n Azure Management Studiolla (http://www.cerebrata.com/products/azure-management-studio/introduction)
Ensinnäkin en alkanut ensin lisäämään automaatiota, vaan tein yhden Azure virtuaalikoneen kerrallaan. Nyt käytän varmistuksiin ja palautuksiin ‘manuaalisesti’ koneen mukaan nimettyjä PowerShell skriptejä.
Varmuuskopiointi koostuu seuraavista vaiheista:
- Olettamukset ja valmistelut
- Valitse virtuaalikone joka kopioidaan
- Identifioi jokainen virtuaali- levy
- Luo storage container varmistuksen tallennukseen
- Varmuuskopio virtuaali koneet cloud storageen Windows Azuressa.
Aluksi tarvitaan ‘olettamukset ja alustus’
Lokitus omaan paikalliseen hakemistoon ja muuttama muu juttu…
Jos sinulla sattuu olemaan useita Azure tilauksia (subscriptions) ja haluat jonkin käsittelyyn jonkin muun kun nykyisen online profiiliisi linkatun tilauksen. Varmista seuraavalla skriptillä oikea kohde. Minulla esimerkiksi on arvosoft@hotmail.com vain protoiluun ja muutamia muita Microsoft tilejä eri asiakas ja kehitys projekteihin.
Muussa tapauksessa vain sertit import ja azure on autentikoitu…
Get-AzureVM tekee listan virtuaalikoneista tässä tilauksessa ja nyt autentikoidulla sertifikaatilla. Alla olevassa kuvassa on kaikki koneet pois päältä ja silloin niitä ei voida käsitellä. Ainakin käsiteltävä kone on oltava päällä ja provisoituna normaalisti. Skiripti sammuttaa sen , mutta jättää tilaan ready (allokoitu)
Kun domain kontroller virtual kone on käynnissä näyttää Get-AzureVM tulos tältä:
Valitse virtuaali- kone, joka varmistetaan
Kone voidaan valita cmdletillä Get-AzureVM. Kun ajat sen ilman sellaisenaan, saat listan provisioiduista virtuaalikoneistasi. Talleta haluttu virtuaalikone $vm muuttujaan ja pysäytä se jättäen se provisioituun tilaan.
Varmistus, että virtuaalikone on oikeassa tilassa:
Paikallista ja tunnista tarvittavat OS ja Data levyt
OS levyjä on vain yksi, mutta data levyjä voi tietysti olla useampia. Ne haetaan omiin muuttujiinsa ja Data levyt ovat ‘collection’ ja ne pitää luupata läpi.
Luodaan storage container käyttämällä medial link ominaisuutta.
Ja vielä varmistus, että storage luotiin oikein. Sen voi tietenkin kurkata myös muilla työkaluilla tai azure web hallinta saitilla.
Tässä power shell ja saitti:
Nyt on kaikki valmista varsinaisen varmistuksen tekoon. Ensin muutama variaabeli Blob käyttöön ja sitten menoksi…
Yllä muuttujan ja varmistus, että ne on muodostettu oikein.
On hyvä huomioida, että kopiointi on asynkroninen ja se toteutetaan taustalla. CopyState:lla voidaan varmistaa edistymisen tila.
Enää jäljellä onkin data levyjen varmistuskopiointi, joka toteutetaan luuppaalla kaikki läpi.
Tässä tapauksessa, koska muita levyjä ei ollut lopputulos näyttää tältä:
Varmistuksen palauttaminen
Ehkä tärkeämpi osuus tässä on edellisen osan varmistusten palauttaminen. Tässä sen vaiheet:
- Valitse palautettava virtuaalikone
- Paikanna ja identifioi jokainen virtuaalilevy joka palautetaan
- De-provisio virtuaali kone palautettavaksi
- Palauta virtuaalikoneen käyttöjärjestelmälevy (OS Disk)
- Palauta virtuaalikoneen muut levyt, jos sellaisia on.
- Uudelleen provisioi virtuaalikone
Valitse palautettava virtuaalikone
Edellisen osan varmistuskopioitu virtuaalikone voidaan valita komennolla Get-AzureVM. Ilman parametreja sellaisenaan suoritettuna se palauttaa listan virtuaalikoneista jotka ovat provisioitu – käytettävissä tällä hetkellä.
Get-AzureVM
Tietyn virtuaalikoneen valinta tehdään laittamalla ServiceName ja Name arvot parametreiksi ja ohjaamalla tulos uuteen variaabeliin.
$vm = Get-AzureVM -ServiceName ArvoLab-ARVOSOFT -Name ARVOSOFTDC
Tämän jälkeen valittuun virtuaalikoneeseen voidaan viitata variaabelilla $vm.
Samaan tapaan kun edellisissä osassa, on virtuaalikone oltava samutettuna, mutta provisioituneena. Se kuitenkin käynnistetään lopuksi erillisellä komennolla aivan viimeisenä.
$vm | Stop-AzureVM –StayProvisioned
Kun kone on oikeassa tilassa, voidaan edetä seuraavaan aiheeseen, jossa paikallistetaan ja identifioidaan virtuaalikoneen kaikki virtuaali levyt jotka halutaan palauttaa.
Paikanna ja identifioi jokainen virtuaalilevy joka halutaan palauttaa
Käyttöjärjestelmälevyn sijainti haetaan tallennusta varten komennolla Get-AzureOSDisk .
$vmOSDisk = $vm | Get-AzureOSDisk
Kaikilla virtuaalilevyillä on kaksi ominaisuutta jotka ovat tarpeen varmistuksissa ja palautuksissa. nämä ovat DiskName ja MediaLink arvot jotka näkyy kuvassa alla. Näillä tiedoilla saamme kunkin virtuaalikoneen kaikki levyt varmuuskopioitua ja palautettua.
Common Property Values for a Windows Azure Virtual Hard DiskMuiden kun käyttöjärjestelmä levyjen vastaavat toimenpiteet (sijainti) tehdään komennolla Get-AzureDataDisk. Koska virtuaalikoneilla voi olla useita levyjä tuloksena palautuu tietojoukko (collection of DataVirtualHardDisks).
-
De-provisioi virtuaalikone palautettavaksi
Provisioidut virtuaalikoneet pitävät kirjaa levyistään – ja muista ominaisuuksistaan – ettei ne ole vahingossa tai epähuomiossa poistettu tms. Tämän takia virtuaalikoneen konfiguraatio on varmistettava kopioimalla se talteen paikalliselle levylle ensin ja sitten kyseinen virtuaalikone ‘tuhotaan’ uuden palautettavan koneen tieltä. Tämä on kuitenkin onneksi yksinkertaisesti tehtävissä vain muutamalla lisärivillä PowerShell koodia.
Ensin, Luodaan uusi paikallinen kansio XML failia varten. Virtuaalikoneen konfiguraatio xml tallennetaan tänne palautuksen ajaksi.
$exportFolder = "C:\ExportVMs"
if (!(Test-Path -Path $exportFolder)) {
New-Item -Path $exportFolder -ItemType Directory
}
Ja tänne kopiodaan XML faili jota käytämme palautusprosessin loppuvaiheessa re-provisioinnissa.
$exportPath = $exportFolder + "\" + $vm.Name + ".xml"
$vm | Export-AzureVM -Path $exportPath
Kun kopiointi on varmasti tehty voidaan suorittaa Remove-AzureVM komento jolla virtuaalikone poistetaan/tuhotaan palautuksen valmistelutoimenpiteenä.
-
Remove-AzureVM -ServiceName $vm.ServiceName -Name $vm.Name
Restore Windows Azure VM OS Disk
Tässä vielä muutama variaabeli palautuksen onnistumiseksi.
$vmOSDiskName = $vmOSDisk.DiskName
$vmOSDiskuris = $vmOSDisk.MediaLink
$StorageAccountName = $vmOSDiskuris.Host.Split(’.’)[0]
$vmOSBlobName = $vmOSDiskuris.Segments[-1]
$vmOSOrigContainerName = $vmOSDiskuris.Segments[-2].Split(’/’)[0]
$backupContainerName = “backups”
Koska virtuaalikoneen poiston jälkeen on usein levyissä tieto niiden liitoksesta tiettyy virtuaalikoneeseen, on tässä hyvä odottaa hetki suorittamalla while loop tarkistamaan liitoksen poistuminen.
While ( (Get-AzureDisk -DiskName $vmOSDiskName).AttachedTo ) { Start-Sleep 5 }
-
Sen jälkeen poistaminen onnistuu.
Remove-AzureDisk -DiskName $vmOSDiskName –DeleteVHD
-
Poiston jälkeen palautus voidaan suorittaa komennoilla Start-AzureStorageBlobCopy ja Get-AzureStorageBlobCopyState :
Start-AzureStorageBlobCopy -SrcContainer $backupContainerName -SrcBlob $vmOSBlobName -DestContainer $vmOSOrigContainerName –Force
-
Get-AzureStorageBlobCopyState -Container $vmOSOrigContainerName -Blob $vmOSBlobName –WaitForComplete
-
Add-AzureDisk -DiskName $vmOSDiskName -MediaLocation $vmOSDiskuris.AbsoluteUri -OS Windows
-
Tähän loppuu käyttöjärjestelmälevyn palautus prosessi.
Palauta virtuaalikoneen muut mahdolliset levyt
Koska levyjä voi olla useita, käytetään tässä for each looppia läpikäyntiin
ForEach ( $vmDataDisk in $vmDataDisks ) {
$vmDataDiskName = $vmDataDisk.DiskName
$vmDataDiskuris = $vmDataDisk.MediaLink
$vmDataBlobName = $vmDataDiskuris.Segments[-1]
$vmDataOrigContainerName = $vmDataDiskuris.Segments[-2].Split(’/’)[0]
While ( (Get-AzureDisk -DiskName $vmDataDiskName).AttachedTo ) { Start-Sleep 5 }
Remove-AzureDisk -DiskName $vmDataDiskName –DeleteVHD
Start-AzureStorageBlobCopy -SrcContainer $backupContainerName -SrcBlob $vmDataBlobName -DestContainer $vmDataOrigContainerName –Force
Get-AzureStorageBlobCopyState -Container $vmDataOrigContainerName -Blob $vmDataBlobName –WaitForComplete
Add-AzureDisk -DiskName $vmDataDiskName -MediaLocation $vmDataDiskuris.AbsoluteUri
}
Tämän jälkeen kaikki levyt ovat valmiina ja virtuaalikone voidaan provisioida.
Uudelleen provisio virtuaalikone
Tähän käytetään Import-AzureVM komentoa. Uudelleen provisioinnin jälkeen virtuaalikoneen tiedot ovat liitetty palautettuun kopioon koneesta alussa tallennetun XML konfiguraatiotiedoston mukaan.
Import-AzureVM -Path $exportPath | New-AzureVM -ServiceName $vm.ServiceName -VNetName "InSpeed-network"
Siinäpä se!.
Kiitokset / Special thanks for excellent article beleongs to Keith Mayer
Tämän inspiraationa löytyy alkuperäinen Keith Mayerin ratkaisu hänen blogista: