Hoe VMware EVC-modus werkt: Compleet overzicht

Als u bekend bent met de vMotion-functie, herinnert u zich waarschijnlijk dat de aanbevolen praktijk is om dezelfde processoren te gebruiken op alle ESXi-servers voor VM live migratie. Als u servers met verschillende processormodellen in het cluster wilt gebruiken, is het beter om processoren van dezelfde generatie in te zetten. Bovendien is de strikte eis dat de processoren geproduceerd moeten zijn door dezelfde leverancier, zoals Intel of AMD. Anders loopt u waarschijnlijk een fout op bij het gebruik van vMotion.

VMware heeft hun vSphere-software ontworpen met het oog op situaties die kunnen voorkomen in de productieomgeving, waaronder het uitbreiden van een cluster door nieuwe servers met verschillende processoren toe te voegen. Dit is een veelvoorkomende situatie – stel u voor dat u een cluster heeft met 5 ESXi-nodes die u 3 jaar geleden hebt gekocht en dat u twee meer nodes moet toevoegen om meer VM’s uit te voeren om aan uw bedrijfsbehoeften te voldoen. De processoren die u 3 jaar geleden hebt gekocht, worden nu niet meer geproduceerd en worden niet meer op de markt verkocht; u kunt alleen de processoren van de nieuwste familie kopen. Maar maakt u zich geen zorgen – u kunt High Availability-clusters gebruiken in vSphere, nodes toevoegen met verschillende processoren, en vMotion gebruiken voor live migratie van virtuele machines tussen hosts met verschillende processoren. Dit is mogelijk dankzij de Enhanced vMotion Capability (EVC) functie die kan worden ingeschakeld voor clusters in VMware vSphere.

Werkingsprincipe van de VMware EVC-modus

Elke nieuwe generatie processoren bevat nieuwe instructiesets naast de instructiesets die beschikbaar zijn voor de vorige generatie processoren. Nieuwe functies verbeteren doorgaans de prestaties of beveiliging van draaiende toepassingen. Bijvoorbeeld, processoren van de SkyLake-generatie hebben één nieuwe instructieset (SGX) vergeleken met de processoren van de Haswell-generatie. Laten we eens kijken naar de instructiesets van deze twee processorgeneraties en hun details verkennen.

Haswell (2013) instructiesets:

x86-64, MMX, AES-NI, CLMUL, FMA3, SSE, SSE2, SSE3, SSSE3, SSE4, SSE4.1, SSE4.2, AVX, AVX2, TXT, VT-x, VT-d. TSX-instructies zijn uitgeschakeld via microcode voor Haswell-processoren vanwege een bug, behalve voor Haswell-EX.

SkyLake (2017) instructiesets:

x86-64, MMX, AES-NI, CLMUL, FMA3, SSE, SSE2, SSE3, SSSE3, SSE4, SSE4.1, SSE4.2, AVX, AVX2, TXT, TSX, SGX, VT-x, VT-d.

Dit betekent dat als u het Haswell-compatibiliteitsniveau selecteert in de EVC-instellingen, de SGX-instructieset moet worden uitgeschakeld (gemaskeerd, nauwkeuriger gezegd) op de servers met Skylake-processoren en als gevolg daarvan zullen alle processoren met dezelfde instructiesets werken. Zo heeft u een homogene omgeving aangenomen voor VM-migratie door gebruik te maken van vMotion. De uniforme vMotion-compatibiliteit wordt geboden door het afdwingen van dezelfde CPUID-instructiebasislijn voor alle VM’s die worden uitgevoerd op ESXi-hosts zonder uniforme processoren. CPUID kan worden beschouwd als een API voor de CPU.

Enerzijds gaan de voordelen van de SGX-instructieset verloren wanneer de Haswell EVC-modus is ingeschakeld, maar anderzijds wordt de prestatie van uw bestaande cluster niet verminderd als u hosts met nieuwere processors aan het cluster toevoegt. Als u ESXi-hosts met oudere processors aan het bestaande cluster toevoegt, kunt u in bepaalde gevallen prestatievermindering opmerken.

Opmerking: SGX (Software Guard Extensions) stelt u in staat om beschermde fragmenten van code en gegevens (ook wel enclaves genoemd) te organiseren om een hoog niveau van gegevensbescherming voor werkende toepassingen te waarborgen tegen hacker aanvallen. Ontwikkelaars die SGX-instructies gebruiken voor hun toepassingen kunnen de toepassingen beschermen tegen ongeoorloofde toegang of wijziging, zelfs als de aanvallende toepassing hogere privileges heeft.

Opmerking: TSX (Transactional Synchronization Extensions) zorgt ervoor dat het merendeel van de lopende taken voor het verdelen van middelen tussen processorcores naar het hardwareniveau (de CPU zelf) wordt verplaatst. Zonder ondersteuning van TSX-instructies door een processor wordt deze verdeling uitgevoerd op softwareniveau door een besturingssysteem en toepassingen. Als de TSX-instructieset voor uw Haswell-processor is uitgeschakeld via microcode, moet u mogelijk het oudere (Ivy Bridge) niveau instellen voor de EVC-modus.

Over het algemeen moeten draaiende VM’s worden afgesloten en opgestart om de gewijzigde EVC-modusinstellingen toe te passen. Als u vCenter 4.1 of later gebruikt, kunnen de VM’s die worden uitgevoerd op de ESXi-host met de oudste processor mogelijk niet worden uitgeschakeld (u kunt ze in de actieve toestand laten). In dit geval moet de EVC-modus gelijk zijn aan de generatie van die oudste processor. VM’s die worden uitgevoerd op ESXi-hosts met nieuwere CPU-functies moeten worden uitgeschakeld voordat de EVC-modus in het gehele cluster wordt ingeschakeld. Wanneer de ESXi-host wordt uitgesloten van een cluster, blijft deze werken met de EVC-modus uitgeschakeld.

VMware vSphere-versie / CPU-compatibiliteit voor EVC

De vereiste EVC-modus is afhankelijk van de processormodellen en de versie van vCenter Server. De EVC-modus op de nieuwste versie van vCenter Server ondersteunt de nieuwste processors. Overweeg het gebruik van vCenter van de nieuwste versies als u servers heeft met processors van de nieuwste generaties. In de onderstaande tabel ziet u welke combinaties van Intel-processorgeneraties en vCenter-versies worden ondersteund om de EVC-clusterbasislijn voor uw omgeving te bepalen.

De meest geschikte EVC-modus wordt bepaald door het model van de oudste processor van de ESXi-server binnen de cluster. Het is technisch mogelijk om een oudere (lagere) EVC-modus te selecteren dan de generatie van de oudste processor, maar over het algemeen is er geen reden om dergelijke instellingen te maken. Oudere versies van ESXi en vSphere ondersteunen nieuwe processors, maar de maximale EVC-baseline wordt behouden op het niveau van de oudere processors die functioneel waren toen die vSphere-versie werd uitgebracht en destijds als de nieuwste beschikbaar werden beschouwd.

Wanneer u het niveau van de EVC-modus wijzigt, moet u ingeschakelde VM’s uitschakelen en weer inschakelen om de instellingen op die VM’s toe te passen; het opnieuw opstarten van de VM is niet voldoende.

VMware-compatibiliteitsgids

U kunt de compatibiliteit van uw processoren en de hoogst mogelijke EVC-modus controleren die beschikbaar is voor uw vCenter-server op de website van VMware. Om de compatibiliteit te controleren, opent u de pagina van VMware Compatibility Guide, selecteert u CPU-serie in het vervolgkeuzemenu (d.w.z. waar bent u naar op zoek), in de lijst Product Release Version selecteert u uw ESXi-versie, in de lijst CPU-serie houdt u de Ctrl-knop ingedrukt en selecteert u processoren die zijn geïnstalleerd op uw ESXi-hosts (klik met de linkermuisknop). Nadat u de nodige parameters heeft geselecteerd, klikt u op de knop CPU/EVC Matrix om de tabel met beschikbare EVC-modi voor uw ESXi-servers te zien. In het voorbeeld dat wordt getoond op de onderstaande schermafbeelding zijn ESXi 6.5 (beheerd door vCenter 6.5), Intel Xeon E3-1500-v5, Xeon E5-4600-v3 en Xeon Platinum 8100-processoren geselecteerd. Het hoogste niveau van de ondersteunde EVC-modus door alle geselecteerde processoren is Intel Haswell-generatie.

Vereisten

Voor vMotion om correct te werken na het inschakelen van de EVC-modus, moeten aan de volgende vereisten worden voldaan:

  • Processoren van alle ESXi-hosts moeten alleen Intel of alleen AMD zijn.
  • Virtualisatiefuncties van processoren zoals Intel VT-x of AMD-V moeten zijn ingeschakeld in UEFI/BIOS van ESXi-hosts.
  • ESXi-hosts moeten worden beheerd door dezelfde vCenter Server.
  • ESXi-hosts moeten zijn geconfigureerd om vMotion te gebruiken.Hoe EVC in te schakelen en te configureren

Hoe EVC in te schakelen en configureren

Na bekend te zijn geworden met de theorie, laten we de configuratie van de EVC-modus in de praktijk bekijken. Mogelijk moet je je VM uitschakelen op de ESXi-host waarvan het EVC-niveau moet worden verlaagd. Zorg ervoor dat er geen processorfuncties zijn uitgeschakeld in UEFI/BIOS om mogelijke problemen te voorkomen.

Open de VMware vSphere Web Client in je webbrowser door het IP-adres van je vCenter Server in te voeren in de adresbalk van de browser. Ga naar vCenter > Hosts and clusters en selecteer elke ESXi-host om de CPU (centrale processoreenheid) configuratie te controleren. In het huidige voorbeeld bekijken we twee hosts die ESXi 5.5 draaien en toegevoegd zijn aan de cluster en beheerd worden door vCenter Server 5.5. Zoals te zien is op de onderstaande schermafbeelding, is het processormodel van de eerste ESXi-host Intel Xeon E3110 en de processor geïnstalleerd op de tweede ESXi-host is Intel Xeon X3430.

Als de ESXi-hosts al aan de cluster zijn toegevoegd, kies je je cluster (temp-cluster in ons voorbeeld), klik op het tabblad Beheren, open dan het tabblad Instellingen, selecteer Configuratie > VMware EVC en klik op de knop Bewerken</diy13

Nu, voordat u de EVC-modus selecteert in vCenter, opent u een nieuw tabblad in uw webbrowser en opent u de VMware Compatibility Guide zoals hierboven getoond in deze blogpost. In het huidige voorbeeld moeten we ESXi 5.5, Intel Xeon 31xx Series en Intel Xeon 34xx Series selecteren. Nadat u op de knop CPU/EVC Matrix heeft geklikt, kunt u op de screenshot zien dat Intel Penryn Generation moet worden geselecteerd in de EVC-modusinstellingen.

Ga terug naar het tabblad van uw webbrowser met de vSphere Web Client en open de EVC-modusinstellingen voor de cluster. Klik op EVC inschakelen voor Intel Hosts. In het vervolgkeuzemenu van VMware EVC-modus moeten we Intel Penryn Generation selecteren. Onderaan het venster moet u Validatie geslaagd zien in de Compatibiliteit sectie. Nu kunt u op OK klikken om de EVC-modusinstellingen op te slaan.

Daarna wordt in de sectie VMware EVC de informatie weergegeven dat VMware EVC is ingeschakeld. Klik op Huidige CPUID-details om de sectie met details over registers en maskerwaarden uit te vouwen.

De EVC-modus kan ook worden ingeschakeld tijdens het maken van een nieuwe cluster; VMware promoot deze mogelijkheid als de aanbevolen werkwijze. Door de EVC-modus in te schakelen bij het maken van een nieuwe cluster, voorkomt u problemen met het uitschakelen en migreren van VM’s die zijn ingeschakeld in de cluster (zoals u zich herinnert, moet een VM doorgaans worden uitgeschakeld en ingeschakeld om de nieuwe EVC-instellingen toe te passen).

CPUID Maskering

Naast de wereldwijde EVC-modus die wordt toegepast op alle VM’s en ESXi-hosts in de hele cluster, stelt vCenter Server u in staat om CPUID-flags handmatig te configureren voor een aangepaste VM. vCenter vergelijkt de CPUID-parameters die zijn ingesteld voor de VM met de CPUID-parameters die beschikbaar zijn op de bestemmings-ESXi-host. Als deze parameters hetzelfde zijn, is VM-migratie met vMotion toegestaan. De CPUID-maskerfunctie is ouder dan de EVC-modusfunctie.

Om CPUID-maskers voor een VM te configureren, voert u de volgende stappen uit:

Selecteer de benodigde VM, klik met de rechtermuisknop op de VM en selecteer Bewerken. In het geopende Bewerken-venster, open Virtuele hardware > CPU, selecteer CPUID-masker en klik op Geavanceerd.

In het venster CPU-identificatiemasker selecteert u de benodigde registerreeks en klikt u op de waarde om het masker op bitniveau te bewerken. Klik op de Legenda-knop om de betekenissen van elk karakter te bekijken dat wordt gebruikt voor het instellen van het masker.

Let op! Bewerk de maskers niet voordat u vertrouwd bent geraakt met de VMware Knowledge Base of VMware-ondersteuningsinstructies. Handmatige bewerking van de CPU-compatibiliteitsmaskers kan leiden tot een niet-ondersteunde VM-configuratie. Bijvoorbeeld, Windows-VM’s kunnen vastlopen met een BSOD.

Controleren van de configuratie van de EVC-modus in PowerCLI

U kunt de configuratie van de EVC-modus voor de hele cluster en voor aangepaste VM’s in VMware PowerCLI controleren met behulp van het commando:

Get-VM | Selecteer Naam,HardwareVersie,

@{Name=’VM_EVC_Mode’;Expression={$_.ExtensionData.Runtime.MinRequiredEVCModeKey}},

@{Name=’Cluster_Naam’;Expression={$_.VMHost.Parent}},

@{Name=’Cluster_EVC_Mode’;Expression={$_.VMHost.Parent.EVCMode}} | ft

Je kunt ook het maximale ondersteunde EVC-niveau voor alle hosts van je cluster controleren na het uitvoeren van het commando:

Get-VMHost | Select-Object Name,ProcessorType,MaxEVCMode

Per-VM EVC Mode

Het hierboven overwogen EVC-niveau is een optie op cluster niveau. VMware vSphere 6.7 biedt de mogelijkheid om een per-VM EVC-modus in te stellen die handig kan zijn voor VM-migratie over verschillende clusters of vCenter Servers en biedt je meer granulariteit. Een per-VM EVC-modus wordt ingesteld als een attribuut van de virtuele machine-instellingen en voegt meer flexibiliteit toe voor het beheren van VM’s die moeten migreren met vMotion. De VM-hardwarecompatibiliteit moet van versie 14 of hoger zijn. De configuratie van de per-VM EVC-modus wordt opgeslagen in het VMX-configuratiebestand van de VM als regels die de string featMask.vm.cpuid bevatten. Wanneer een VM met geconfigureerde per-VM EVC-modus wordt gemigreerd, wordt de EVC-configuratie die is opgeslagen in het VMX-bestand met de VM gemigreerd. De instellingen voor de per-VM EVC-modus kunnen worden gewijzigd wanneer een VM is uitgeschakeld (schakel de VM uit en weer in om de gewijzigde instellingen voor de per-VM EVC-modus toe te passen

Als u een per-VM EVC-modus inschakelt voor een VM die zich in de cluster bevindt die al is geconfigureerd met de wereldwijde EVC-modus, kan een per-VM EVC-modus gelijk zijn aan of lager zijn dan de EVC-modus die is ingesteld in de gehele cluster. Het is dus mogelijk om zowel de wereldwijde als de per-VM EVC-modus tegelijkertijd te configureren. Na het klonen van een VM worden de per-VM EVC-instellingen gekloond met de VM.

Om de per-VM EVC-modus te configureren, opent u de VMware vSphere HTML5-client, gaat u naar Hosts en Clusters, selecteert u vervolgens de benodigde VM. Open het tabblad Configureren, selecteer Meer > VMware EVC en klik op Bewerken.

Hoe de EVC-modus in de cluster inschakelen zonder downtime

In sommige gevallen kunt u de EVC-modus in de gehele cluster inschakelen zonder enige VM-downtime (meestal moeten VM’s worden uitgeschakeld en opnieuw worden opgestart om de instellingen voor de cluster EVC-modus toe te passen). Dit is mogelijk als aan de volgende vereisten wordt voldaan:

  • Actieve VM’s bevinden zich op de ESXi-host met de oudste processor
  • De EVC-modus in de cluster is geconfigureerd om de CPU-instructiesets te gebruiken die overeenkomen met de generatie van de oudste processor

Het inschakelen van de EVC-modus voor de vCenter-VM

U kunt de volgende situatie ervaren die veel voorkomt in VMware vSphere-omgevingen:

De vCenter Server wordt uitgevoerd als een VM op een ESXi-host die moet worden toegevoegd aan een cluster waarvoor de EVC-modus is ingeschakeld.

Het probleem is dat een ESXi-host met draaiende VM’s (inclusief de VM waar vCenter op draait) niet aan de cluster kan worden toegevoegd na het inschakelen van EVC totdat alle VM’s zijn uitgeschakeld. Aan de andere kant is de VM waarop vCenter draait nodig om de cluster te beheren, en we kunnen de vCenter-VM niet uitschakelen omdat deze op dit moment in gebruik is. Dit probleem is vooral acuut wanneer de vCenter-VM draait op de ESXi-host met een nieuwere processor.

Opmerking: Het wordt aanbevolen om een standaard vSwitch (geen Gedistribueerde vSwitch) te gebruiken om de VM waarop vCenter draait met het netwerk te verbinden in dit geval.

A possible solution. Consider the algorithm that can help you to resolve the issue for VMware vSphere 5.5:

  1. Verplaats een andere ESXi-server (die geen vCenter-VM draait) naar de cluster als er nog geen ESXi-servers in de cluster zijn. VM’s op de ESXi-server die naar de cluster wordt verplaatst, moeten worden uitgeschakeld.
  2. Sluit de VM waarop vCenter Server draait af. Maak verbinding met de ESXi-host waarop de vCenter-VM zich bevindt door VMware Host Client te gebruiken om de VM te deregistreren of maak verbinding met een SSH-client om bestanden te kopiëren. In VMware Host Client, klik met de rechtermuisknop op de vCenter VM en kies Deregistreren. Kopieer handmatig alle bestanden van de vCenter-VM naar de datastore die is verbonden met de ESXi-server die u al naar de cluster hebt verplaatst in stap 1. Als zowel ESXi-hosts een NFS- of iSCSI- gedeelde opslag gebruiken, hoeft u de VM-bestanden niet naar een andere locatie te kopiëren.

Opmerking: Mogelijk

  1. Registreer de vCenter-VM op de ESXi-host die naar de cluster is verplaatst (verbind met de ESXi-host met VMware Host Client, open de datastore, zoek de bestanden van de vCenter-VM, selecteer het VMX-bestand, klik met de rechtermuisknop op het bestand en klik op VM registreren). Voer de vCenter-VM uit op deze ESXi-host in de cluster. Log in op vCenter met VMware vSphere Client om ervoor te zorgen dat u uw vSphere-omgeving met vCenter kunt beheren. Mogelijk moet u Admission Control tijdelijk uitschakelen.
  2. Verplaats de bron-ESXi-host waarop de vCenter-VM oorspronkelijk werkte naar de cluster. Schakel indien nodig andere VM’s op die ESXi-host uit voordat u de host verplaatst.

Conclusie

Verbeterde vMotion-mogelijkheid (EVC) is een handige functie van VMware vSphere die uw cluster schaalbaar houdt en u in staat stelt knooppunten met processoren van verschillende generaties aan de cluster toe te voegen voor het uitvoeren van VM-levende migratie tussen ESXi-hosts met vMotion. De EVC-modus maskeert de functies van de processoren van de nieuwe generatie om een uniforme basislijn te creëren die overeenkomt met de functies van de oudste generatie processoren die worden gebruikt door ESXi-hosts in de cluster. Als gevolg hiervan heeft u een homogene omgeving waarin alle processoren dezelfde instructiesets gebruiken en draaiende VM’s kunnen migreren met vMotion. Een groot aantal VMware-klanten dat clusters gebruikt, maakt gebruik van de EVC-modus. Het wordt aanbevolen om de EVC-modus in te schakelen bij het maken van de cluster om mogelijke problemen met het toevoegen van ESXi-hosts en migratie van draaiende VM’s, inclusief de VM waarop vCenter Server draait, te voorkomen.

Ongeacht of je een cluster gebruikt of niet, vergeet niet om VMware-VM’s te back-uppen. NAKIVO Backup & Replication is een snelle, betrouwbare en betaalbare oplossing voor gegevensbescherming die je VMware-VM’s kan beschermen, zelfs als die VM’s migreren tussen ESXi-hosts in clusters.

Source:
https://www.nakivo.com/blog/how-vmware-evc-mode-works-overview/