Post

Offline Azure SQL managed instances on-prem

Tovább gyűrűzik a hybrid szolgáltatások köre és úgy néz ki, hogy nem akar elfogyni a Microsoft-nál sem a különböző Azure szolgáltatások földi környezetbe való átültetése. Jó egy évvel ezelőtt írtam az Azure Arc SQL Managed Instance how-t. Maguk a lépések egyszerűek voltak. Kell egy földi kubernetes, onboarding-olni Azure ARC-al, létrehozni Data controller-t és custom location-t és már el is készültek az Azure management SQL szolgáltatásaink. Ekkor létrehozhattunk egy Azure által managelt SQL cluster-t úgy, hogy a metrika, a log-ok direktben felkerültek a kijelölt előfizetésünk megfelelő részeibe. Innen következik, hogy ez egy állandó internet kapcsolatot igényelt, mivel minden management a portálon is elérhető volt, vagyis a földön volt minden, de a felhő kapcsolatot azért soha nem veszítettük el :)

A mostani felállás is hasonló lesz, annyi kivétellel, hogy nem kell minden log-ot Azure-ba küldenünk. Minden! szolgáltatás a földön lesz elérhető, tehát a terhelési monitorozás vagy a log-ok, mind-mind a földön fognak elhelyezkedni és havonta egyszer elég felküldenünk az úgymond fogyasztási adatokat, ami egy emberi szem számára is “olvasható” json lesz.

Hogyan hozzuk létre…

Előfeltételek

Csupán a K8s cluster bevonása maga nem igényel sok erőforrást, de a későbbiekben a “data controller” és az SQL rezervált processzorral és memóriával fognak elindulni, hiába nem terhelik üresen a gépeket.

Így Én azt javaslom, hogy minimum a következő paraméterekkel rendelkezzen a VM:

  • 10 vCpu
  • 20GB Mem
  • 100GB disk

Ezen kívül persze

  • Jogosultság előfizetésben (owner)
  • AzureAD-ban Service Principal létrehozáshoz való jog
  • Azure előfizetés amibe van pár $
  • Rendszergazdai jog

Kubernetes

Az újrahasznosítás jegyében a microk8s létrehozását már egy előző postban leírtam itt,de ismétlés a tudás…

Alap Ubuntu telepítésén sokat nem szeretnék magyarázni, de pár képben azért megmutatom az alapbeállításokat.

img-description
img-description
img-description
img-description
img-description
img-description
img-description
img-description
img-description
img-description
img-description

Persze kézzel utólag is telepíthetjük ;)

1
sudo snap install microk8s --classic

Végül a microk8s-es szolgáltatásokat kapcsoljuk be, hogy készen álljon a telepítésre a környezet, így csatlakozzunk SSH-n és futtassuk le a következőt root-ként:

1
microk8s enable dns storage helm registry dashboard

Direct vs Indirect Data Controller

Két féle Azure Arc data controller van, Direct és Indirect.

  • Direct esetében online a kapcsolat, Azure-ba feltöltjük a log-okat stb.
  • Indirect módban minden adat a földön marad, kizárólag a számlázással kapcsolatos adatokat kell feltölteni, de ezt a feltöltést megtehetjük másik gépről is, nem feltétlenül kell a szerverről.

Korán lelövöm azzal a poént, hogy nem lehet a portálról létrehozni, hiszen ezt arra hozták létre, hogy Azure mentes környezetben valósuljon meg. Ettől függetlenül a portálon itt található.

Nyissuk meg a https://portal.azure.com -ot -> fenti keresőben írjuk be hogy “Azure Arc” majd:

img-description
img-description
img-description
img-description

Fel is hívja a figyelmet, hogy két komponens szükséges, hogy feltelepítsünk a gépünkre. img-description

Előfeltételek telepítése

Telepítenünk kell a következő komponenseket:

  • Azure Data Studio innen tölthetjük le (User Installer-t ajánlom) és telepítsük.
  • Azure CLI innen letölthető, de powershell-ből is telepíthetjük:
1
2
3

$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'; rm .\AzureCLI.msi

  • arcdata bővítmény (ha az Azure CLI-t most telepítettük, akkor nyissunk új terminált)
1
az extension add --name arcdata
  • kubectl innen letölthető. Javasolt az environment-ek közé felvenni, így később automatikusan felismeri majd a Studio.

Ezután nyissuk meg az Azure Data Studio-t, majd telepítsük fel a kért bővítményt.

img-description

Végül, de nem utolsó sorban, be kell szerezni a kube config-ot a feltelepített kubernetes szerverről. Szerencsére könnyen kinyerhető, csak lépjünk be ssh-n keresztül és generáljuk le:

1
2
3
microk8s config >> $HOME/.kube/config

Ezután csak le kell töltenünk a config file-t és helyezzük el.

1
2
3
%USERPROFILE%\.kube

Karakterkódolásra figyeljünk a másolásnál, notepad sajnos elronthatja…

Indirect Data Controller létrehozása

Nyissuk meg a frissen telepített Azure Data Studio-t és kezdjük meg a deployment létrehozását.

img-description
img-description
Ha mindent jól telepítettünk fel és állítottunk be, akkor felismer minden szükséges eszközt.
img-description
img-description
Gyors bejelentkezés

img-description
img-description img-description

Erről a felületről sajnos nincs lehetőség Resource Group-ot létrehozni, így azt előre a portálon kell.
Válasszuk ki, hol is helyezkedjen majd el a datacontroller-ünk. img-description

Fontos! “Kubernetes configuration template” és az “Infrastructure” esetében ezeket válasszuk ki, hiszen ezek alapján fogja legenerálni a kubernetes-nek a konfigurációt. Ha rosszat választunk, soha nem fog létrejönni és napokig kereshetjük a hibát. (Egy barátom mesélte..)

Értelemszerűen minden részt ki kell tölteni! img-description
img-description

Majd mikor azt hinnénk, hogy elkezdődhet a telepítés, még egy python-t is kell telepíteni. Szerencsére ezt a Studio elkészíti nekünk.

img-description
Ha minden jól ment, 5-10 perc múlva a következő üzentet láthatjuk.
img-description
Ha pedig lekérdezzük a kubect-el
img-description

MS SQL létrehozása

Elkészült a Data controller-ünk, most pedig hozzunk létre egy MS SQL instance-ot.
Maradjunk az Azure Data Studio-ban és vegyük fel a frissen elkészült Data controller-t .

img-description
img-description
img-description
img-description
img-description
img-description

Minden mezőt ki kell tölteni, de kicsit részletezem is a főbb pontokat.

1, Felhasználónév és jelszó, amellyel magára az SQL-re fogunk belépni.
2, Service Tier, magát a felépítését határozza meg, részletesebben itt lehet róla olvasni.
3, SQL licence, soha nem volt egy olcsó dolog, de ha ezt bepipáljuk, úgy vállaljuk, hogy csak Dev/test-re fogjuk tudni használni. Ebben az esetben nem generál költséget!
4, Figyeljünk a felhasználandó processzorra és memóriára. Ha nem áll rendelkezésre elegendő, a pod-ok nem fognak elindulni!
Ha mindent jól csináltunk, pár perc múlva már el is készül a helyben használható SQL-ünk.
img-description

Monitoring

Semmilyen log nem hagyja el a szerverünket, de azért néha szükség van a hibalogok-ra vagy metrica-ra. Szerencsére erre is gondoltak és létrehoztak egy Kibana és egy Grafana Dashboard-ot, hogy nyomonkövethessük a cluster-ünket.

Válasszuk ki az instance-t.

img-description

Majd válasszuk ki, hogy mi érdekel minket és nézzük meg mit mutatnak.

img-description

A bejelentkezést követően pedig már nézelődhetünk is.

img-description

Kapcsolódás

Amennyiben nem jó a tanúsítvány, márpedig IP címeket használunk, vagyis nem lesz jó, így az egyértelmű gombot sajnos nem használhatjuk. Marad a hosszabb út. Másoljuk ki az elérhetőséget és kézzel hozzunk létre egy új kapcsolatot.

img-description

A felugró tanúsítvány hibát el kell fogadnunk, de ezután már el is értük a helyben futtatott Azure Arc-enabled SQL Managed Instance-t.

img-description

Usage

Mint már említettem, a használatot időről időre fel kell tölteni. Szerencsére 2 paranccsal meg is oldható ez a feladat és könnyedén automatizálhatjuk is. Részletesebben itt olvashatunk róla.

Provider

Az előfizetésen aktiválni kell az ehhez tartozó provider-t.

1
2
3

az provider register -n Microsoft.AzureArcData --wait

Service Principal

Hozzunk létre egy Service Principal-t, akinek a nevében történik a feltöltés. Itt azt a Resource Group-ot kell megadni, mint elérési út, amit kijelöltünk Data controlle-rnek.

1
2
3
4
5

$rg="/subscriptions/00eb4480-291e-4eec-a8df-d0757f10d92a/resourceGroups/arc-indirect"

az ad sp create-for-rbac --name azure-arc-metrics --role Contributor --scopes $rg

img-description

Adjunk még egy jogosultságot az SP-nek.

1
2
3

az role assignment create --assignee <appId> --role "Monitoring Metrics Publisher" --scope $rg

Usage Upload

Legkésőbb 30 naponta fel kell tölteni az adatokat, de javasolt már korábban, hogy legyen idő feldolgozni azokat.

1
2
3
4
5

az arcdata dc export --type usage --path usage.json --force --k8s-namespace <namespace> --use-k8s

az arcdata dc upload --path usage.json

This post is licensed under CC BY 4.0 by the author.