DRS Cluster im Ungleichgewicht

Versetzt man einen ESXi Host im DRS Cluster in den Wartungsmodus, so wird die Last (VMs) auf die verbleibenden Hosts verteilt. Wird der Wartungsmodus beendet, kann man häufig beobachten, daß der jetzt frei ESXi Host nicht mit VMs befüllt wird. Auch nach Stunden, oder gar Tagen ist die Last immer noch stark ungleich verteilt. Ich habe mich schon oft gefragt, ob das DRS vielleicht falsch konfiguriert, oder gar defekt ist.

Es ist alles in Ordnung

Die Aufgabe von DRS besteht nicht darin, alle Hosts gleichmäßig auszulasten, sondern VMs die Ressourcen zu bieten, die sie benötigen. Das bedeutet: Wenn ein einziger Host genügend Ressourcen bereit stellt, um die Bedürfnisse aller VMs im Cluster zu bedienen, so besteht kein Grund VMs auf andere Hosts zu verschieben. Denn jede vMotion-Aktion kostet Ressourcen. Steht am Ende der Verschiebung kein Gewinn für die VMs, so ist dies als Verschwendung zu betrachten. Frank Denneman, der als Spezialist in DRS Fragen gilt, erklärt in seinem Artikel “Disabling MinGoodness and CostBenefit” dieses Phänomen und warum man die Parameter MinGoodness und CostBenefit besser nicht manipulieren sollte.

MinGoodness und CostBenefit

Ein VMware KB Artikel erklärt, wie man die obigen Parameter außer Betrieb setzen kann. Doch was ist deren Aufgabe?

CostBenefit

vCenter überwacht das Verhalten aller VMs. Es berechnet, wieviele Ressourcen notwendig sind eine VM von HostA nach HostB zu verschieben. Je nach Last dieser VM können hierfür erhebliche CPU Ressourcen während des Verschiebevorgangs von Nöten sein. Das ist der “Cost” Anteil in CostBenefit. Dem gegenüber steht der Nutzen durch frei werdenden Ressourcen auf dem Quell-Host nach der Verschiebung.

MinGoodness

vCenter wird normalerweise nur VMs auf Hosts verschieben, wenn diese eine geringere mittlere Auslastung haben als der urprüngliche Host. MinGoodness gibt DRS Auskunft, inwieweit die Verschiebung sich auf die Auslastung des Clusters auswirkt.

Setzt man beide Parameter in den erweiterten Eigenschaften des DSR Clusters auf Null, so vermittelt man dem DRS Algorithmus, vMotion Aktionen seien “kostenfrei” und nach dem Umzug muss der Nutzen für Host und VM nicht signifikant höher sein als zuvor.

vCenter neu starten?

Ein billiger Trick, um vCenter zum Ausgleich des Clusters zu bewegen, war bisher der Neustart von vCenter. Der Grund, warum DRS danach bereitwilliger vMotion Aktionen auslöst ist recht einfach erklärt. Durch den Neustart “vergisst” vCenter wie teuer ein vMotion einer bestimmten VM sein könnte, da historische Daten früherer Migrationen dieser VM verloren gehen. Man kann sagen, vCenter lässt sich nur aus Unwissenheit auf eine teure Verschiebung ein.