Skip to content

AZURE varmistukset

maaliskuu 9, 2015

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 Smile

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…

image

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…

image

image

image

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)

image

Kun domain kontroller virtual kone on käynnissä näyttää Get-AzureVM tulos tältä:

image

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.

image

Varmistus, että virtuaalikone on oikeassa tilassa:

image

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.

image

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:

image

image

Nyt on kaikki valmista varsinaisen varmistuksen tekoon. Ensin muutama variaabeli Blob käyttöön ja sitten menoksi…

image

Yllä muuttujan ja varmistus, että ne on muodostettu oikein.

image

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ä:

image

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

    image

    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

    image

    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.

     image
    Common Property Values for a Windows Azure Virtual Hard Disk

    Muiden 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).

    $vmDataDisks = $vm | Get-AzureDataDiskimage

  • 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

            }

    image

    Ja tänne kopiodaan XML faili jota käytämme palautusprosessin loppuvaiheessa re-provisioinnissa.

    $exportPath = $exportFolder + "\" + $vm.Name + ".xml"

    $vm | Export-AzureVM -Path $exportPath

    image

    Kun kopiointi on varmasti tehty voidaan suorittaa Remove-AzureVM komento jolla virtuaalikone poistetaan/tuhotaan palautuksen valmistelutoimenpiteenä.

  • image

    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 }

  • image

    Sen jälkeen poistaminen onnistuu.

    Remove-AzureDisk -DiskName $vmOSDiskName –DeleteVHD

  • image

    Poiston jälkeen palautus voidaan suorittaa komennoilla Start-AzureStorageBlobCopy ja Get-AzureStorageBlobCopyState :

    Start-AzureStorageBlobCopy -SrcContainer $backupContainerName -SrcBlob $vmOSBlobName -DestContainer $vmOSOrigContainerName –Force

  • image

    Get-AzureStorageBlobCopyState -Container $vmOSOrigContainerName -Blob $vmOSBlobName –WaitForComplete

  • image

    Add-AzureDisk -DiskName $vmOSDiskName -MediaLocation $vmOSDiskuris.AbsoluteUri -OS Windows

  • image

    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:

http://blogs.technet.com/b/heyscriptingguy/archive/2014/01/24/create-backups-of-virtual-machines-in-windows-azure-by-using-powershell.aspx

Mainokset

From → Azure, Cloud

Jätä kommentti

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s

%d bloggers like this: