Efficiëntie in SQL licenties en beheer

Voor mijn werk kom ik bij veel klanten over de vloer en krijg vaak verschillende ‘kijkjes in de diverse keukens’. Ik vind het enorm leuk om te zien dat, hoewel we het telkens over IT hebben, elke klant hier weer anders mee omgaat. Of het nu gaat om IT standaarden of project methodieken,  iedereen is ervan overtuigd dat de door hun gekozen richting de juiste is. Gelukkig maar anders deden we allemaal hetzelfde…

De laatste jaren zie je bij het merendeel wel een golfbeweging naar het ‘Microsoft tenzij’ en/of ‘Cloud First’ principe. Dit zijn technieken die de verschillende leveranciers en dienstverleners natuurlijk maar wat graag bij elke organisatie willen introduceren. Hoewel ik van mening ben dat uiteindelijk een groot deel van de IT omgevingen in de Cloud komt te staan moeten we de huidige on-premise onderdelen en technieken uiteraard niet uit het oog verliezen.

1 van deze onderdelen is Microsoft SQL Server, hoewel ik eerder aangaf dat elke klant weer anders omgaat met IT zie ik bij dit onderdeel een rode draad.

SQL is vaak, zo niet altijd, 1 van de belangrijkste schakels binnen een IT informatie keten. Het bevat vaak alle data die nodig is om een dienst succesvol aan te kunnen bieden en dagelijks vinden er vaak duizenden tot tienduizenden transacties plaats. Niet elke organisatie heeft een toegewijde DBA’er in huis, het is dan meestal aan een technisch applicatie beheerder om te besluiten waar de database gehost wordt.

Omdat dan vaak de relevante SQL kennis ontbreekt, en een software installatie het erg verleidelijk maakt de database lokaal of op een aparte SQL server te installeren, komt het erop neer dat er naargelang de tijd een wirwar aan SQL installaties ontstaat met alle negatieve gevolgen van dien. Cruciale vragen kunnen zijn, is de database hoog beschikbaar? Kan de server de juiste performance bieden? Kan een applicatie zomaar worden geüpgraded zonder dat dit gevolgen heeft voor de data?

Een bijkomend dilemma is het licentiemodel wat Microsoft voor SQL heeft opgesteld, hierbij kan gekozen worden voor een CAL (uitsluitend de SQL Standard editie) of Core licentie.

CAL is eigenlijk alleen van toepassing wanneer inzichtelijk is wie of wat er met de database verbindt. Binnen Enterprise omgevingen is dit nagenoeg nooit het geval en zal er bijna altijd voor een Core licentie worden gekozen. Dit betekend dat per host (fysiek of virtueel) waar (een onderdeel van) SQL op geïnstalleerd is het aantal (V)cores wordt geteld en hierop wordt afgerekend waarbij 4 cores per fysieke processor altijd de ondergrens is.

Bron: sql_server_2017_licensing_guide.pdf

Een voorbeeld, u heeft 8 SQL VM’s draaien en 3 van deze VM’s hebben 2 Vcores en 5 VM’s 4 Vcores. In dit geval zou er een totaal van  32 Vcores moet worden gelicenseerd.

Omdat SQL core licenties altijd in 2-pack worden verkocht betekend dit 16x wat een totaalbedrag oplevert van €82.248,16 excl. BTW* (bron:www.dsaict.nl).

In dit voorbeeld ga ik uit van een Standard SQL licentie incl. 2 jaar Software Assurance.

*Daadwerkelijke kostprijs is afhankelijk van afspraken met uw software leverancier

Wat is de oplossing

In SQL 2012 werd Always-On Availability Groups geïntroduceerd, een SQL techniek die gebruik maakt van de Windows Clustering Service en hiermee zorgt dat databases hoog beschikbaar zijn.

Buiten dat dit een bepaalde zekerheid biedt is er zeker qua licenties aanzienlijke winst te behalen, en wel om de volgende reden.

Wanneer SQL server incl. Software Assurance wordt aangeschaft staat Microsoft toe dat de passieve kant niet gelicenseerd hoeft te worden mits er geen enkele andere (SQL) dienst op draait zoals bijvoorbeeld reporting of integration service.

En waar tot en met SQL server 2016 Always-On uitsluitend toebedeeld was aan de Enterprise editie is het, hetzij met een aantal beperkingen, vanaf SQL 2017 ook mogelijk Always-On te gebruiken bij de Standard editie.

Een voorbeeld voor SQL Always-On waarbij uiteindelijk dezelfde capaciteit wordt geboden als bovenstaand voorbeeld:

2 SQL 2017 Enterprise VM’s met beide 6 Vcores maakt een totaal van 12 Vcores.  Omdat de passieve VM’s geen licenties behoeven betekend dat ik 3 core licenties moet aanschaffen met een totaalbedrag van €59.132,82 excl. BTW  (bron:www.dsaict.nl).

Dit levert een besparing van €82.248,16 – €59.132,82 = €23.115,34 op.

Tevens biedt Always-On hoge beschikbaarheid wat downtime verlaagd en biedt het gemak bij patchen of ander onderhoud  omdat er gemakkelijk kan worden uitgeweken.

De Enterprise editie van SQL biedt daarnaast ook aanzienlijk meer mogelijkheden dan de Standard editie als het gaat om performance, security en zaken als Machine Learning en AI.

Makkelijk uitbreiden naar Azure

Bijkomend voordeel is dat een Always-On Availability Group snel uit te breiden is naar Azure, dit biedt extra zekerheid en zou ook kunnen dienen als migratie strategie naar de Cloud zonder enige downtime.

Side note

Microsoft heeft het licentiemodel van SQL vrij ingewikkeld gemaakt en het is aan te raden u hier goed in te verdiepen. Software Assurance brengt voordelen met zich mee maar de kans bestaat ook dat u door de bomen het bos niet meer ziet.

Om een voorbeeld te geven, op een fysieke server met 16 cores is het toegestaan om een evenredig aantal VM’s (in dit geval 16) te hosten die allemaal SQL Enterprise draaien. Voorwaarde is wel dat de fysieke machine het juiste aantal SQL Enterprise core licenties heeft incl. Software Assurance.

Tevens zijn er gratis versies van SQL te krijgen of worden standaard meegeleverd met software, dit betreffen de Express en Developer editie. Ik ben echter van mening dat deze varianten niet in een productie omgeving thuis horen vanwege de vele restricties.

Conclusie

Ik heb nu bij 4 klanten een SQL consolidatie traject doorlopen waar een kostenbesparing tussen de €15.000 en €40.000 per jaar is gerealiseerd, uitsluitend op licentiekosten. Bijkomend voordeel is dat de SQL beheerlast fors lager uitviel, deze tijd kon vervolgens in ontwikkeling en vernieuwing worden gestoken.

Ook zie ik dat tijdens deze trajecten veel onduidelijkheid bestaat over hoe het qua licenties (niet alleen SQL) in elkaar zit. Tijdens 1 traject heb ik uitvoerig met een auditeur gesproken en hem ervan moeten overtuigen dat de passieve kant van een SQL Always-On cluster geen licenties behoeft. De audit tooling is hier vervolgens op aangepast.

Zoals eerder aangegeven gaat elk bedrijf anders om met licenties, dit is ook logisch aangezien er verschillende afspraken met leveranciers worden gemaakt. Het kan echter nooit kwaad eens kritisch te kijken wat er allemaal in huis staat en hoe dit eventueel efficiënter kan.

Dit voorbeeld laat zien dat dit niet alleen financiële voordelen oplevert maar ook zeker bijdraagt aan een betrouwbare dienstverlening, een win-win situatie!

Witkamp IT Consultancy heeft ervaring met dit soort trajecten en kan u op diverse manieren ondersteunen. Zo kunnen wij bijvoorbeeld alleen onderzoek doen naar de mogelijkheden en u hierover adviseren maar kunnen we ook het hele traject, tot en met implementatie en migratie, uitvoeren.

Bent u benieuwd naar de mogelijkheden of wil u gewoon eens vrijblijvend in gesprek, neem dan contact met ons op.

Windows Admin Center

In oktober 2017 berichtte een collega Bob Niessink, in een gezamenlijke blog over de Ignite highlights, dat Microsoft een nieuwe beheertool aankondigde onder de naam ‘Project Honolulu’. Zo’n exotische naam bracht mij gelijk in zonnige sferen, dus ging op extra onderzoek uit. Al snel kwam ik erachter dat alles nog erg pril was, er waren enkel screenshots en wat kleine blogs over te vinden, maar dat was het dan ook wel. Al snel raakte het qua aandacht wat op de achtergrond, tot mijn interesse eind maart dit jaar weer werd aangewakkerd tijdens Tech Summit in Amsterdam.

Tijdens een sessie over Windows Server & Hybrid-Cloud bracht de altijd gepassioneerde en energieke Jeff Woolsey (Program Manager Microsoft) ‘Project Honolulu’ weer ten tonele. Deze keer volwassen en volledig operationeel. Voor mij was meteen duidelijk dat dit groot gaat worden.

Een oplossing, maar voor welk probleem?

We zijn inmiddels weer een stukje verder in de tijd en de Technical Preview status van ‘Honolulu’ is overgegaan naar Productie status. Tevens is de naam omgedoopt tot Windows Admin Center (WAC) en levert Microsoft volledige ondersteuning in productie omgevingen. Dus wellicht ook tijd voor u om te kijken of het meerwaarde kan bieden.

Maar voor welk probleem kan WAC een oplossing bieden? Heel kort door de bocht: voor al het dagelijkse serverbeheer.

IT landschappen bestaan vaak uit een fiks aantal Windows servers, zowel fysiek als virtueel en sinds een jaar of wat ook On-premise en/of in de Cloud. Voor beheer is het vaak noodzakelijk in te loggen op een of meer van deze servers. Dit kan op zich relatief makkelijk met RDP en/of PowerShell. Binnen Windows zijn vervolgens de mogelijkheden eindeloos om informatie naar boven te halen. Zo zijn er bijvoorbeeld de Task Manager, de Resource Manager, Management Consoles, Server Manager, Hyper-V manager en niet te vergeten de Event Viewer. Zomaar een greep uit tools die beheerders bijna dagelijks een of meerdere malen openen.

Deze manier van werken wordt een beetje uitdagend bij probleemoplossingen waarbij meerdere servers ‘betrokken’ zijn. Meerdere RDP sessies naast elkaar met meerdere schermen open. Het overzicht kan al snel wat vertroebeld raken met alle gevolgen van dien.

Bovenstaande wordt nog uitdagender als deze activiteiten buiten de beveiligde omgeving (extern) moeten worden uitgevoerd, bijvoorbeeld bij een wachtdienst of door een externe dienstverlener. Vaak wordt er dan gebruik gemaakt van VPN tokens, steppings stone accounts of specifieke software om de interne omgeving te benaderen. Zul je net zien dat je je RSA token thuis hebt laten liggen toen je op visite ging…

De oplossing die WAC biedt is tweeledig, enerzijds een overzichtelijk dashboard waar alle servers in te zien en te beheren zijn (single-pane-of-glass). Anderzijds biedt het de mogelijkheid overal ter wereld (als er maar internet is) beveiligd in te loggen op ditzelfde dashboard zonder tokens of extra software. Alles wat je nodig hebt is Microsoft Edge of Google Chrome browser en poort 443 (standaard SSL dus staat altijd open). Uiteraard is Chrome ook te installeren op tablets en telefoons, dus ook vanaf deze apparaten is beheer uit te voeren middels hetzelfde dashboard.

Scenario’s en Installatie

WAC kan op twee manieren worden geïnstalleerd, stand-alone waarbij de installatie wordt uitgevoerd op een Windows 10 cliënt en gateway-mode waarbij WAC op Windows Server 2016 wordt geïnstalleerd. De gateway-mode kan middels Microsoft failover clustering hoog beschikbaar worden gemaakt.

Stand-alone is uitsluitend bedoeld voor test doeleinden, zodra er serieus gebruik gemaakt gaat worden van WAC dan is aan te raden om dit in de gateway-mode te doen.

Middels 1 MSI pakket kunnen beide installaties worden uitgevoerd, de installatie herkent zelf het host OS (uitsluitend Windows 10 of Server 2016 worden ondersteund) en op basis daarvan wordt de setup doorlopen.

WAC wordt geïnstalleerd als service. Een database of webserver is dus niet nodig.

Een uitzondering bij de installatie van de gateway-mode ten opzichte van de stand-alone mode is dat SSL, en dus een certificaat, vereist is. Tijdens de installatie kun je kiezen voor een self-signed certificate die 60 dagen geldig is of er kan worden gekozen voor een certificaat van een eigen of vertrouwd RootCA. Ook hier geldt weer dat het self-signed certificate alleen in test omgevingen is aan te raden.

Na de installatie open je Edge of Chrome en browse je in het geval van stand-alone naar localhost:6516 en in geval van gateway-mode naar hostsysteem:443. Om in te loggen dien je lid te zijn van de lokale administrator groep. Na het inloggen verschijnt het dashboard en zal het hostsysteem al in de lijst van computers/servers staan.

In mijn geval neem ik de WAC server af uit Azure, groot voordeel hiervan is dat er gelijk een publiek IP adres beschikbaar is. Vergeet hierbij niet om poort 443 in de Network Security Group toe te staan.

Wanneer je ditzelfde on-premise wil bereiken zijn er nog een aantal infrastructurele uitdagingen te beslechten. Echter is dit geen WAC aangelegenheid.

De installatie en de verbinding naar het WAC dashboard zijn nu gerealiseerd. Aan de ‘achterkant’ moet er uiteraard ook verbinding worden gelegd naar de te beheren machines. Belangrijk om te weten is dat WAC uitsluitend Windows 10 en Server 2012 of hoger ondersteund, in het geval van Server 2012 (R2) moet minimaal Windows Management Framework 5.1 geïnstalleerd zijn.

WAC maakt gebruik van WinRM (remote management), WMI (management instrumentation) en PowerShell. Deze functionaliteit is bij een normale OS installatie beschikbaar en behoeft dus geen verdere configuratie.

WinRM werkt op basis van zogenaamde Trusted Hosts. Dit is een lijst met machines die extern beheer op de server of cliënt mogen doen. Wanneer de WAC server binnen hetzelfde IP subnet zit van de te beheren machines is geen verdere configuratie nodig. Is dit echter niet het geval, dan dient de WAC server te worden toegevoegd aan de trusted host lijst van de te beheren machine. Dit kan middels een PowerShell opdracht: ‘set-item wsman:\localhost\Client\TrustedHosts -value <hostname WAC server>’.

Verder moeten alle te beheren machines uiteraard middels IP te benaderen zijn vanaf de WAC server, zowel de routering als diverse firewall instellingen zijn hierbij van belang. De volgende poorten zijn vereist:

Service                 Poort

WinRM (http)        5985
WinRM (https)      5986

Wanneer er geen connectie naar een server kan worden gelegd voer dan in een elevated prompt de volgende opdracht uit: winrm enumerate winrm/config/listener

Het is van belang dat het poortnummer overeenkomt met de firewall settings.

En beheren maar..

Nu de installatie van WAC staat kunnen er servers, werkstations, clusters en HCI (Hyper-Converged Infrastructure) worden toegevoegd. Voor servers en werkstations is een handigheidje bedacht, namelijk importeren uit een txt bestand. Enige wat nodig is, is een export van de AD computers en servers naar een txt bestand middels PowerShell en dit bestand kan vervolgens worden gebruikt. Dit betekent dat je binnen enkele minuten je gehele omgeving in WAC hebt staan!

Nadat de machines zijn geïmporteerd kun je erop klikken. Qua beheeraccount zijn er een aantal opties.

Je kunt een account opgeven en aangeven dat je met dit account alle servers wilt beheren.  Dit account moet uiteraard wel de juiste rechten hebben op de te beheren servers, maar het is aannemelijk dat een dergelijk RBAC model al is ingericht en er dus gebruik kan worden gemaakt van de standaard admin accounts die eerder bijvoorbeeld al werden gebruikt bij RDP connectie.

Wat een erg mooie feature is, is dat je de WAC server kunt koppelen aan Azure Active Directory zodat hier de authenticatie plaatsvindt. De WAC server dient dan geregistreerd te worden bij de Azure tenant, dit realiseer je door een door Microsoft geleverd PowerShell script (New-AadApp.ps1) uit te voeren. Wanneer WAC aan Azure AD is gekoppeld behoort ook Multi-Factor authentication tot de mogelijkheden.

Zodra alles goed geregeld is kan er binnen het dashboard beheert worden, links zijn alle mogelijkheden te zien. Wanneer er op een onderdeel geklikt wordt zullen rechts in het scherm de opties voor het betreffende onderdeel getoond worden.

Een overzicht van de geselecteerde server.

 

Grafieken geven duidelijk pieken neer, wanneer er met de muis overheen wordt gegaan zullen meer specifieke gegevens van dat moment worden weergegeven.

Ook een RDP sessie in de browser is zonder dat poort 3389 open hoeft te staan mogelijk.

Een bestand van waar ook ter wereld uploaden naar een map op de server is mogelijk dankzij een upload functie.

Een PowerShell venster waar alle CmdLets die lokaal beschikbaar zijn kunnen worden uitgevoerd.

Conclusie

Ik ben van mening dat WAC een grote meerwaarde kan hebben voor het beheren van serverparken. Helemaal als het gaat om externe toegang, waar hier nu een redelijk complexe en dure infrastructuur voor moet worden opgebouwd en worden beheerd heb je met WAC de mogelijkheid dit veilig op te zetten in een handomdraai.

Uiteraard heeft het product nog een aantal kinderziektes maar deze zijn, zover ik heb kunnen merken, zeer minimaal.

Performance zou nog een ‘ergernisje’ kunnen zijn en daarmee denk ik ook dat voor wat betreft On-premise beheer RDP de komende tijd zeker nog zal blijven.

Al met al een heel goed alternatief om beheer uit te voeren en ook nog gratis ook!