Guest cluster de Windows amb Windows Server 2016 Hyper-V

Publicat el Deixar un comentari Etiquetes: , , ,

Esta entrada también está disponible en: Castellà

Desplegar un guest cluster de Windows Server, un clúster sobre un sistema de virtualització, ja acostuma a ser molt habitual per oferir alta disponibilitat  a nivell de servei (bases de dades, servidors de fitxers). S’han deixat d’utilitzar sistemes físics per passar a la seva evolució natural, la virtualització, com qualsevol altre servei que ja virtualitzàvem. Però, en el cas del guest cluster, per la seva naturalesa, requereix d’una configuració especial dels discs perquè dues o més màquines virtuals accedeixin al mateix temps a les mateixes dades. Es tracta de compartir el mateix disc dur.

Quan es desplega un guest cluster en un entorn de virtualització Hyper-V, aquests discs compartits poden ser de tres tipus:

  • Presentant la LUN (disc dur)  directament a la màquina virtual, mitjançant connexió iSCSI. En aquest cas, l’hipervisor no intervé per a res.
  • Creant una SAN virtual, compartint les targetes HBA de FC amb la màquina virtual, al igual que es fa amb la xarxa ethernet. En aquest cas, els switchs FC han de suportar aquesta característica (ull amb els models antics que ja ens coneixem). D’aquesta forma es mapeja la LUN directament a la targeta HBA virtual de SAN de la màquina virtual.
  • Compartint un disc dur virtual entre vàries màquines virtuals.

Des de l’hipervisor Microsoft Window Server 2012 R2 es poden crear discs virtuals compartits (VHDX) entre vàries màquines virtuals. Aquests discs no es diferencien dels altres discs virtuals, continuen essent VHDX als que se’ls indica que es comparteix per vàries màquines virtuals. Però tenen una limitació. El fet de tenir vàries màquines accedint al mateix temps fa que no es puguin congelar per a fer punts de consistència (snapshots, instantànies…) i, per tant, tampoc treure’n una còpia de seguretat en calent.

Recordar que un punt de consistència NO és una còpia de seguretat, però sí és una tecnologia necessària per poder extreure una còpia de seguretat amb la màquina corrent. Ja sigui manualment (PowerShell) o amb qualsevol aplicació de gestió de còpies de seguretat: Windows Backup, Veem, Altaro, Backup Exec…

A partir de Microsoft Windows Server 2016 apareix un nou concepte de disc dur virtual compartit pel guest clúster, el conjunt VHD (VHD Set en anglès). La configuració d’aquest tipus de disc virtual compartit pel guest cluster és del què tracta aquesta entrada.

 

Abans de continuar i evitar treballar pel diable, cal esmentar que aquest disc compartit no es pot allotjar en qualsevol lloc, té uns requeriments: que estigui ubicat en un Cluster Shared Volume (CSV) o en un servidor de fitxers Scale-Out SMB3 de Microsoft Windows Server 2012 R2 o superior.

 

Crear un disc virtual compartit pel guest cluster

Des de l’administrador de Hyper-V, amb les màquines virtuals que formen el guest cluster aturades, botó dret damunt la màquina virtual i clicar a Configuració. Menys la creació del nou disc dur virtual de conjunt VHD (VHD Set), el procés s’ha de repetir en totes les màquines virtuals que formen el guest cluster.

Configuració de la màquina virtual

Una de les recomanacions i manies personals per utilitzar els discs compartits en un guest cluster, és connectar-los en una controladora SCSI diferent a la utilitzada pel sistema operatiu. Per tant, el primer que faig és afegir una segona controladora SCSI. Clicar a l’opció afegir hardware. Seleccionar controladora SCSI i clicar el botó Afegir.

Afegir una segona controladora SCSI a la màquina virtual

S’ha creat una nova controladora SCSI (en el meu cas la 1) i em demana per afegir-li un disc, amb tres possibles opcions:

  • Disc dur virtual o físic. Dedicat única i exclusivament a aquesta màquina virtual.
  • Unitat DVD per poder carregar fitxers d’imatges ISO o passar la unitat DVD física de l’amfitrió a la màquina virtual.
  • Unitat compartida que permet crear un disc dur virtual al que hi poden accedir varies màquines virtuals a la vegada. És l’opció per la configuració del guest cluster.

Seleccionar disc compartit i clicar el botó afegir.

Afegir un nou disc virtual compartit a una màquina virtual

Fixeu-vos que per defecte el nou disc dur virtual es connecta al primer canal SCSI lliure que ha trobat a la controladora, en la foto, el canal 0. Cada disc dur addicional ha d’estar en un canal diferent. Recordo que un canal no pot tenir més d’un disc dur.

Crear un nou disc dur virtual assignat a un canal lliure de la controladora SCSI

Clicar el botó Nou per crear una nova unitat compartida.

S’inicia l’assistent per la creació de la nova unitat amb una pregunta trampa:

  • VHDX. El disc virtual tradicional de sempre i que és l’opció normal per a totes les màquines virtuals.
  • Conjunt VHD (VHD Set). Aquesta és la nova opció que apareix amb Microsoft Windows Server 2016 i Windows 10 i que no és compatible amb versions anteriors de sistemes operatius. És l’opció què ens permet realitzar còpies de seguretat en calent de les màquines virtuals amb discs compartits del guest cluster.

Seleccionar conjunt VHD (VHD Set) i clicar el botó següent.

Selecció del conjunt VHDX (VHD Set) pel nou disc virtual pel guest cluster

Tipus de disc:

  • Mida fixa. D’entrada ja reserva tot l’espai que s’assigna al disc dur, estigui utilitzat o no. Per a mi també és l’opció recomanada per no estar pendents del sobre aprovisionament que ens pot aturar el servei. És el cas dels discs per a les bases de dades, per exemple.
  • Expansió dinàmica. El disc només ocupa el què ocupen les dades que conté i a mesura que ho necessita va creixent. És una bona opció pels servidors de fitxers que van creixent mica a mica.

Seleccionar l’opció que cregueu més oportuna i clicar el botó següent.

Configuració del tipus de disc virtual, amb mida fixa o expansió dinàmica.

Indicar el nom del disc dur i la seva ubicació. Torno a recordar que el fitxer s’ha d’ubicar en un volum Cluster Shared Volumes (CSV) o bé en un cluster de servidor de fitxers Scale-Out SMB3. Si bé us deixarà passar aquesta pantalla i crear el nou disc dur virtual, al connectar el disc dur virtual a la màquina us donarà un error i no el podreu utilitzar. Fixar-se que l’extensió no és VHDX sinó VHDS. Clicar el botó següent per continuar.

Assignació del nom i ubicació (que ha d'estar en un CSV o SMB3 amb tolerància)

S’està creant un disc dur virtual nou, per tant, cal especificar la mida que tindrà i clicar el botó següent. En cas que ja tinguéssim un disc dur físic o virtual que contingui dades i que vulguem convertir, en aquesta pantalla es poden realitzar aquestes operacions, seleccionant el disc dur físic o virtual origen d’on es copiarà el seu contingut en el nou disc dur.

Especificar la mida del nou disc virtual

Ja s’ha acabat de configurar el nou disc dur compartit. Clicar el botó Finalitzar per crear-lo.

Finalització de l'assistent per la creació del nou disc virtual

Un cop creat, s’obtenen dos fitxers que defineixen el disc virtual i que tots dos són necessaris i han d’anar junts:

  • Nom del disc virtual amb extensió VHDS, d’uns 260 Kb, correspon a la definició del disc dur. Aquest fitxer NO conté les dades, sinó només la definició del què és el disc dur. És el fitxer que s’ha de seleccionar per afegir a les màquines virtuals.
  • Nom del disc virtual seguit d’un número GUID (llarg a l’atzar) amb extensió AVHDX. Tot i que l’extensió és la mateixa dels punts de consistència (instantànies o snapshots), no correspon a un punt de control sinó que és la part del disc virtual compartit que conté les dades en sí.

Visualització de la carpeta amb els tres fitxers (l'original VHDX) i el nou del conjunt VHDX (VHD Set), que està format pel VHDS i el AVHDX

Recordar que quan es copien o mouen els discs virtuals d’un lloc a l’altre, no cometre l’error de només copiar el VHDS, sense el AVHDX, ja què NO estarem copiant les dades del disc, només la definició.

 

Creació d’un conjunt VHD (VHD Set) per PowerShell

No podia deixar aquesta entrada sense les correspondències per PowerShell. Aneu acostumant-se a utilitzar-la que ja és molt bàsic saber fer-ho. Per tant, obrint la consola amb privilegis d’administrador.

Per la creació d’un nou disc virtual compartit de conjunt VHD (VHD Set), executar la comanda New-VHD indicant la ruta amb el nom del fitxer, la mida (en l’exemple d’1 GB)  i el tipus de disc: de mida fixa (-fixed) o d’expansió dinàmica (-dynamic):

New-VHD -path "C:\ClusterStorage\Volume2\Witness.vhds" -SizeBytes 1GB -Fixed

Per l’expansió dinàmica utilitzaríem la comanda:

New-VHD -path "C:\ClusterStorage\Volume2\Witness.vhds" -SizeBytes 1GB -Dynamic

Amb el disc dur creat, només cal afegir-lo a la màquina virtual corresponent. Per això cal indicar:

  • la ubicació del nou disc virtual -Path
  • el tipus de controladora on s’ha de connectar el disc virtual -ControllerType SCSI o IDE (pel disc compartit, heu de seleccionar SCSI).
  • la controladora que té la màquina virtual on s’ha de connectar el disc virtual -ControllerNumber
  • el canal de la controladora on s’ha de connectar el disc virtual -ControllerLocation
  • indicar que es tracta d’un disc virtual compartit -SharedVirtualDisk

 

Posant un exemple, per afegir el disc anterior, Witness.vhds, a la màquina virtual srvSQL1 que conté dues controladores SCSI i que el disc s’ha de connectar a la controladora 1, al canal 0:

get-vm srvSQL1 | Add-VMHardDiskDrive -Path 'C:\ClusterStorage\Volume2\Witness.vhds' -ControllerType SCSI -ControllerNumber 1 -ControllerLocation 0 -ShareVirtualDisk

 

Convertir un disc dur virtual VHDX en un conjunt VHD (VHD Set)

Es pot donar el cas que estiguem fent una actualització de la granja de virtualització i ja tinguem discs VHDX amb les dades, que voldríem convertir a un conjunt VHD (VHD Set), per aprofitar les noves capacitats de treball.

És una operació que cal fer fora de línia, per tant, el primer és desconnectar el disc de la màquina virtual o màquines virtuals que el tinguin si la màquina té varis discs durs no cal aturar-ho tot, es pot fer disc a disc per no deixar sense servei total el sistema. Per entendre-ho millor, segueixo l’exemple anterior de creació d’un disc virtual compartit, utilitzant la màquina virtual srvSQL1 i el disc virtual compartit FS_Empresa.vhdx per passar-lo a FS_Empresa.vhds.

Recupero la màquina virtual (Get-VM) de la que selecciono el disc virtual que es vol convertir (Get-VMHardDiskDrive amb el Where-object per filtrar els discs que pugui tenir la màquina) que acabo eliminant de la màquina virtual (Remove-VMHardDiskDrive). Tranquils, només s’elimina el disc de la màquina, NO l’esborra del sistema:

Get-VM srvSQL1 | Get-VMHardDiskDrive | Where-Object {$_.Path -like "*FS_Empresa.vhdx"} | Remove-VMHardDiskDrive

Fer la conversió fora de línia, que tardarà més o menys depenent de la mida del disc i la velocitat de l’emmagatzematge on estigui. El procés crea un disc dur virtual nou, per tant, també cal tenir en compte que s’ha de disposar de l’espai de disc suficient per poder crear aquest nou disc dur que tindrà la mateixa mida que l’original.

Convert-VHD "C:\ClusterStorage\Volume2\FS_Empresa.vhdx" "C:\ClusterStorage\Volume2\FS_Empresa.vhds"

Durant el procés diguem que la barra de progrés no progressa massa, sinó que passa de 0 a 100, tingueu una mica de paciència.

Quan acaba, s’han creat dos nous fitxers (VHDS i AVHDX) que corresponen al disc virtual de conjunt VHD (VHD Set), tal com he comentat anteriorment en aquesta entrada.

Amb el nou disc virtual cal connectar-lo a les màquines virtuals que l’han d’utilitzar. No deixar-se els valors de la controladora (-ControllerType SCSI i -ControllerNumber), l’slot lliure de la controladora (-ControllerLocation) on connectar el nou disc virtual i, per últim, indicar que el disc dur és compartit (-ShareVirtualDisk):

Get-VM srvSQL1  | Add-VMHardDiskDrive -Path 'C:\ClusterStorage\Volume2\FS_Empresa.vhds' -ControllerType SCSI -ControllerNumber 1 -ControllerLocation 1 -ShareVirtualDisk

Amb això la màquina virtual ja torna a tenir el disc accessible amb les dades. Recordeu al moure o esborrar el disc anterior VHDX quan s’hagi validat la solució per alliberar espai de disc innecessari.

 

Punts de control del guest cluster

A partir d’aquest moment, la màquina és susceptible de ser copiada en calent mitjançant un punt de control, ja sigui pel sistema operatiu com per les aplicacions de còpies de seguretat de tercers que es sustenten sobre el sistema operatiu (el cas de Veem, Altaro, etc….).

 

Creació manual d’un punt de control en un conjunt VHD (VHD Set)

Per provar que funcionen correctament els punts de control en màquines virtuals, que tenen discs virtuals compartits de conjunt VHD (VHD Set), es poden executar les següents comandes de PowerShell. Encara no hi ha una gestió per GUI i em considero que li falta un tomb perquè això sigui agradable d’operar:

 

Creació d’un grup de consistència

Els punts de control sobre els conjunts VHD (VHD Set) es fan sobre els grups de màquines virtuals, no de la màquina virtual en sí, per tant, el primer és crear un grup de màquina on s’afegeix la màquina que conté el disc virtual compartit:

New-VMGroup -Name "ProvaVHDS" -GroupType VMCollectionType

Afegir la màquina o màquines virtuals al grup de consistència anterior:

$VM1 = Get-VM -Name srvSQL1
Add-VMGroupMember -Name "ProvaVHDS" -VM $VM1

 

Crear el punt de consistència (checkpoint o antic snapshot) al grup de màquines virtuals

Què no és el mateix que crear-lo a la màquina virtual. Assignar el servei de Snapshots de col·leccions a  una variable:

$colSnapSvc = Get-WmiObject -Namespace Root\Virtualization\v2 Msvm_CollectionSnapshotService

Assignar les col·leccions virtuals, on es llançarà el punt de consistència (checkpoint o antic snapshot) a una altre variable:

$VMcol = Get-WmiObject -Namespace Root\Virtualization\v2 Msvm_VirtualSystemCollection

Realitzem el punt de consistència (checkpoint o antic snapshot) sobre el grup de màquines virtuals, bé, de fet només conté una màquina virtual:

$colSnapSvc.CreateSnapshot($VMcol, $null, 32768)

Aplicar un punt de consistència (checkpoint o antic snapshot)

Aplicar un punt de consistència vol dir recuperar la màquina, o en aquest cas el grup de màquines virtuals) al punt que estava en el moment de fer-lo. Per aplicar-lo cal que la màquina o màquines estiguin aturades. Assignem a les variables el servei de Snapshots de col·leccions:

$colSnapSvc = Get-WmiObject -Namespace Root\Virtualization\v2 Msvm_CollectionSnapshotService
$VMcol = Get-WmiObject -Namespace Root\Virtualization\v2 Msvm_VirtualSystemCollection

Apliquem el punt de consistència pròpiament dit:

$colSnapSvc.ApplySnapshot($VMcol)

Esborrar el punt de consistència (checkpoint o antic snapshot)

No deixarem el punt de consistència habilitat oi? Un cop utilitzat toca esborrar-lo, eliminar-lo del sistema. Tornem a carregar les variables del servei de Snapshots de col·leccions, si no les tenim carregades.

$colSnapSvc = Get-WmiObject -Namespace Root\Virtualization\v2 Msvm_CollectionSnapshotService
$VMcol = Get-WmiObject -Namespace Root\Virtualization\v2 Msvm_VirtualSystemCollection

Esbrinar l’identificador de la col·lecció on actuar, executem la variable de la col·lecció virtual perquè ens l’ensenyi:

$VMcol.CollectionId

Guardar aquest valor a mà, en una variable o reutilitzar la variable per filtrar la col·lecció on actuar:

$VMcol = Get-WmiObject -Namespace Root\Virtualization\v2 Msvm_VirtualSystemCollection |? "CollectionId" -eq $VMcol.CollectionId

Esborrar el punt de consistència:

$colSnapSvc.DestroySnapshot($VMcol)

 

Esborrar grup de consistència

Eliminar la màquina virtual del grup:

$VM1 = Get-VM -Name srvSQL1
Remove-VMGroupMember -Name "ProvaVHDS" -VM $VM1

Comprovar que el grup ja no té membres, la variable VMMembers:

Get-VMGroup

Eliminar el grup:

Remove-VMGroup -name ProvaVHDS

 

Aclariment

M’he trobat amb un petit problema causat per les actualitzacions KB3213986 i KB3211320que espero es resolgui tant aviat com sigui possible, que provoca que els punts de control (checkpoints o instantànies) no acabin de funcionar del tot correctament en alguns entorns.

 

 

T’ha agradat l’article? El pots compartir a les xarxes socials. També pots deixar la teva opinió, comentari o suggeriment. Gràcies!

 

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *