OnPrem adatbázisok Azure költség becslése migrálás előtt

Augusztus közepén megjelent a Database Migration Assistant újabb verziója (innen letölthető a v4.0). Ez a verzió már nem csak egy-egy adatbázis szerver verzió frissítésben, Azure költözésben tud segíteni, de már becsült költséget is meg tudja mondani egy adott környezetre vonatkozóan. Lássuk is, hogyan lehet ezt használni.

Előkövetelmények, teszt környezet

A teszt környezet egy Windows Server 2016 lesz SQL Server 2016-os verzióval. Ezen túl az alábbi beállításokat kell elvégezni:

  1. winrm beállítás: szükség van a szerveren a remote winrm elérésre. Itt nem részletezem a miérteket, sem a biztonságot, ahhoz hogy működjön az eszköz az alábbi parancsot kellett elevált módban futtatni:
    winrm quickconfig -transport:https
  2. .NET 4.5.2 vagy újabb, 64 bites változat telepítése.
  3. Minden script és parancs a DMA mappájának a kontextusában kell fusson, ami az én esetemben: C:\Program Files\Microsoft Data Migration Assistant

Szerver adatgyűjtés

Ahhoz, hogy árakat és szolgáltatási szinteket tudjon becsülni az eszköz, előbb adatokat kell gyűjtenie. Az adatgyűjtés egy PowerShell script segítségével történhet a kiértékelés pedig két módon:

  1. Offline
  2. Online

Adatgyűjtés

Az alábbi PowerShell script fogja begyűjteni a szükséges adatokat a szerverről.

.\SkuRecommendationDataCollectionScript.ps1 ` 
-ComputerName SQL2016 `
-OutputFilePath C:\temp\DMA\counters_SQL2016.csv `
-CollectionTimeInSeconds 120 `
-DbConnectionString "Server=.;Initial Catalog=master;Integrated Security=SSPI;"

A paraméterek jelentése:

  • ComputerName: ez annak a gépnek a hálózati neve, amelyiket vizsgáljuk.
  • OutputFilePath: ez lesz majd a kimeneti csv file, amiben az összegyűjtött performance counter és egyéb szerver információk lesznek.
  • CollectionTimeInSeconds: ez lesz a performance counter-ek mintavételezési ideje. Itt minimum 40 perc az ajánlott, de a tapasztalat azt mutatja, hogy ettől több időre van szükség egy pontosabb becslésre.
  • DbConnectionString: a ComputerName-ben megadott SQL Server példány eléréséhez szükséges connection string. Lásd még korlátok.

Offline kiértékelés

Az offline kiértékelés azt jelenti, hogy a telepített verzióban elérhető adatok alapján végzi el a költség becslést. Ehhez az alábbi parancsra van szükség:

DmaCmd.exe 
/Action=SkuRecommendation 
/SkuRecommendationInputDataFilePath="C:\temp\DMA\counters_SQL2016.csv" 
/SkuRecommendationTsvOutputResultsFilePath="C:\temp\DMA\prices.tsv" 
/SkuRecommendationJsonOutputResultsFilePath="C:\temp\DMA\prices.json" 
/SkuRecommendationOutputResultsFilePath="C:\temp\DMA\prices.html" 
/SkuRecommendationPreventPriceRefresh=true

Természetesen ezeket egy sorba kell tenni, akkor le is fog futni. A paraméterek jelentése:

  • Action: ez a SkuRecommendation kell legyen.
  • SkuRecommendationInputDataFilePath: az adatgyűjtés során generált csv file elérési útvonala.
  • SkuRecommendationTsvOutputResultsFilePath: ez lesz a tsv fomrátumú kimeneti file elérési útvonala.
  • SkuRecommendationJsonOutputResultsFilePath: ez lesz a json fomrátumú kimeneti file elérési útvonala.
  • SkuRecommendationOutputResultsFilePath: ez lesz a html fomrátumú kimeneti file elérési útvonala. Én ezt fogom majd megmutatni itt.
  • SkuRecommendationPreventPriceRefresh: amennyiben ez true, akkor offline, a DMA által ismert árakkal fog dolgozni.

Természetesen nem kell minden kimeneti file típust megadni, én most megadtam. A html output pedig ez lett:

Pár érdekes dologra szeretném felhívni a figyelmet:

  • Amennyiben szeretnénk egy provisioning PowerShell scriptet előállítani, a subscription id, resource group, server name, admin username és password megadása után a Generate Provisioning Script gomb megnyomásával ezt is elő lehet állítani (működik!).
  • A régió váltás is lehetséges, ebben az esetben az adott régióra vonatkoztatott árak jelennek meg.
  • Lehet állítani a szolgáltatási szinteken is, ebben az esetben az árak változhatnak.
  • Ennek a bejegyzésnek az írásakor a Microsoft ad kedvezményt, abban az esetben, ha van már SQL Server licensz. Ekkor be kell pipálni az "I already have a SQL Server License" melletti checkbox-ot, majd a provisioning script-be is bekerül a AzureSqlDbProvisioningDatabaseLicenseIncluded=true kapcsoló a DmaCmd.exe-hez. Így a számlázásnál ezt is figyelembe fogja venni. Ez utóbbit még nem ellenőriztem, pár napos ez a verzió ;).

Online kiértékelés

Hol is kezdjem, a dokumentáció nem igazán bőbeszédű pár paraméter hogyanjára, így ezt nekem kellett kitúrni, nem volt egy egyszerű eset, de lehetetlen sem :) Online kiértékelés alatt azt kell érteni, hogy az Azure előfizetésünk szerinti árakon ad költség becslést, ehhez azonban hozzá kell csatlakozni az előfizetésünkhöz. Lássuk előbb a DmaCmd parancsot:

DmaCmd.exe /Action=SkuRecommendation 
/SkuRecommendationInputDataFilePath="C:\temp\DMA\counters_2016.csv" 
/SkuRecommendationTsvOutputResultsFilePath="C:\temp\DMA\prices_online.tsv" 
/SkuRecommendationJsonOutputResultsFilePath="C:\temp\DMA\prices_online.json" 
/SkuRecommendationOutputResultsFilePath="C:\temp\DMA\prices_online.html" 
/SkuRecommendationCurrencyCode=EUR 
/SkuRecommendationOfferName=MS-AZR-0044p  
/SkuRecommendationRegionName=WestEurope 
/SkuRecommendationSubscriptionId=<subscriptionid> 
/AzureAuthenticationInteractiveAuthentication=true 
/AzureAuthenticationClientId=<azureadappclientid> 
/AzureAuthenticationTenantId=<tenantid>

Itt nem minden paraméter raktam be, csak azokat, amiket most itt meg szeretnék mutatni. A teljes paraméter lista itt elérhető. Lássuk a fenti paramétereket:

  • SkuRecommendationInputDataFilePath: az adatgyűjtés során generált csv file elérési útvonala.
  • SkuRecommendationTsvOutputResultsFilePath: ez lesz a tsv fomrátumú kimeneti file elérési útvonala.
  • SkuRecommendationJsonOutputResultsFilePath: ez lesz a json fomrátumú kimeneti file elérési útvonala.
  • SkuRecommendationOutputResultsFilePath: ez lesz a html fomrátumú kimeneti file elérési útvonala. Én ezt fogom majd megmutatni itt.
  • SkuRecommendationCurrencyCode: az árak pénzneme. Itt most EUR lesz.
  • SkuRecommendationOfferName: árazást befolyásoló ajánlat kódja. Itt most a free trial kód van beírva, de a teljes lista itt elérhető.
  • SkuRecommendationRegionName: Azure adatközpont régió meghatározása, ami szintén befolyásolhatja az árakat.
  • SkuRecommendationSubscriptionId: ez az Azure előfizetés azonosítója, lásd később.
  • AzureAuthenticationInteractiveAuthentication: ebben az esetben egy felugró ablakban fogja bekérni az előfizetéshez tartozó/szükséges felhasználó azonosítót és jelszót. Fentebb írtam, hogy több paraméter is van, létezik tanúsítvány alapú hitelesítés is. Itt most az interaktív hitelesítést választom.
  • AzureAuthenticationClientId: ez lesz az Azure AD application azonosítója, lásd később.
  • AzureAuthenticationTenantId: ez a tenant id, lásd később.

Van itt pár paraméter, amivel először nem nagyon tudtam mit kezdeni és/vagy fogalmam sem volt, hogy honnan kellene elővarázsolni. Lássuk ezeket.

SkuRecommendationSubscriptionId 

Ezt az információt az Azure portálon lehet megtalálni, ehhez be kell jelentkezni a https://portal.azure.com oldalon, majd a bal oldali menüben ki kell választani a Subscriptions menüpontot és a jobb olalon a megjelenő előfizetések listájában a megfelelő sorból a subscription id oszlopa kell. Lásd alább.

AzureAuthenticationClientId

Ezt az információt már nem volt olyan könnyű előszedni, de ez is az Azure portálon belül, a https://portal.azure.com bejelentkezés után meg lehet találni. Jajj, nem is :), meg kell csinálni, alkalmazás regisztrációt kell csinálni és jogosultságot is kell adni. Ezt az alábbiak szerint lehet megcsinálni.

Először az Azure Active Directory menüpontot, majd az App registration-t kell kiválasztani, ott pedig a New application registration gombot kell megnyomni.

Ezek után meg kell adni az alábbi információkat:

  • Name: ez lesz az alkalmazás neve, én most azt adom neki, hogy DMAv4.
  • Application Type: itt a Native opciót kell kiválasztani.
  • Redirect URI: ide szinte bármit beírhatunk, ebben az esetben nem lényeges. Én most http://DMAv4 adok meg.

Ezek után a Create gomb megnyomása után létrejön az alkalmazás.

Amint az alkalmazás létrejött, meg is kapjuk a hiányzó adatot az AzureAuthetnicationClientId paraméterhez, amit az alkalmazás listában az Application ID oszlopban találunk meg. Fontos, hogy válasszuk ki a szűrésnél az All apps opciót is.

Ezzel meg is van ez a paraméter is, de még jogot is kell adni. Ehhez az alábbi lépésekre van szükség:

  • Nyissuk meg az előzőekben létrehozott alkalmazást.
  • Kattintsunk a Settings gombra, majd a Required Permission menüpontra.
  • A Required Permission részen az Add gombot is nyomjuk meg.

  • Ezek után válasszuk ki a Windows Azure Service Management API-t, majd nyomjuk meg a Select gombot.

  • A Select Permissions résznél válasszuk ki a jogosultságot.

  • Végül a Grant Permission gomb megnyomásával lehet érvényre hozni.

Ezzel a megfelelő jogosultság is rendelkezésre áll a DmaCmd-nek.

AzureAuthenticationTenantId

Ezt az információt is az Azure portálon lehet megtalálni, ehhez be kell jelentkezni a https://portal.azure.com oldalon, majd a bal oldali menüben ki kell választani az Azure Active Directory menüpontit, majd azon belül a Properties és ez lesz a Directory ID. Lásd alább a képen is. Ugye milyen könnyű volt :)

Korlátok

Sajnos a v4.0 verziónak vannak korlátai:

  • named instance nem támogatott (még), ez a DbConnectionString paramétert érinti.
  • régebbi SQL verziók esetén a performance counter adatgyűjtés hibára futhat, mivel olyan méréseket állítana be, ami a régebbi verziók esetén még nincsennek.

Konklúzió

Alap esetekre nagyon jó lehet ez az eszköz, főleg mert nem igényel "túl sok" időráfordítást, ellenben a korlátok miatt elég nehézkes lehet a használata. Várhatóan a visszajelzések mentén, lesz újabb verzió, ami már "minden igényt" ki fog elégíteni. Részemről jónak tartom az eszközt, de nem feltétlen olyan hatékony, mint egy teljes workload analízis. Erre meg mindig azt kapom, hogy a többségnek elég lesz ez is. Valóban, lehet így van, de ettől függetlenül a kellő körültekintés fontos, mert SLA és pénzügyi oldalról is igen érzékenyen érintheti az adott ügyfelet. 

Zárásként, határozottan ajánlom az online kalkulációt, mert akkor kapjuk a pontosabb becslést az árakra, mindig az aktuális árakkal dolgozik ebben az esetben.

Add comment