Acropolis Block Services (ABS)

In diesem Artikel geht es um Acropolis Block Services (ABS) und wie damit der Storage der Nutanix Plattform an externe Verbraucher via iSCSI präsentiert werden kann.

Use Cases gibt es dabei einige, denkt man zum Beispiel daran, dass es noch immer Workloads gibt vor deren Virtualisierung man z.B. auf Grund von Herausforderungen bei der Lizensierung zurückschreckt. Also was tun, wenn man zwar den Großteil seiner Workloads virtualisiert und auf eine neue Hyper-Converged Plattform migriert, jedoch besagte Workloads noch mit einem performanten, hochverfügbaren Storage versorgen muss?

Genau hierfür wurde ABS entwickelt und ist dabei denkbar einfach zu verwenden. Für die Verwendung von ABS muss als erstes die so genannte External Data Services IP (DSIP) für das Nutanix Cluster konfiguriert sein.

ABS DSIP

 

Die DSIP dient den Clients als Zugriffspunkt und wird später im iSCSI Initiator des Clients entsprechend konfiguriert.

Im zweiten Schritt, muss eine Volume Group angelegt werden.

Eine Volume Group ist lediglich ein logisches Konstrukt, zur Verwaltung des Storage und der dazugehörigen Zugriffssteuerung. Eine VG vereint so die eigentlichen vDisks (Anzahl & Größe), die dem Client präsentiert werden, als auch die entsprechenden Sicherheitseinstellungen wie IP/IQN Whitelist und CHAP Authentifizierung.

ABS Add VG3

Jede vDisk, die innerhalb der Volume Group konfiguriert wird, taucht am Client später als unabhängig Disk auf. Sprich benötigt der Client z.B. 3 verschiedene Platten, für TempDB, Logs und Datenbank, so muss der VG entsprechend drei vDisks in der gewünschten Größe konfiguriert werden.

ABS Add VG3 Add Disk

ABS Add VG3 Add Disk2

Anschließend noch den Haken für „External Access“ setzen und die entsprechenden Initiatoren via „Add New Client“ der Whitelist hinzufügen. Optional kann hier die Client CHAP Authentifizierung aktiviert werden. So ließe sich letzten Endes Client als auch Server via Mutual CHAP authentifizieren.

ABS Add VG3 Add iSCSI Client

Den Punkt „Attach to a VM“ überspringen wir, da dieser im Falle des AHV Hypervisors dazu dient, eine vDisk direkt an VMs zu mappen und nicht via iSCSI zu präsentieren.

Zuletzt ließe sich optional noch der Flash Mode aktivieren, dieser verhindert, dass Daten einer vDisk in einem hybriden System auf HDD ausgelagert werden, pinnt also die vDisks in den schnellen Flash Tier.

Damit ist die Konfiguration seitens Nutanix bereits abgeschlossen und der ist Storage bereit entsprechend konsumiert zu werden.

Die erste Besonderheit an ABS ist, dass auf Seiten des Clients nur die DSIP angegeben werden muss und keine MPIO Software installiert werden und keine Pfadoptimierung bzw. Konfiguration erfolgen muss. Der iSCSI Initiator frägt über die DSIP die Ressourcen an und wird dann via iSCSI Re-Direction an die eigentlichen CVMs, welche die vDisks hosten, weitergeleitet. Die DSIP ist entsprechend hochverfügbar und kann im Fehlerfall von jeder FSVMs übernommen werden.

ABS iSCSI Init 1

ABS iSCSI Init 2

ABS iSCSI Init 3

ABS DiskMgr

Das führt direkt zur nächsten Besonderheit, den Scale-Out Fähigkeiten. Der Client kann eine dedizierte iSCSI Session zu jeder einzelnen vDisk innerhalb einer Volume Group aufbauen, die potentiell alle auf verschiedenen CVMs gehostet sein können. So kann im Falle eines 10 Node Nutanix Clusters, eine VG mit 10 vDisk, die entstehende Last über 10 physischen Nodes und deren Ressourcen verteilt werden.

Sofern ABS unter Nutanix AHV als Hypervisor eingesetzt werden, so greift auch hier das Acropolis Dynamic Scheduler (ADS) Feature und hilft dabei Hot Spots zu vermeiden. Das beutetet, die Plattform erkennt überlastete CVMs und kann als Gegenmaßnahme die durch ABS präsentierten vDisks zwischen den CVMs neu verteilen, um den Hotspot zu eliminieren.

ABS Überblick

Im Fehlerfall eines Hosts oder einer CVM, werden die dort gehosteten vDisks von einer anderen CVM übernommen und der Client versucht sich erneut über die DSIP einzuloggen und wird dann einfach über die iSCSI Re-Rirection Funktionalität an die neue(n) CVM(s) weitergeleitet.

ABS Failover

Hier ein Beispiel Video des Kollegen Albert Chen

Nutanix Shadow Clones

Shadow Clones kommen vor allem in VDI-Umgebungen mit Linked Clones zum Einsatz. Sowohl Citrix XenDesktop mit MCS als auch VMware Horizon View arbeiten hier mit einem Master-Image, auf welchem alle Linked Clones basieren bzw. darauf verweisen. Das spart enorm viel Speicherplatz, da das Golden Image nur einmal gespeichert werden muss und alle damit verknüpften VMs lesend auf dieses Image zugreifen. Die vermeintlichen Nachteile von Linked Clones sind, der erhöhte I/O-Bedarf auf dem Storage und ein erhöhter Netzwerkverkehr. Das können in einer 3-Tier Umgebung eine LUN und ein FibreChannel Netzwerk sein, oder Falle von HCI Umgebungen, ein einzelner Host mit seinen lokalen Festplatten und dem 10G Ethernet. Ohne Shadow Clones würden also alle Linked Clones über das Netzwerk auf die „vDisk“ des Golden Images zugreifen.

shadowclones2Um den daraus resultierenden Hotspot auf den physischen Festplatten zu vermeiden und Netzwerkverkehr zu reduzieren, überwacht die Distributed Storage Fabric (DSF) den Zugriff auf alle vDisks. Entdeckt sie dabei eine vDisk, welche zum einen Zugriffe von mindestens zwei remote CVMs und der lokalen CVM aufweist und zum anderen ausschließlich Read Requests bedient, so wird diese als immutable (read-only – unveränderbar) markiert. Von nun an wird diese vDisk auf den allen Hosts zwischengespeichert, welche Daten von dieser vDisk anfragen. Damit können die CVMs im Cluster nun Leseanfragen von Linked Clones sofort lokal bedienen. Somit wird quasi die Data Locality automatisch sichergestellt und die VMs profitieren so von einer extrem niedrigen I/O-Latenz.

shadowclones1-page-1Ein manuelles Kopieren des Golden Images auf alle Hosts im Cluster entfällt dadurch. Um das Netzwerk zu schonen, passiert dies auch nicht pro-aktiv, sondern erst wenn ein Block erstmalig angefragt wird. Nimmt man Änderungen am Golden Image vor, z.B durch das Einspielen von Windows Updates, werden die Shadow Clones verworfen und der Prozeß neu gestartet.

Wie konfiguriert man Shadow Clones? Gar nicht! Shadow Clones sind automatisch aktiv. Das Ein- und Ausschalten erfolgt über die nCLI:
ncli cluster edit-params enable-shadow-clones=<true/false>

Zu Shadow Clones gibt es auch ein Video im nu.school-Kanal von Nutanix auf YouTube:

Nutanix Cluster Erweiterung (Scale-Out)

In diesem Artikel möchte ich etwas näher auf die Erweiterungsmöglichkeiten (Scale-Out) der Nutanix Plattform eingehen. Doch zu Beginn die Frage, warum denn ein unkompliziertes und schnelles Scale-Out ein essentielles Feature der Plattform ist?

Nutanix verfolgt die Philosophie, dass das bisherige Vorgehen, Storage und Compute auf 3, 5 oder gar mehr Jahre „vorausschauend“ zu beschaffen, nicht mehr zeitgemäß ist. Zum einen ist es extrem schwer den genauen Bedarf an Ressourcen über einen längeren Zeitraum wirklich präzise vorauszusagen und so läuft man Gefahr, wohlmöglich zu schnell Anforderungen nach neuen Ressourcen nicht nachkommen zu können, oder schlicht, zu groß zu planen und man so ungenutzte Ressourcen vorhält. Selbst wenn die Einschätzung halbwegs passen sollte, werden die Ressourcen über einen längeren Zeitraum nicht genutzt und schaffen so erst über die Zeit einen reellen Wert für das Unternehmen, wenn diese tatsächlich über den Lebenszyklus hinweg auch tatsächlich genutzt werden.

Wie sieht hierzu jetzt die Antwort der Nutanix Plattform aus?

Nutanix empfiehlt tatsächlich nur die Ressourcen zu beschaffen, die stand heute nötig sind, um die bestehenden Workloads und wirklich kurzfristig anstehenden Projekte zu stemmen. Um dies zu ermöglichen, muss es technisch möglich sein, die Plattform möglichst schnell und unkompliziert zu skalieren.

 

Scale-Out

Möchte man ein bestehendes Nutanix Cluster erweitern, so ist der wohl härteste Job, der Einbau und die Verkabelung der Nodes im Rack. Der restliche Prozess kann dagegen bequem per Prism gesteuert werden. Alles das es dazu braucht, sind die folgende Informationen/Daten:

  • IP Adressen für die neuen Nodes (je 3 Adresse pro Node – Hypervisor, CVM, IPMI)
  • Angabe des gewünschten Hypervisors (Upload der entsprechenden .iso Datei)

Die Nodes werden über ein IPv6 Discovery automatisch erkannt und der Installationsprozess, welcher die neuen Nodes mit allen benötigten Komponenten im Hintergrund betankt, erfolgt über die so genannte Nutanix „Foundation“ Komponente. Hierzu folgt in Kürze ein dedizierter Beitrag, der erklärt was die Foundation genau macht. Die folgenden beiden Screenshots zeigen, wie einfach ein Nutanix Cluster zu erweitern geht:

 

Node Rebalancing

Da neue Nodes neben CPU und RAM auch zusätzliche Storage Ressourcen mitbringen, müssen diese in die vorhandene Distributed Storage Fabric (DSF) integriert werden. Nach der Integration des neuen Nodes werden die Daten im Cluster neu verteilt, sodass das  Cluster gleichmäßig ausgelastet ist. Dabei bleibt die Data Locality der bereits laufenden virtuellen Maschinen natürlich erhalten. Dieser Prozess ist völlig transparent und wird automatisch als Teil der Clustererweiterung angestoßen. Da durch diesen Prozess auch wieder Freiräume auf den bestehenden Nodes entstehen, kann so auch die Performance verbessert werden. Auch partizipieren die neuen Nodes direkt, indem sie den Replication Traffic anderer Nodes entgegennehmen.

ntnx_storagepool_1

ntnx_storagepool_2

 

 

 

 

 

ntnx_storagepool_3

Hypervisor

Im Falle von ESXi und Hyper-V, muss der Host noch in den vorhandene Cluster aufgenommen werden. Im Gegensatz dazu, ist dieser Prozess bei AHV komplett automatisiert und erfordert keine weiteren Schritte. In allen Fällen jedoch, ist es möglich, dass direkt nach der Erweiterung virtuelle Maschinen auf die neuen Nodes migriert werden können.

 

Gemischte Cluster

Ein wichtiger Punkt ist, dass ein Nutanix Cluster nicht homogen ausgestattet sein muss. Verschiedene Workloads haben entsprechend unterschiedliche Anforderungen, denen man mit unterschiedlicher Ausstattung entgegnen kann. So können verschiedene Node Typen in einem Cluster gemischt werden, z.B. NX-3060-G5 Nodes mit je 2 SSDs und 4 HDDs mit NX-8050-G5 Nodes, mit 4 SSD und 20 HDDs kombiniert werden. Über Hypervisor Technologien, wie Affinity-Rules, können die Workloads entsprechend den am besten geeigneten Nodes zugeordnet werden.

 

Storage Only Nodes

Jetzt kann es jedoch auch vorkommen, dass die Anforderungen nach Ressourcen ungleich entwickeln, sprich Storage Anforderungen schneller steigen, als die nach CPU und RAM. Auch hier bietet die Plattform eine einfache Lösung, so genannte Storage Only Nodes. Diese Nodes können dem Cluster hinzugefügt werden, haben jedoch die Besonderheit, dass diese:

  1. Mit reduzierten RAM und CPU Kapazitäten ausgestattet sind.
  2. Keine virtuellen Maschinen hosten und auch nicht Teil des Hypervisor Clusters sind.
  3. Immer mit dem AHV Hypervisor betrieben werden, damit hier keine zusätzlichen Kosten für den Hypervisor anfallen.

Somit kann die DSF des Clusters ohne Probleme um mehrere TB Storage Kapazität erweitert werden. Diese sollten immer im Paar hinzugefügt werden, sofern deren Kapazität die der vorhandenen Nodes deutlich übersteigt, sodass wenn ein Storage Only Node ausfällt, genügend freie Kapazitäten im Cluster vorhanden sind, damit der Rebuild in Gänze abgeschlossen werden kann.

ntnx_storagepool_4

Das Nutanix Cluster – Die Grundlagen

Im folgenden Post möchte ich den Grundstein für viele der noch folgenden Themen legen, die wir hier in Zukunft noch behandeln werden und darum möchte ich erklären, wie ein Nutanix Cluster grundsätzlich aufgebaut ist.

Beginnen wir mit der kleinsten Einheit, mit einem so genannten Node. Dieser entspricht einem einzelnen x86 Server, auf dem direkt der Hypervisor installiert ist und entsprechend auch VMs betrieben werden können.

ntnx_wb_1x1_0

Ein Nutanix Cluster besteht jedoch immer aus mindestens drei Nodes.

ntnx_wb_1x1_1

Der wohl wichtigste Grund hierfür ist, dass die Nutanix Plattform ein verteiltes System ist. Daher müssen bei vielen Prozessen eine Mehrheit der Nodes gewissen Änderungen zustimmen, was in einem 2 Node Cluster so nicht möglich wäre.

Die Nodes beinhalten neben CPUs und RAM wie man das üblicherweise kennt, auch Storage in Form von SSDs und HDDs (Hybrid) oder ausschließlich SSDs (All Flash).

ntnx_wb_1x1_2

Dies Storage-Ressourcen sind direkt mit einem SAS HBA angebunden und werden 1:1 weitergereicht, sprich nicht in einem RAID konfiguriert.

ntnx_wb_1x1_3

Auf jedem Node läuft eine so genannte Nutanix „Controller Virtual Machine“, kurz CVM, welche besagten SAS HBA direkt via PCIe Pass-Through durchgereicht bekommt. Der Hypervisor selbst, bekommt diese Ressourcen somit nicht direkt zu sehen.

ntnx_wb_1x1_4

Die CVM ist das Herzstück der Nutanix Enterprise Cloud Plattform und betreibt nicht nur den Software Defined Storage Layer, sondern besser ausgedrückt, das Nutanix Datacenter Betriebssystem.

Alle CVMs kommunizieren über  Ethernet (wahlweise 1 oder 10 GbE) miteinander und bilden so gemeinsam einen Storage Pool, auch „Distributed Storage Fabric“ genannt.

Grundsätzlich ist jede CVM primär für die Verwaltung der jeweils lokalen Ressourcen verantwortlich. Über das Zusammenspiel aller CVMs in der DSF, ergibt sich so jedoch ein verteilter, leistungsfähiger und hochverfügbarer Storage Pool. Dieser sieht für den Hypervisors, oder andere externe Verbraucher, letzendes Endes aus wie ein herkömmlicher zentraler Storage und bietet zusätzlich Features wie Snapshots, Datenreduzierung, Replizierung, etc.

Der Storage Pool spiegelt 1:1 die aggregierte Kapazität aller physikalischen Ressourcen wieder. Wenn z.B. jeder Node über 14 TB Storage verfügt und wir beim Beispiel von drei Nodes bleiben, werden im ersten Schritt 42 TB im Storage Pool zur Verfügung gestellt.

ntnx_wb_1x1_5

Die eigentliche Storage Provisionierung geschieht über so genannte Storage Container, welche (vergleichbar zu einer LUN) aus dem Storage Pool gebildet werden und dem Hypervisor als Datastore präsentiert werden. Auf dieser Ebene werden wesentliche Einstellungen getroffen, beispielsweise wie viele Kopien für die Fehlertoleranz (RF2/RF3) erstellt werden oder auch ob beispielsweise Technologien zur Datenreduzierung wie Deduplizierung oder Komprimierung aktiviert werden sollen. D.h. erst hier definiert sich die tatsächliche nutzbare Kapazität eines Clusters. So hat z.B. ein Pool aus 42TB Rohkapazität in einer RF2 Konfiguration eine theoretische nutzbare Kapazität von 21TB. Betrachtet man jedoch einen Node als Spare Kapazität (N+1 Prinzip) der jederzeit ausfallen darf, so wäre die nutzbare Kapazität 14TB.

ntnx_wb_1x1_6

 

Jede CVM kommuniziert nicht nur über physische Ethernet Switches mit den benachbarten CVMs im Cluster, sondern auch über einen internen virtuellen Switch, ohne externe Uplinks, direkt mit dem Hypervisor. Das bedeutet im Umkehrschluss, alle CVMs verfügen über zwei vNICS. Die eine dient der externen Kommunikation zwischen den CVMs, über selbst zu definierende IP Adressen. Die andere dient der  lokalen Kommunikation über den internen virtuellen Switch, um so ohne Umwege direkt mit dem Hypervisor, der entsprechend auch ein Interface in besagtem vSwitch verfügt, zu Kommunizieren. Über diesen Weg (privates Netzwerk 192.168.5.0) greift der Hypervisor im Normalbetrieb lokal auf die Container und somit auch auf die lokalen Storage Ressourcen der CVM zu. Das Zugriffsprotokoll variiert je nach Hypervisor, im Fall von ESXi ist es NFS, bei Hyper-V entsprechend SMB und bei AHV das iSCSI Protokoll. Nur im Fehlerfall der lokalen CVMs, kann eine andere CVM, dem Hypervisor mitteilen, über die externe IP einer anderen CVM, auf die DSF zuzugreifen. Somit ist der Ausfall einer CVM kein Problem für die Verfügbarkeit des Storages.

Die DSF ist wie gesagt ein verteiltes System, wonach die Daten als auch die Metadaten der VMs über das gesamte Cluster verteilt sind. Ein Blick auf den I/O-Pfad zeigt folgendes:

Die geschriebenen Daten einer VM, fließen über den Datastore direkt in die lokale CVM, welche dann in der Verantwortung ist, die Daten zu verarbeiten. Die geschriebenen Daten werden einmal lokal und dann abhängig vom konfigurierten Replication Factor „RF“ (2 oder 3) auf weitere CVMs des Clusters synchron repliziert.

ntnx_wb_1x1_7

Damit erreicht man zwei wichtige Punkte:

  1. Data Locality: Die Primäre Kopie einer VM liegt sozusagen immer lokal in der CVM auf dem Host, auf dem die VM aktiv läuft. Somit können Read I/Os direkt aus den lokalen Storage Ressourcen erfolgen. Dies ermöglicht eine entsprechend hohe Performance und reduziert dabei gleichzeitig den Netzwerk Traffic auf ein Minimum.
  2. Rebuild Zeiten: Die Kopien für die Fehlertoleranz, werden komplett im Cluster verteilt und nicht immer an die gleiche Peer CVM(s) gesendet. Somit ist es möglich, dass ein Rebuild nicht nur von bzw. auf eine CVM stattfindet, sondern die Daten von vielen CVMs und deren lokalen Disks gelesen und auf beliebige CVMs und Disks wiederhergestellt werden können. Somit können Rebuild Zeiten deutlich optimiert werden.

Abschließend möchte ich noch die Frage beantworten, was passiert, wenn eine VM zwischen den Nodes migriert wird oder ein Node ausfällt und eine VM auf einem anderen Node wieder gestartet werden muss?

Grundsätzlich ändert sich aus Sicht der VM nichts. Diese wird, egal durch welches Event, auf einem neuen Node gestartet und greift dort direkt über die lokale CVM auf den Storage Container zu. Verfügt die lokale CVM bereits über einen Teil der VM Daten, so können diese direkt lokal gelesen werden. Wahrscheinlich müssen aber Teile der Daten über das Netzwerk gelesen werden, dies ist jedoch für die VM komplett transparent. Über Zeit kann so die Data Locality der VM wiederhergestellt werden, indem die Daten auf den neuen Node der jetzt die VM hostet, migriert werden. Einzige Voraussetzung, die VM muss die Daten die noch remote liegen auch tatsächlich lesen, sodass diese für eine Migration in Betracht gezogen werden.