En nämare titt på VMware Fault Tolerance

En av de mest omtalade funktionerna i vSphere 4 är onekligen Fault Tolerance, en funktion vars uppgift är att se till att valda virtuella maskiner fortsätter fungera även om hårdvaran den körs på går sönder. Jag genomförde nyligen en installation hos en av våra kunder och passade på att testa Fault Tolerance lite mer på djupet. Funktionsmässigt “spelas” allt som händer i den virtuella maskinen in och lagras i loggfiler som därefter replikeras över till en annan fysisk server där de spelas upp på en sekundär kopia av den virtuella maskinen. Allt som händer i den virtuella maskinen utförs alltså på 2 olika servrar och detta är priset man får betala för Fault Tolerance: Dubbelt så mycket systemresurser går åt. VMware har en rekommendation att inte ha mer än 4-8 feltoleranta virtuella maskiner på en fysisk server, i den siffra räknas både primära och sekundära virtuella maskiner.

Tekniken bakom Fault Tolerance kallas av VMware för vLockstep som har sitt ursprung i funktionen Record/Replay som har funnits i VMware Workstation ett tag. Trafiken för replikering av loggfiler ska ske över dedicerade (minimum) gigabit nätverkskort, en central disklösning för lagring av vmdk-filerna krävs också.

Fault Tolerance fungerar utmärkt tillsammans med den kompletterande tillgänglighetslösningen High Availability. Man kan testa failover enkelt via GUI för att simulera hårdvarukrasch via “Test failover”-optionen – Jag är däremot mer intresserad av att se hur systemet reagerar i skarpt läge vilket ledde mig till att i den nämda installationen helt sonika rycka strömmen för den fysiska servern där den feltoleranta primära virtuella maskinen (ibland är det inte så dumt med förkortningar ändå, FTPVM kanske låg, för att kontrollera hur lång tid fiktiva användare skulle vara utan sin virtuella maskin gjorde jag det gamla hederliga ping-testet samtidigt. En ny siffra som presenteras i den uppdaterade Virtual Infrastructure client, numer vSphere client, är Log Intervall om man har Fault Tolerance aktiverat och visar hur mycket “lag” (fördröjning) det är mellan den primära och sekundära noden. Replikeringen av loggfilerna sker nämligen asynkront. 0,01 sekunders fördröjning hade jag i mitt test.

Nu är det inte vilka virtuella maskiner som helst som man kan använda Fault Tolerance på, dessutom kan man inte använda snapshot samtidigt som Fault Tolerance på en VM. De restriktioner som finns idag är följande:
Max 1 vCPU
Måste vara “tjock” disk (d.v.s inte thinprovisioned)
Inget stöd för RDM
Snapshot får inte finnas
Intel 31xx, 33xx, 52xx, 54xx, 55xx, 74xx eller AMD 13xx,23xx, 83xx processorer eller senare.

Men sett från den ljusa sidan så kan man skydda alla operativsystem oavsett om det är 32- eller 64-bitars. Inga speciella drivrutiner behövs även om VMware tools rekommenderas (av flera olika skäl).
Vem får då köra Fault Tolerance, vilka licenser är det som krävs? Här har faktiskt VMware varit väldigt generösa, Fault Tolerance ingår i alla editioner överstigande Standard edition, det vill säga Advanced, Enterprise och Enterprise Plus.

Och vad var egentligen resultatet? Hur länge var de fiktiva användarna utan sin virtuella maskin? Ping-testet visade att man tappade 1 ping innan den sekundära virtuella maskinen tog över. Alltså lika mycket/lite som när man kör VMotion!!! Hörde jag någon säga “Fantastiskt”?