La nuova versione di vSphere 7 come ben sapete ha portato notevoli migliorie e aggiunte a quello che è il servizio core di virtualizzazione di VMware, alcune più importante di altri ma nel caso di questo articolo voglio parlarvi di vCLS disponibile a partire dalla versione di vSphere 7 Update 1.
Tutte le informazioni trattate possono essere trovare più nel dettaglio al seguente link:
https://core.vmware.com/resource/introduction-vsphere-clustering-service-vcls#section6

vCLS è l’acronimo di vSphere Clustering Services ed è stato introdotto per limitare un problema di disponibilità del vCenter, ovvero nel caso in cui il vCenter non sia disponibile i cluster devono continuare ad avere il servizio HA e DRS attivo. Il servizio viene così slegato dal vCenter e viene erogato da tre piccole virtual machines che sono avviate su gli host che fanno parte di un cluster.  Le VMs in questione sono molto leggere e non devono essere mantenute in alcun modo dall’Amministratore vSphere, saranno automaticamente avviate ogni qualvolta ce ne sia bisogno.

Come detto precedentemente queste VM sono molto leggere, ecco infatti le risorse necessarie per ognuna:

Memory 128 MB
Memory reservation 100 MB
Swap Size 256 MB
vCPU 1
vCPU reservation 100 MHz
Disk 2 GB
Ethernet Adapter
Guest VMDK Size ~245 MB
Storage Space ~480 MB

Il disco da 2 Gb viene creato in Thin Provisioning ed inoltre come potete vedere non vi è necessità di coinvolgere in alcun modo la rete, in automatico inoltre viene creata nella vista VMs and Template una nuova folder dedicata a questo tipo di Virtual Machines così da non creare confusione all’interno dell’inventario di vSphere.

Può capitare l’esigenza di dover eliminare queste Virtual Machine da un cluster, per manutenzione, o per magari decomissioning e vogliamo evitare di avere errori strani, in questo caso per poterlo fare bisogna inserire un parametro avanzato che farà il cosidetto “Retreat” del cluster vCLS. (https://kb.vmware.com/s/article/80472)

Per poterlo fare bisogna come prima cosa segnarsi il “domain-id” del cluster di cui vogliamo fare il retreat, per farlo basta semplicemente cliccare all’interno del vsphere client sul cluster cinteressato e verificarne l’id guardando l’URL nella barra di ricerca del browser.

Una volta recuperato questa informazione, non ci resta che cliccare sul vCenter (sempre dal client vSphere), andare in “Advanced Settings” e creare il parametro avanzato che farò partire la modalità retreat su quel cluster.

“config.vcls.cluster.domain-id.enable = false”

Una volta e aggiunto questa configurazione avanzata nel vcenter, dopo pochi secondi le vm vcls presenti nel cluster verranno spente e rimosse. Rimuovere queste Virtual Machine significa che la funzionalità DRS non sarà disponibile poiché direttamente legata al servizio vCLS.

Per riabilitare i vcls all’interno di un cluster bisognerà tornare nell’advanced settings del vcenter e selezionare come valore  “true” invece che “false” questo riabiliterà il servizio e dopo pochi sercondi all’interno del cluster vedremo avviarsi le vCLS VMs.

Qui di seguito lascio un video disponibile su Youtube e sul Blog personale di  Duncan Epping che illustra la procedura per disabilitare e riabilitare questo servizio.

AGGIORNAMENTO 21/12/2022:

Durante uno scambio di informazioni con un collega è venuta fuori l’esigenza di poter automatizzare tramite script questo tipo di attività per una questione di gestione sempre più ricorrente di questa azione.

In questo caso dopo una veloce verifica dellle possibilità offerte dai moduli powerCli, ho trovato alcuni comandi molto utili  che permettono di poter ricavare le informazioni per quanto riguarda la lista di cluster e relativo “Cluster ID” ma non solo anche configurare il parametro avanzato direttamente nel vCenter!

Ovviamente prima di poter dare il comando ricordo che è sempre necessario avere a disposizione una console powershell e i moduli PowerCli dedicati alla parte vSphere, dopodichè non resta altro che connettersi al vCenter utilizzando il comando “Connect-ViServer” e provare i comandi:

Get-Cluster| Select-ObjectName,Id|Format-Table-AutoSize

Con questo comando è possibile quindi ricavare la lista dei cluster e relativo ID utile per poi impartire il comando Retreat al vCenter aggiungendo per l’appunto il parametro avanzato:

Get-AdvancedSetting -Entity “vCenter-FQDN” -Name config.vcls.clusters.* | Format-Table -AutoSize

Con questo comando è possibile verificare se sono già presenti cluster con il parametro avanzato impostato

New-AdvancedSetting -Entity vcenter-fqdn -Name config.vcls.clusters.”domain-id.enabled” -Value false

Con questo comando invece andremo ad impostare la Retreat Mode per vCLS. ATTENMZIONE ovviamente va inserito il “domain-id” corretto nel codice qui sopra.

Get-AdvancedSetting -Entity vcenter-fqdn -Name config.vcls.clusters.domain-x123.enabled | Set-AdvancedSetting -Value “true or false”
Quest’ultimo comando ovviamente con il Cluster ID corretto consente di cambiare “al volo” il parametro da False = vCLS Retreat Mode attiva (rimozione vCLS vms) a True = vCLS Retreat mode Disattiva

AGGIORNAMENTO 9/1/2023:

Continuando con i test ho trovato molto comodo il comando di conferma -Confirm da utilizzare nel caso in cui volessimo scriptare in un ciclo evitando ogni volta di dover confermare l’effettiva creazione del parametro avanzato.

New-AdvancedSetting -Entity vcenter-fqdn -Name config.vcls.clusters.”domain-id.enabled” -Value false -Confirm:$False

E inoltre nel caso in cui il setting avanzato sia già stato configurato in precedenza, è possibile cambiarne il valore evitando così di cancellare il settaggio utilizzando il -Force, utile magari per ripristinare il valore standard e quind riportare il servizio vCLS come attivo su un cluster precedente configurato in retreat mode.

Leave a Reply

Giovanni Dominoni's Tech Blog