Projekt SQL auf VMware Teil 3 – VMware Guest Konfiguration

Im dritten Teil meiner Projektbeschreibung geht es nun um die Detail Konfiguration der einzelnen virtuellen Maschinen.

Teil 1: Einführung oder das “Warum?”
Teil 2: Konfiguration VMware Umgebung

Diese SQL Server VMware Umgebung ist nun die dritte eigenständige VMware-Umgebung. Alle Umgebungen bestehen jeweils aus drei ESXi Hosts die an ein oder zwei SANs angeschlossen sind.

Bisher haben wir uns in der zweiten oder auch “Anwendungs-VMware” genannten Umgebung noch nicht so detaillierte Gedanken zu den VMs und deren möglichen Performance Anforderungen gemacht.
Das hat sich aber mit der Einführung dieser SQL Server on VMware Umgebung geändert, da wir nun Hochleistungs-Produktivserver von Physik in Virtuell umwandeln wollten ohne Geschwindgkeitseinbußen.
Grundsätzlich ging es, wie im ersten Teil beschrieben, natürlich um die Ablösung vorhandener Hardware durch neue – in Form von VMware Hosts. Dahinter stand dann aber natürlich bei der Umsetzung auch die Anforderung dass es auf keinen Fall langsamer werden sollte. 🙂

Aus diesem Grund habe ich mich intensiv mit den Anforderungen von SQL Servern auf einer solchen Umgebung beschäftigt und diverse Anleitungen bzw. Best Practices gelesen. Diese gibt es von Microsoft, VMware und noch diversen anderen Quellen (einen Teil davon habe ich unten verlinkt). Besonders hilfreich war dabei eine Artikelserie von David Klee auf der Seite sqlservercentral.com der sich “Stairway to SQL Server Virtualization” (1) nennt.
Der Großteil meiner nun folgenden Einstellungen / Konfigurationen ist diesem Artikel entnommen da dort, anders als bei den anderen Quellen, direkt beispielhaft und nachvollziehbar die wichtigsten Punkte hervorgehoben sind.

  1. Storage / Festplattenaufteilung
    Hier gilt im Prinzip das gleiche was auch für die physikalische Hardware zählt: Aufteilung der Zugriffe auf möglichst viele Platten bzw. hier SAN Pfade (LUNs). Da es sich hier oftmals immer wieder um das gleiche Ziel auf dem SAN handelt, nur unterschieden durch unterschiedliche RAIDs (6 oder 10), ist als entscheidender Unterschied nur der Puffer jedes einzelnen Pfades (LUN) zu nennen.
    Das bedeutet auch, die richtigen RAIDs müssen über die unterschiedlichen LUNs an die VM durchgereicht werden. Dementsprechend ist die Festplattenkonfiguration und -zuweisung genauso komplex wie im “physikalischen Leben”.
    Das sieht dann zum Beispiel so aus – eng angelehnt an die Empfehlungen von David Klee (1):
    VM Guest Drive Konfiguration
    Wie im dem Artikel erwähnt, ist es auch von besonderer Wichtigkeit die richtigen Festplattenadapter, sprich Controller (vgl. SCSI ID) zu verwenden, also nicht die Standard sondern die Paravirtualisierten Adapter (Paravirtual SCSI Driver – PVSCSI). Für die Partitionen C: (OS) und Y: (Pagefile) in der Tabelle oben kann das bei dem Standard LSI SAS Controller bleiben.
    Der Rest sollte auf den erwähnten PVSCSI eingerichtet werden. Der entsprechende Controller und damit die Laufwerke sind allerdings erst in der VM vorhanden wenn die VMware Tools installiert sind.
    Die Zuordnung der Festplatten zum passenden Controller funktioniert mittlerweile leider nur noch in dem vSphere Webclient.

    Als Festplattentyp sind feste Diskgrößen (Thick-Provision Lazy-Zeroed bzw. Eager-Zeroed) als statische VHDs zu verwenden – Thin-Provision sind zwar am Anfang sparsamer beim Verbrauch des Plattenplatzes, verbrauchen dafür aber zusätzliche Ressourcen beim vergrößern der VMDK Dateien im Hintergrund wenn der Platz gebraucht wird. Das ist ähnlich wie beim Autogrowth einer Datenbank meistens der genau falsche Zeitpunkt und verursacht dann ggf. Probleme in der VM.
  2. CPU
    Die CPU Einstellungen gestalten sich ebenfalls etwas komplizierter.
    Es gilt bei dem ganzen Thema zu beachten, wie viele physikalische CPUs der ESX Host hat auf dem die VMs laufen sollen. Das sollte als Maximum angesehen werden was in den VMs vergeben werden sollte – ein Überbuchen der CPU Ressourcen, d.h. zuweisen von mehr CPU als der Host zur Verfügung hat, ist für SQL Server nicht sinnvoll.
    Zusätzlich könnte man noch im Zusammenhang mit der Größe des Speichers (Punkt 3) das Thema NUMA (Non Uniform Memory Access) betrachten. Das bedeutet, der Zugriff auf den einer CPU direkt zugeordneten Speicher geht schneller als wenn auf “weiter entferneten” Speicher zugegriffen werden muss. In wiefern das Auswirkungen auf die Leistung der VMs hat, kann ich bisher nur abschätzen, da ich bisher keine Informationen von Dell bekommen habe, die mir die richtige Konfiguration bei unseren verwendeten Servern verrät.

    Die grundsätzlichen CPU Einstellungen verteilen sich einfach auf die virtuellen Sockets (Prozessoren) sowie Cores pro Socket (Kerne je Prozessor).
    Im Screenshot sieht man, dass damit bei dieser VM 12 Kerne zugeordnet sind, die dann auch nach aktuellen Lizenzbedingungen für den SQL Server zu lizenzieren sind (keine Garantie!).

  3. RAM
    Die Zuordnung des notwendigen Arbeitsspeichers für eine VM hängt hauptsächlich von der Größe der Datenbanken ab, die sich aus Performance Gründen möglichst vollständig im Arbeitsspeicher befinden sollten. Zu addieren ist dann noch ein Anteil für OS und SQL Server selber. In dem Screenshot oben sind aktuell 192 GB zugeordnet.
    Wie bei CPU schon angedeutet gibt es beim Thema NUMA noch fehlende technische Details die für die Konfiguration fehlen.
  4. Netzwerk
    Für das Netzwerk sind Adapter des Typs VMXNET3 zu verwenden, die ebenfalls erst nach Installation der VMware Tools in der VM ankommen.Grunsätzlich ist noch über ein Teaming von zwei Netzwerkkarten in der VM nachzudenken –  nicht unbedingt als Redundanz Thema aber wieder mit zwei Puffern als zusätzlicher Geschwindigkeitsvorteil – wenn auch wahrscheinlich minimal. Das gilt es noch zu testen. Dieser Punkt kam erst später durch ein weiteres Dokument von Idera “Moving SQL Server to a virtual Platform” (6)  hinzu. Aus diesem Grund ist das auch nicht in der ursprünglichen Konfiguration mit enthalten.

Die gesamte Konfiguration bezieht sich auf die Einstellungen einer VM. Natürlich ist die komplette Installation inkl. SQL Server zum Schluss in eine Vorlage gewandert um daraus schnell einen weiteren SQL Server erstellen zu können.

Weitere Einstellungen:

  • Powerplan auf höchste Performance – in der VM als auch bei den ESXi Hosts.
    Die Kontrolle für die VM geht, neben dem Weg über die Energieeinstellungen, auch mit den Powershell dbatools mit dem Kommando Test-DbaPowerPlan (https://dbatools.io/functions/test-dbapowerplan )
    Weiteres zu den dbatools im nächsten Artikel “Migration”.

Quellen:

  1. Stairway to SQL Server Virtualization von David Klee auf sqlservercentral.com
    http://www.sqlservercentral.com/stairway/112551/
  2. Grundlegendes zu NUMA – https://technet.microsoft.com/de-de/library/ms178144(v=sql.105).aspx
  3. VMware Best Practices SQL Server – http://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/solutions/sql-server-on-vmware-best-practices-guide.pdf
  4. VMware Performances Best Practices
  5. Moving SQL Server to a virtual Platform von Idera (Registrierung erforderlich)
  6. Brent Ozars Seite zu Virtualization Best Practices: https://www.brentozar.com/sql/virtualization-best-practices/ (die Seite scheint an dieser Stelle nicht mehr zu existieren)

Themen für die noch folgenden Beiträge zum Projekt

  • Migration eines SQL Servers mit dbatools beschreiben, W2K16, SQL 2016 SP1
  • Performance Vergleich physikalisch <-> virtuell

Danke fürs Lesen,
Volker

Projekt SQL auf VMware Teil 2 – Konfiguration VMware

Projekt SQL auf VMware – Teil 2 – Konfiguration VMware

Wir ersetzten sieben Hardware SQL Server durch eine neue VMware Umgebung.

Im Teil 1 ging es um das Warum, die Auswahl und die darauf folgende Bestellung.

In diesem Teil soll es um die Konfiguration der VMware Umgebung gehen, die während der Grundinstallation durch einen Dell Remote Techniker ausgeführt wurde.
Das war eine Premiere da wir ansonsten bisher eine Vor Ort Installation mit gebucht hatten.

Die Technik hinter der Umsetzung:

Die drei Server (Dell PowerEdge R730) enthalten jeweils 2 CPUs mit 12 Cores, das sind insgesamt 72 Cores und jeweils 512 GB RAM. In den Servern stecken zwei micro SD Karten für das Betriebssystem (VMware 6.0 – 6.5 wird vom SAN noch nicht unterstützt). In dem Compellent SC4020 SAN sind 9 SSD mit jeweils 3,82 TB, davon eine als HotSpare konfiguriert. Die Volumes sind als RAID 6 oder 10 verfügbar.
Server und SAN sind über die Dell S4048T Switche mit je 4 x10G angebunden.

Zuerst erfolgte die physikalische Installation der Umgebung im Rechenzentrum. Dabei ergab sich das Problem, dass die Switche ohne OS geliefert wurden. Es war also notwendig für die Switche und dann auch die beiden Controller des SAN serielle Anschlüsse zur Einrichtung zur Verfügung zu stellen. Dafür stellte mein Kollege mir einen 4-fach seriellen auf USB/Netzwerk Adapter auf Basis eines Raspberry zur Verfügung. Auf diesem waren dann gleichzeitig noch FTP, TFTP und diverse andere Server die sich für die Einrichtung als sehr hilfreich erwiesen.
Die Server und  das SAN waren gleichzeitig noch über ihre Management Ports (Dell iDRAC) erreichbar, was ebenfalls für die Grundinstallation notwendig war.

Anhand des prinzipiellen Aufbaus (Bild unten) kann man die Architektur der Umgebung gut erkennen. Oben zwei Server, darunter die beiden Switche woran dann auch das SAN angeschlossen ist. Natürlich wird alles doppelt verkabelt um eine größtmögliche Ausfallsicherheit zu erreichen.

 

URL aus dem Installationsguide von Dell für das Compellent SAN SC 4020
(Quelle und Copyright der Grafik liegen bei Dell.)

Die im Bild dargestellte Umgebung unterscheidet sich nur dadurch von unserer, dass hier nur zwei Server verwendet werden, bei uns aber drei Server als Hosts. Natürlich existieren noch weitere interne Verbindungen zwischen Servern, Switchen und dem SAN um zum Beispiel VMware, VMotion, iSCSI und sonstigen Traffic vom eigentlichen Traffic zum restlichen Netzwerk zu trennen. Dessen Verbindung geschieht dann über zwei Breakout Cable mit 4 x 10G welche direkt an unseren zentralen Core Switchen angeschlossen sind.

Die Grundinstallation erfolgte dann durch den erwähnten Dell Remote Techniker.

  • Server Firmware Updates
  • VMware Grundinstallation auf den SD Karten
  • Switch OS Installation und Konfiguration
  • SAN Einrichtung, Erstellung Volumes
  • iSCSI Einrichtung in der VMware und Verbindung der SAN Volumes

Während der darauffolgenden Tests der verschiedenen Ausfallszenarien (Switch, Server, SAN Controller) stellte sich ein Fehler beim Reboot eines der Switche heraus. Der Support von Dell hat den Switch dann direkt ausgetauscht.

Im nächsten Teil 3 folgt dann die Detail-Konfiguration der VMs.

Danke fürs Lesen,
Volker

Projekt SQL auf VMware Teil 1 – Einführung oder das “Warum”

Projekt SQL auf VMware – Teil 1 – Einführung oder das “Warum”?

Wir ersetzten die sieben Hardware SQL Server durch eine neue VMware Umgebung.

Dieses Projekt möchte ich hier in einigen Schritten beschreiben vom Warum über die Auswahl bis hin zur (hoffentlich) erfolgreichen Umsetzung.
Das Projekt läuft seit November 2016 mit der Auswahl, die Bestellung ist Ende Januar 2017 erfolgt und jetzt ab März erfolgt die Umsetzung. Geplantes Projektende ist Ende Juli 2017. Bis dahin sollen die Server auf die VMware umgezogen sein.

Zum Anfang aber noch einmal zurück zum
Warum:

  • die physikalischen Server laufen nach und nach aus dem Support und müssten ersetzt werden.
  • Reduzierung der Kosten für den Neukauf aller physikalischen Server
  • Reduzierung der SQL Server 2016 Core Lizenzen – weniger Cores zu lizenzieren
  • bessere Hochverfügbarkeit (HA).
  • kürzere Wiederherstellungszeiten im Fall eines Disasters (Disaster Recovery – DR)
    – wir werden das noch genauer betrachten müssen.
  • weniger ungenützte Ressourcen auf den physikalischen Servern

Auswahl:

  • Zur Analyse und zur Auswahl der Hardware haben wir mit einem Dell Tool (DPack ) die Leistungsdaten der physikalischen Server über eine Woche aufgezeichnet.
  • Als ersten Eckpfeiler sahen wir dort ein Maximum von rund 11.000 IOPS welches wir auch entsprechend in der VMware umgesetzt bekommen müssten.
  • IOPS pro Sekunde

    IOPS pro Sekunde

  • Das ist nur ein Peak und deshalb als Maximalwert zu betrachten. Der Mittelwert bei 95% liegt bei 2475 IOPS
  • Hier zu sehen ist die Zusammenfassung für die 7 Server mit den ermittelten Daten:DPack Zusammenfassung der betroffenen Server
  • Das ist ebenfalls aus dem DPack-Report, was zwar hauptsächlich für Dell Server gedacht ist, aber meines Wissens durchaus auch für andere Hardware funktioniert.

Darufhin wurde dann eine Auswahl von 3 Dell Poweredge Servern (R730), zwei Dell 10G-Switchen (S4048T) sowie zwei SANs (Compellent SC4020) als zentralem Storage vorgeschlagen.

Für die VMware Version reicht uns an der Stelle die Essentials Plus Variante, da dieses eine komplett eigenständige Umgebung werden soll. Als Betriebssystem in den VMs dient uns Windows 2016 Datacenter mit der richtigen Core Anzahl.
Die SQL Server sind mit SQL Server 2016 Standard inkl. SA in der Core Variante lizenziert, ein einzelner wird auf Enterprise 2016 angehoben für einen Mobile Reports Reporting Server (SSRS).

Bestellung

Leider wurde für die Bestellung aus finanziellen Gründen eines der beiden SANs gestrichen was den Gesamtpreis um ca. 50K reduzierte. Das fehlende SAN beeinträchtigt das Thema HA in nur geringem Maß, ist allerdings für das Disaster Recovery entscheidend.
Bei einem kompletten Ausfall des SANs sind die unternehmenskritischen Produktiv-Datenbanken nun nicht mehr in kürzester Zeit auf dem zweiten SAN verfügbar sondern müssen aus dem Backup wiederhergestellt werden. Hier ist das Ziel der kürzeren Disaster Recovery Zeiten meines Erachtens wieder in weite Ferne gerückt.

Fortsetzung in Teil 2.

Danke fürs Lesen,
Volker